mirror of
https://github.com/nuxt/nuxt.git
synced 2024-11-26 23:52:06 +00:00
fix: fix issues with route normalization (#8462)
Co-authored-by: Clark Du <clark.duxin@gmail.com>
This commit is contained in:
parent
e97051adfa
commit
966796fbdf
@ -10,7 +10,7 @@
|
||||
"index.d.ts"
|
||||
],
|
||||
"dependencies": {
|
||||
"@nuxt/ufo": "^0.0.3",
|
||||
"@nuxt/ufo": "^0.1.0",
|
||||
"@nuxt/utils": "2.14.10",
|
||||
"consola": "^2.15.0",
|
||||
"create-require": "^1.1.1",
|
||||
|
@ -7,7 +7,7 @@ import uniq from 'lodash/uniq'
|
||||
import consola from 'consola'
|
||||
import destr from 'destr'
|
||||
import { TARGETS, MODES, guardDir, isNonEmptyString, isPureObject, isUrl, getMainModule, urlJoin, getPKG } from '@nuxt/utils'
|
||||
import { normalizeURL } from '@nuxt/ufo'
|
||||
import { normalizeURL, withTrailingSlash } from '@nuxt/ufo'
|
||||
import { defaultNuxtConfigFile, getDefaultNuxtConfig } from './config'
|
||||
|
||||
export function getNuxtConfig (_options) {
|
||||
@ -124,10 +124,7 @@ export function getNuxtConfig (_options) {
|
||||
defaultsDeep(options, modePreset || options.modes[MODES.universal])
|
||||
|
||||
// Sanitize router.base
|
||||
if (!/\/$/.test(options.router.base)) {
|
||||
options.router.base += '/'
|
||||
}
|
||||
options.router.base = normalizeURL(options.router.base)
|
||||
options.router.base = withTrailingSlash(normalizeURL(options.router.base))
|
||||
|
||||
// Legacy support for export
|
||||
if (options.export) {
|
||||
|
@ -8,7 +8,7 @@
|
||||
"dist"
|
||||
],
|
||||
"dependencies": {
|
||||
"@nuxt/ufo": "^0.0.3",
|
||||
"@nuxt/ufo": "^0.1.0",
|
||||
"consola": "^2.15.0",
|
||||
"fs-extra": "^8.1.0",
|
||||
"hash-sum": "^2.0.0",
|
||||
|
@ -201,7 +201,7 @@ export const createRoutes = function createRoutes ({
|
||||
} else if (key === 'index' && i + 1 === keys.length) {
|
||||
route.path += i > 0 ? '' : '/'
|
||||
} else {
|
||||
route.path += normalizeURL(getRoutePathExtension(key))
|
||||
route.path += '/' + normalizeURL(getRoutePathExtension(key))
|
||||
if (key.startsWith('_') && key.length > 1) {
|
||||
route.path += '?'
|
||||
}
|
||||
|
@ -13,7 +13,7 @@
|
||||
"index.d.ts"
|
||||
],
|
||||
"dependencies": {
|
||||
"@nuxt/ufo": "^0.0.3",
|
||||
"@nuxt/ufo": "^0.1.0",
|
||||
"node-fetch": "^2.6.1",
|
||||
"unfetch": "^4.2.0",
|
||||
"vue": "^2.6.12",
|
||||
|
@ -43,6 +43,7 @@
|
||||
"thread-loader": "^2.1.3",
|
||||
"time-fix-plugin": "^2.0.7",
|
||||
"url-loader": "^2.3.0",
|
||||
"url-polyfill": "^1.1.12",
|
||||
"vue-loader": "^15.9.5",
|
||||
"webpack": "^4.44.2",
|
||||
"webpack-bundle-analyzer": "^3.9.0",
|
||||
|
@ -63,7 +63,7 @@ export default class WebpackClientConfig extends WebpackBaseConfig {
|
||||
cacheGroups.commons === undefined
|
||||
) {
|
||||
cacheGroups.commons = {
|
||||
test: /node_modules[\\/](vue|vue-loader|vue-router|vuex|vue-meta|core-js|@babel\/runtime|axios|webpack|setimmediate|timers-browserify|process|regenerator-runtime|cookie|js-cookie|is-buffer|dotprop|nuxt\.js)[\\/]/,
|
||||
test: /node_modules[\\/](vue|vue-loader|vue-router|vuex|vue-meta|core-js|@babel\/runtime|axios|webpack|setimmediate|timers-browserify|process|regenerator-runtime|cookie|js-cookie|is-buffer|dotprop|url-polyfill|nuxt\.js)[\\/]/,
|
||||
chunks: 'all',
|
||||
name: true,
|
||||
priority: 10
|
||||
@ -205,6 +205,11 @@ export default class WebpackClientConfig extends WebpackBaseConfig {
|
||||
)
|
||||
}
|
||||
|
||||
// Add URL polyfill for IE11 support with ufo
|
||||
if (!this.isModern && !this.isServer) {
|
||||
config.entry.app.unshift(require.resolve('url-polyfill/url-polyfill.min.js'))
|
||||
}
|
||||
|
||||
// Add friendly error plugin
|
||||
if (this.dev && !quiet && friendlyErrors) {
|
||||
config.plugins.push(
|
||||
|
@ -20,20 +20,20 @@ describe('nuxt basic resources size limit', () => {
|
||||
it('should stay within the size limit range in legacy mode', async () => {
|
||||
const legacyResourcesSize = await getResourcesSize(distDir, 'client', { gzip: true, brotli: true })
|
||||
|
||||
const LEGACY_JS_RESOURCES_KB_SIZE = 201
|
||||
const LEGACY_JS_RESOURCES_KB_SIZE = 217
|
||||
expect(legacyResourcesSize.uncompressed).toBeWithinSize(LEGACY_JS_RESOURCES_KB_SIZE)
|
||||
|
||||
const LEGACY_JS_RESOURCES_GZIP_KB_SIZE = 70
|
||||
expect(legacyResourcesSize.gzip).toBeWithinSize(LEGACY_JS_RESOURCES_GZIP_KB_SIZE)
|
||||
|
||||
const LEGACY_JS_RESOURCES_BROTLI_KB_SIZE = 60
|
||||
const LEGACY_JS_RESOURCES_BROTLI_KB_SIZE = 64
|
||||
expect(legacyResourcesSize.brotli).toBeWithinSize(LEGACY_JS_RESOURCES_BROTLI_KB_SIZE)
|
||||
})
|
||||
|
||||
it('should stay within the size limit range in modern mode', async () => {
|
||||
const modernResourcesSize = await getResourcesSize(distDir, 'modern', { gzip: true, brotli: true })
|
||||
|
||||
const MODERN_JS_RESOURCES_KB_SIZE = 172
|
||||
const MODERN_JS_RESOURCES_KB_SIZE = 180
|
||||
expect(modernResourcesSize.uncompressed).toBeWithinSize(MODERN_JS_RESOURCES_KB_SIZE)
|
||||
|
||||
const MODERN_JS_RESOURCES_GZIP_KB_SIZE = 60
|
||||
|
13
yarn.lock
13
yarn.lock
@ -1955,10 +1955,10 @@
|
||||
rc9 "^1.2.0"
|
||||
std-env "^2.2.1"
|
||||
|
||||
"@nuxt/ufo@^0.0.3":
|
||||
version "0.0.3"
|
||||
resolved "https://registry.npmjs.org/@nuxt/ufo/-/ufo-0.0.3.tgz#7673a54b81c020e7aea3a9e01e09a58c494a1eca"
|
||||
integrity sha512-LQkuVafVNB9+ggRF7443AX1V1rEWRs32Frk7F2qnRLf8j/SzRzxEZ99jiZqxVho72zU7NcWQ6Jy62m4fkZC6Wg==
|
||||
"@nuxt/ufo@^0.1.0":
|
||||
version "0.1.0"
|
||||
resolved "https://registry.npmjs.org/@nuxt/ufo/-/ufo-0.1.0.tgz#4943741c4300b73e4f1de09cad684ed4e9235502"
|
||||
integrity sha512-7az26cl4TaNejTFlgwcGRIGPFH6tD8dLh1t+Q+BWIM8UQqqV9o2DH9yKcVlboP+LdocLBUC+OTOiZc0RSZh0bA==
|
||||
|
||||
"@nuxtjs/eslint-config@^5.0.0":
|
||||
version "5.0.0"
|
||||
@ -13205,6 +13205,11 @@ url-loader@^2.3.0:
|
||||
mime "^2.4.4"
|
||||
schema-utils "^2.5.0"
|
||||
|
||||
url-polyfill@^1.1.12:
|
||||
version "1.1.12"
|
||||
resolved "https://registry.npmjs.org/url-polyfill/-/url-polyfill-1.1.12.tgz#6cdaa17f6b022841b3aec0bf8dbd87ac0cd33331"
|
||||
integrity sha512-mYFmBHCapZjtcNHW0MDq9967t+z4Dmg5CJ0KqysK3+ZbyoNOWQHksGCTWwDhxGXllkWlOc10Xfko6v4a3ucM6A==
|
||||
|
||||
url@^0.11.0:
|
||||
version "0.11.0"
|
||||
resolved "https://registry.npmjs.org/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1"
|
||||
|
Loading…
Reference in New Issue
Block a user