Skip to content

Commit

Permalink
fix: fix issues with route normalization (#8462)
Browse files Browse the repository at this point in the history
Co-authored-by: Clark Du <clark.duxin@gmail.com>
  • Loading branch information
pi0 and clarkdo committed Dec 9, 2020
1 parent e97051a commit 966796f
Show file tree
Hide file tree
Showing 9 changed files with 25 additions and 17 deletions.
2 changes: 1 addition & 1 deletion packages/config/package.json
Expand Up @@ -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",
Expand Down
7 changes: 2 additions & 5 deletions packages/config/src/options.js
Expand Up @@ -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) {
Expand Down Expand Up @@ -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) {
Expand Down
2 changes: 1 addition & 1 deletion packages/utils/package.json
Expand Up @@ -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",
Expand Down
2 changes: 1 addition & 1 deletion packages/utils/src/route.js
Expand Up @@ -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 += '?'
}
Expand Down
2 changes: 1 addition & 1 deletion packages/vue-app/package.json
Expand Up @@ -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",
Expand Down
1 change: 1 addition & 0 deletions packages/webpack/package.json
Expand Up @@ -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",
Expand Down
7 changes: 6 additions & 1 deletion packages/webpack/src/config/client.js
Expand Up @@ -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
Expand Down Expand Up @@ -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(
Expand Down
6 changes: 3 additions & 3 deletions test/dev/async-config.size-limit.test.js
Expand Up @@ -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
Expand Down
13 changes: 9 additions & 4 deletions yarn.lock
Expand Up @@ -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"
Expand Down Expand Up @@ -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"
Expand Down

0 comments on commit 966796f

Please sign in to comment.