diff --git a/README.md b/README.md
index 59ce353a0348..e077fbcb2c98 100644
--- a/README.md
+++ b/README.md
@@ -114,7 +114,7 @@ Support us with a monthly donation and help us continue our activities. [[Become
-
+
diff --git a/distributions/nuxt-start/package.json b/distributions/nuxt-start/package.json
index 3c8e8569c3d6..b0bbb21d995d 100644
--- a/distributions/nuxt-start/package.json
+++ b/distributions/nuxt-start/package.json
@@ -67,7 +67,7 @@
"vuex": "^3.6.0"
},
"engines": {
- "node": ">=8.9.0",
- "npm": ">=5.0.0"
+ "node": ">=10.13.0",
+ "npm": ">=6.14.9"
}
}
diff --git a/distributions/nuxt/README.md b/distributions/nuxt/README.md
index 59ce353a0348..e077fbcb2c98 100644
--- a/distributions/nuxt/README.md
+++ b/distributions/nuxt/README.md
@@ -114,7 +114,7 @@ Support us with a monthly donation and help us continue our activities. [[Become
-
+
diff --git a/distributions/nuxt/package.json b/distributions/nuxt/package.json
index 8109912295f3..7863f78ffb9c 100644
--- a/distributions/nuxt/package.json
+++ b/distributions/nuxt/package.json
@@ -69,8 +69,8 @@
"@nuxt/webpack": "2.14.9"
},
"engines": {
- "node": ">=8.9.0",
- "npm": ">=5.0.0"
+ "node": ">=10.13.0",
+ "npm": ">=6.14.9"
},
"collective": {
"url": "https://opencollective.com/nuxtjs",
diff --git a/examples/style-resources/package.json b/examples/style-resources/package.json
index d33729f74861..9024d76e2ce7 100644
--- a/examples/style-resources/package.json
+++ b/examples/style-resources/package.json
@@ -12,7 +12,7 @@
"post-update": "yarn upgrade --latest"
},
"devDependencies": {
- "node-sass": "^4.7.2",
- "sass-loader": "^6.0.6"
+ "sass": "^1.29.0",
+ "sass-loader": "^10.1.0"
}
}
diff --git a/examples/with-element-ui/package.json b/examples/with-element-ui/package.json
index 6dd5c6c8cce5..6107026bcbe3 100644
--- a/examples/with-element-ui/package.json
+++ b/examples/with-element-ui/package.json
@@ -13,7 +13,7 @@
"post-update": "yarn upgrade --latest"
},
"devDependencies": {
- "node-sass": "^4.6.0",
- "sass-loader": "^6.0.6"
+ "sass": "^1.29.0",
+ "sass-loader": "^10.1.0"
}
}
diff --git a/package.json b/package.json
index 0ad86240db4e..7049b75d9d26 100644
--- a/package.json
+++ b/package.json
@@ -52,10 +52,10 @@
"eslint": "^7.14.0",
"eslint-multiplexer": "^2.0.0",
"esm": "^3.2.25",
- "execa": "^3.4.0",
+ "execa": "^5.0.0",
"express": "^4.17.1",
"finalhandler": "^1.1.2",
- "fs-extra": "^8.1.0",
+ "fs-extra": "^9.0.1",
"get-port": "^5.1.1",
"glob": "^7.1.6",
"got": "^11.8.0",
@@ -64,17 +64,18 @@
"jest": "^26.6.3",
"jiti": "^0.1.17",
"jsdom": "^16.4.0",
+ "jsonfile": "^6.1.0",
"klaw-sync": "^6.0.0",
"lerna": "^3.22.1",
"lodash": "^4.17.20",
"node-fetch": "^2.6.1",
- "node-sass": "^4.14.1",
"puppeteer-core": "^5.5.0",
"request": "^2.88.2",
"rimraf": "^3.0.2",
- "rollup": "2.34.0",
+ "rollup": "2.34.1",
"rollup-plugin-license": "^2.2.0",
- "sass-loader": "^8.0.2",
+ "sass": "^1.29.0",
+ "sass-loader": "^10.1.0",
"sort-package-json": "^1.48.0",
"typescript": "~4.1",
"vue-jest": "^4.0.0-rc.1"
diff --git a/packages/builder/package.json b/packages/builder/package.json
index 0ae84e465b0e..2b53f9ee2f71 100644
--- a/packages/builder/package.json
+++ b/packages/builder/package.json
@@ -12,16 +12,16 @@
"@nuxt/utils": "2.14.9",
"@nuxt/vue-app": "2.14.9",
"@nuxt/webpack": "2.14.9",
- "chalk": "^3.0.0",
+ "chalk": "^4.1.0",
"chokidar": "^3.4.3",
"consola": "^2.15.0",
- "fs-extra": "^8.1.0",
+ "fs-extra": "^9.0.1",
"glob": "^7.1.6",
"hash-sum": "^2.0.0",
"ignore": "^5.1.8",
"lodash": "^4.17.20",
- "pify": "^4.0.1",
- "semver": "^7.3.2",
+ "pify": "^5.0.0",
+ "semver": "^7.3.4",
"serialize-javascript": "^5.0.1",
"upath": "^2.0.1"
},
diff --git a/packages/cli/package.json b/packages/cli/package.json
index 2f5a52dc53c0..d08c62819a98 100644
--- a/packages/cli/package.json
+++ b/packages/cli/package.json
@@ -15,16 +15,16 @@
"@nuxt/config": "2.14.9",
"@nuxt/utils": "2.14.9",
"boxen": "^4.2.0",
- "chalk": "^3.0.0",
+ "chalk": "^4.1.0",
"compression": "^1.7.4",
"connect": "^3.7.0",
"consola": "^2.15.0",
"crc": "^3.8.0",
"destr": "^1.0.1",
"esm": "^3.2.25",
- "execa": "^3.4.0",
+ "execa": "^5.0.0",
"exit": "^0.1.2",
- "fs-extra": "^8.1.0",
+ "fs-extra": "^9.0.1",
"globby": "^11.0.1",
"hable": "^3.0.0",
"minimist": "^1.2.5",
@@ -33,7 +33,7 @@
"serve-static": "^1.14.1",
"std-env": "^2.2.1",
"upath": "^2.0.1",
- "wrap-ansi": "^6.2.0"
+ "wrap-ansi": "^7.0.0"
},
"publishConfig": {
"access": "public"
diff --git a/packages/cli/test/unit/__snapshots__/webpack.test.js.snap b/packages/cli/test/unit/__snapshots__/webpack.test.js.snap
index a138f9cc8e4e..8c912c53c4dd 100644
--- a/packages/cli/test/unit/__snapshots__/webpack.test.js.snap
+++ b/packages/cli/test/unit/__snapshots__/webpack.test.js.snap
@@ -98,11 +98,11 @@ exports[`webpack nuxt webpack module.rules 1`] = `
Object {
\\"loader\\": \\"css-loader\\",
\\"options\\": Object {
+ \\"esModule\\": false,
\\"importLoaders\\": 2,
\\"modules\\": Object {
\\"localIdentName\\": \\"[local]_[hash:base64:5]\\",
},
- \\"onlyLocals\\": false,
\\"sourceMap\\": false,
},
},
@@ -132,8 +132,8 @@ exports[`webpack nuxt webpack module.rules 1`] = `
Object {
\\"loader\\": \\"css-loader\\",
\\"options\\": Object {
+ \\"esModule\\": false,
\\"importLoaders\\": 2,
- \\"onlyLocals\\": false,
\\"sourceMap\\": false,
},
},
@@ -169,11 +169,11 @@ exports[`webpack nuxt webpack module.rules 1`] = `
Object {
\\"loader\\": \\"css-loader\\",
\\"options\\": Object {
+ \\"esModule\\": false,
\\"importLoaders\\": 2,
\\"modules\\": Object {
\\"localIdentName\\": \\"[local]_[hash:base64:5]\\",
},
- \\"onlyLocals\\": false,
\\"sourceMap\\": false,
},
},
@@ -203,8 +203,8 @@ exports[`webpack nuxt webpack module.rules 1`] = `
Object {
\\"loader\\": \\"css-loader\\",
\\"options\\": Object {
+ \\"esModule\\": false,
\\"importLoaders\\": 2,
- \\"onlyLocals\\": false,
\\"sourceMap\\": false,
},
},
@@ -240,11 +240,11 @@ exports[`webpack nuxt webpack module.rules 1`] = `
Object {
\\"loader\\": \\"css-loader\\",
\\"options\\": Object {
+ \\"esModule\\": false,
\\"importLoaders\\": 2,
\\"modules\\": Object {
\\"localIdentName\\": \\"[local]_[hash:base64:5]\\",
},
- \\"onlyLocals\\": false,
\\"sourceMap\\": false,
},
},
@@ -280,8 +280,8 @@ exports[`webpack nuxt webpack module.rules 1`] = `
Object {
\\"loader\\": \\"css-loader\\",
\\"options\\": Object {
+ \\"esModule\\": false,
\\"importLoaders\\": 2,
- \\"onlyLocals\\": false,
\\"sourceMap\\": false,
},
},
@@ -323,11 +323,11 @@ exports[`webpack nuxt webpack module.rules 1`] = `
Object {
\\"loader\\": \\"css-loader\\",
\\"options\\": Object {
+ \\"esModule\\": false,
\\"importLoaders\\": 2,
\\"modules\\": Object {
\\"localIdentName\\": \\"[local]_[hash:base64:5]\\",
},
- \\"onlyLocals\\": false,
\\"sourceMap\\": false,
},
},
@@ -366,8 +366,8 @@ exports[`webpack nuxt webpack module.rules 1`] = `
Object {
\\"loader\\": \\"css-loader\\",
\\"options\\": Object {
+ \\"esModule\\": false,
\\"importLoaders\\": 2,
- \\"onlyLocals\\": false,
\\"sourceMap\\": false,
},
},
@@ -412,11 +412,11 @@ exports[`webpack nuxt webpack module.rules 1`] = `
Object {
\\"loader\\": \\"css-loader\\",
\\"options\\": Object {
+ \\"esModule\\": false,
\\"importLoaders\\": 2,
\\"modules\\": Object {
\\"localIdentName\\": \\"[local]_[hash:base64:5]\\",
},
- \\"onlyLocals\\": false,
\\"sourceMap\\": false,
},
},
@@ -452,8 +452,8 @@ exports[`webpack nuxt webpack module.rules 1`] = `
Object {
\\"loader\\": \\"css-loader\\",
\\"options\\": Object {
+ \\"esModule\\": false,
\\"importLoaders\\": 2,
- \\"onlyLocals\\": false,
\\"sourceMap\\": false,
},
},
@@ -495,11 +495,11 @@ exports[`webpack nuxt webpack module.rules 1`] = `
Object {
\\"loader\\": \\"css-loader\\",
\\"options\\": Object {
+ \\"esModule\\": false,
\\"importLoaders\\": 2,
\\"modules\\": Object {
\\"localIdentName\\": \\"[local]_[hash:base64:5]\\",
},
- \\"onlyLocals\\": false,
\\"sourceMap\\": false,
},
},
@@ -535,8 +535,8 @@ exports[`webpack nuxt webpack module.rules 1`] = `
Object {
\\"loader\\": \\"css-loader\\",
\\"options\\": Object {
+ \\"esModule\\": false,
\\"importLoaders\\": 2,
- \\"onlyLocals\\": false,
\\"sourceMap\\": false,
},
},
@@ -570,6 +570,7 @@ exports[`webpack nuxt webpack module.rules 1`] = `
Object {
\\"loader\\": \\"url-loader\\",
\\"options\\": Object {
+ \\"esModule\\": false,
\\"limit\\": 1000,
\\"name\\": \\"img/[name].[contenthash:7].[ext]\\",
},
@@ -582,6 +583,7 @@ exports[`webpack nuxt webpack module.rules 1`] = `
Object {
\\"loader\\": \\"url-loader\\",
\\"options\\": Object {
+ \\"esModule\\": false,
\\"limit\\": 1000,
\\"name\\": \\"fonts/[name].[contenthash:7].[ext]\\",
},
@@ -594,6 +596,7 @@ exports[`webpack nuxt webpack module.rules 1`] = `
Object {
\\"loader\\": \\"file-loader\\",
\\"options\\": Object {
+ \\"esModule\\": false,
\\"name\\": \\"videos/[name].[contenthash:7].[ext]\\",
},
},
diff --git a/packages/config/package.json b/packages/config/package.json
index 82c511712960..958f2fc22a00 100644
--- a/packages/config/package.json
+++ b/packages/config/package.json
@@ -13,7 +13,7 @@
"@nuxt/utils": "2.14.9",
"consola": "^2.15.0",
"create-require": "^1.1.1",
- "defu": "^2.0.4",
+ "defu": "^3.2.2",
"destr": "^1.0.1",
"dotenv": "^8.2.0",
"esm": "^3.2.25",
diff --git a/packages/config/src/config/build.js b/packages/config/src/config/build.js
index 9c4db2cffa0f..189f60dc2ed9 100644
--- a/packages/config/src/config/build.js
+++ b/packages/config/src/config/build.js
@@ -22,9 +22,9 @@ export default () => ({
video: ({ isDev }) => isDev ? '[path][name].[ext]' : 'videos/[name].[contenthash:7].[ext]'
},
loaders: {
- file: {},
- fontUrl: { limit: 1000 },
- imgUrl: { limit: 1000 },
+ file: { esModule: false },
+ fontUrl: { esModule: false, limit: 1000 },
+ imgUrl: { esModule: false, limit: 1000 },
pugPlain: {},
vue: {
transformAssetUrls: {
@@ -34,8 +34,9 @@ export default () => ({
embed: 'src'
}
},
- css: {},
+ css: { esModule: false },
cssModules: {
+ esModule: false,
modules: {
localIdentName: '[local]_[hash:base64:5]'
}
diff --git a/packages/config/test/__snapshots__/options.test.js.snap b/packages/config/test/__snapshots__/options.test.js.snap
index 08a26d2e711c..03043329a357 100644
--- a/packages/config/test/__snapshots__/options.test.js.snap
+++ b/packages/config/test/__snapshots__/options.test.js.snap
@@ -63,19 +63,25 @@ Object {
"indicator": false,
"loaders": Object {
"css": Object {
+ "esModule": false,
"sourceMap": false,
},
"cssModules": Object {
+ "esModule": false,
"modules": Object {
"localIdentName": "[local]_[hash:base64:5]",
},
"sourceMap": false,
},
- "file": Object {},
+ "file": Object {
+ "esModule": false,
+ },
"fontUrl": Object {
+ "esModule": false,
"limit": 1000,
},
"imgUrl": Object {
+ "esModule": false,
"limit": 1000,
},
"less": Object {
diff --git a/packages/config/test/config/__snapshots__/index.test.js.snap b/packages/config/test/config/__snapshots__/index.test.js.snap
index b60266e2c569..1451f3772c9d 100644
--- a/packages/config/test/config/__snapshots__/index.test.js.snap
+++ b/packages/config/test/config/__snapshots__/index.test.js.snap
@@ -51,17 +51,24 @@ Object {
"position": "bottom-right",
},
"loaders": Object {
- "css": Object {},
+ "css": Object {
+ "esModule": false,
+ },
"cssModules": Object {
+ "esModule": false,
"modules": Object {
"localIdentName": "[local]_[hash:base64:5]",
},
},
- "file": Object {},
+ "file": Object {
+ "esModule": false,
+ },
"fontUrl": Object {
+ "esModule": false,
"limit": 1000,
},
"imgUrl": Object {
+ "esModule": false,
"limit": 1000,
},
"less": Object {},
@@ -428,17 +435,24 @@ Object {
"position": "bottom-right",
},
"loaders": Object {
- "css": Object {},
+ "css": Object {
+ "esModule": false,
+ },
"cssModules": Object {
+ "esModule": false,
"modules": Object {
"localIdentName": "[local]_[hash:base64:5]",
},
},
- "file": Object {},
+ "file": Object {
+ "esModule": false,
+ },
"fontUrl": Object {
+ "esModule": false,
"limit": 1000,
},
"imgUrl": Object {
+ "esModule": false,
"limit": 1000,
},
"less": Object {},
diff --git a/packages/core/package.json b/packages/core/package.json
index 0481b947e2bf..c8ebe5448caf 100644
--- a/packages/core/package.json
+++ b/packages/core/package.json
@@ -16,7 +16,7 @@
"consola": "^2.15.0",
"debug": "^4.2.0",
"esm": "^3.2.25",
- "fs-extra": "^8.1.0",
+ "fs-extra": "^9.0.1",
"hable": "^3.0.0",
"hash-sum": "^2.0.0",
"std-env": "^2.2.1"
diff --git a/packages/generator/package.json b/packages/generator/package.json
index da4e91cad908..ae043bf6a52b 100644
--- a/packages/generator/package.json
+++ b/packages/generator/package.json
@@ -9,10 +9,10 @@
],
"dependencies": {
"@nuxt/utils": "2.14.9",
- "chalk": "^3.0.0",
+ "chalk": "^4.1.0",
"consola": "^2.15.0",
"devalue": "^2.0.1",
- "fs-extra": "^8.1.0",
+ "fs-extra": "^9.0.1",
"html-minifier": "^4.0.0",
"node-html-parser": "^2.0.0"
},
diff --git a/packages/server/package.json b/packages/server/package.json
index 6fad4c950acf..aeaf47b0a8a6 100644
--- a/packages/server/package.json
+++ b/packages/server/package.json
@@ -12,18 +12,18 @@
"@nuxt/utils": "2.14.9",
"@nuxt/vue-renderer": "2.14.9",
"@nuxtjs/youch": "^4.2.3",
- "chalk": "^3.0.0",
+ "chalk": "^4.1.0",
"compression": "^1.7.4",
"connect": "^3.7.0",
"consola": "^2.15.0",
"etag": "^1.8.1",
"fresh": "^0.5.2",
- "fs-extra": "^8.1.0",
+ "fs-extra": "^9.0.1",
"ip": "^1.1.5",
"launch-editor-middleware": "^2.2.1",
"on-headers": "^1.0.2",
- "pify": "^4.0.1",
- "serve-placeholder": "^1.2.2",
+ "pify": "^5.0.0",
+ "serve-placeholder": "^1.2.3",
"serve-static": "^1.14.1",
"server-destroy": "^1.0.1"
},
diff --git a/packages/types/config/build.d.ts b/packages/types/config/build.d.ts
index 617b5f594dc0..497d189e510f 100644
--- a/packages/types/config/build.d.ts
+++ b/packages/types/config/build.d.ts
@@ -8,7 +8,7 @@ import { Options as AutoprefixerOptions } from 'autoprefixer'
import { Options as FileLoaderOptions } from 'file-loader'
import { Options as HtmlMinifierOptions } from 'html-minifier'
import * as Less from 'less'
-import { Options as SassOptions } from 'node-sass'
+import { Options as SassOptions } from 'sass'
import { Options as OptimizeCssAssetsWebpackPluginOptions } from 'optimize-css-assets-webpack-plugin'
import { Plugin as PostcssPlugin } from 'postcss'
import { Options as PugOptions } from 'pug'
@@ -27,11 +27,13 @@ import { MiddlewareOptions as WebpackHotMiddlewareOptions, ClientOptions as Webp
type CssLoaderUrlFunction = (url: string, resourcePath: string) => boolean
type CssLoaderImportFunction = (parsedImport: string, resourcePath: string) => boolean
-type CssLoaderMode = 'global' | 'local'
+type CssLoaderMode = 'global' | 'local' | 'pure'
interface CssLoaderModulesOptions {
context?: string
+ exportLocalsConvention?: 'asIs' | 'camelCase' | 'camelCaseOnly' | 'dashes' | 'dashesOnly'
+ exportOnlyLocals?: boolean
getLocalIdent?: (context: string, localIdentName: string, localName: string, options: CssLoaderModulesOptions) => string
- hashPrefix?: string
+ localIdentHashPrefix?: string
localIdentName?: string
localIdentRegExp?: string | RegExp
mode?: CssLoaderMode
@@ -40,9 +42,7 @@ interface CssLoaderModulesOptions {
interface CssLoaderOptions {
import?: boolean | CssLoaderImportFunction
importLoaders?: number
- localsConvention?: 'asIs' | 'camelCase' | 'camelCaseOnly' | 'dashes' | 'dashesOnly'
modules?: boolean | CssLoaderMode | CssLoaderModulesOptions
- onlyLocals?: boolean
sourceMap?: boolean
url?: boolean | CssLoaderUrlFunction
}
diff --git a/packages/types/config/render.d.ts b/packages/types/config/render.d.ts
index b16d00618e2a..ac60d62bc409 100644
--- a/packages/types/config/render.d.ts
+++ b/packages/types/config/render.d.ts
@@ -68,6 +68,7 @@ export interface NuxtOptionsRender {
) => string[]
}
injectScripts?: boolean
+ asyncScripts?: boolean
resourceHints?: boolean
ssr?: boolean
ssrLog?: boolean | 'collapsed'
diff --git a/packages/types/package.json b/packages/types/package.json
index 32b5efbf7918..f783840de8e2 100644
--- a/packages/types/package.json
+++ b/packages/types/package.json
@@ -18,15 +18,16 @@
"@types/html-minifier": "^4.0.0",
"@types/less": "^3.0.1",
"@types/node": "^12.19.8",
- "@types/node-sass": "^4.11.1",
"@types/optimize-css-assets-webpack-plugin": "^5.0.1",
"@types/pug": "^2.0.4",
+ "@types/sass": "^1.16.0",
"@types/serve-static": "^1.13.8",
- "@types/terser-webpack-plugin": "^2.2.0",
+ "@types/terser-webpack-plugin": "^4.2.0",
"@types/webpack": "^4.41.25",
"@types/webpack-bundle-analyzer": "^3.9.0",
"@types/webpack-dev-middleware": "^3.7.2",
- "@types/webpack-hot-middleware": "^2.25.3"
+ "@types/webpack-hot-middleware": "^2.25.3",
+ "sass-loader": "^10.1.0"
},
"publishConfig": {
"access": "public"
diff --git a/packages/utils/package.json b/packages/utils/package.json
index 583768738ceb..1232884cf29d 100644
--- a/packages/utils/package.json
+++ b/packages/utils/package.json
@@ -9,10 +9,10 @@
],
"dependencies": {
"consola": "^2.15.0",
- "fs-extra": "^8.1.0",
+ "fs-extra": "^9.0.1",
"hash-sum": "^2.0.0",
"proper-lockfile": "^4.1.1",
- "semver": "^7.3.2",
+ "semver": "^7.3.4",
"serialize-javascript": "^5.0.1",
"signal-exit": "^3.0.3",
"ua-parser-js": "^0.7.22"
diff --git a/packages/vue-renderer/package.json b/packages/vue-renderer/package.json
index b530e7ba3121..795697b09c92 100644
--- a/packages/vue-renderer/package.json
+++ b/packages/vue-renderer/package.json
@@ -11,7 +11,7 @@
"@nuxt/devalue": "^1.2.4",
"@nuxt/utils": "2.14.9",
"consola": "^2.15.0",
- "fs-extra": "^8.1.0",
+ "fs-extra": "^9.0.1",
"lru-cache": "^5.1.1",
"vue": "^2.6.12",
"vue-meta": "^2.4.0",
diff --git a/packages/vue-renderer/src/renderers/modern.js b/packages/vue-renderer/src/renderers/modern.js
index a7551f981cb8..71c06dd71575 100644
--- a/packages/vue-renderer/src/renderers/modern.js
+++ b/packages/vue-renderer/src/renderers/modern.js
@@ -51,7 +51,7 @@ export default class ModernRenderer extends SSRRenderer {
return scripts
}
- const scriptPattern = /`
+ if (this.options.render.asyncScripts) {
+ APP += ``
+ } else {
+ APP += ``
+ }
preloadScripts.push(stateUrl)
} else {
APP += ``
diff --git a/packages/webpack/package.json b/packages/webpack/package.json
index 13b1ae6a3e60..1008b2f8c615 100644
--- a/packages/webpack/package.json
+++ b/packages/webpack/package.json
@@ -15,44 +15,44 @@
"babel-loader": "^8.2.2",
"cache-loader": "^4.1.0",
"caniuse-lite": "^1.0.30001164",
- "chalk": "^3.0.0",
+ "chalk": "^4.1.0",
"consola": "^2.15.0",
"create-require": "^1.1.1",
- "css-loader": "^3.6.0",
+ "css-loader": "^4.3.0",
"cssnano": "^4.1.10",
"eventsource-polyfill": "^0.9.6",
"extract-css-chunks-webpack-plugin": "^4.8.0",
- "file-loader": "^4.3.0",
+ "file-loader": "^6.2.0",
"glob": "^7.1.6",
"hard-source-webpack-plugin": "^0.13.1",
"hash-sum": "^2.0.0",
"html-webpack-plugin": "^4.5.0",
- "memory-fs": "^0.4.1",
+ "memory-fs": "^0.5.0",
"optimize-css-assets-webpack-plugin": "^5.0.4",
- "pify": "^4.0.1",
+ "pify": "^5.0.0",
"postcss": "^7.0.32",
"postcss-import": "^12.0.1",
"postcss-import-resolver": "^2.0.0",
"postcss-loader": "^3.0.0",
"postcss-preset-env": "^6.7.0",
"postcss-url": "^8.0.0",
- "semver": "^7.3.2",
+ "semver": "^7.3.4",
"std-env": "^2.2.1",
"style-resources-loader": "^1.4.1",
- "terser-webpack-plugin": "^2.3.5",
- "thread-loader": "^2.1.3",
+ "terser-webpack-plugin": "^4.2.3",
+ "thread-loader": "^3.0.1",
"time-fix-plugin": "^2.0.7",
- "url-loader": "^2.3.0",
+ "url-loader": "^4.1.1",
"vue-loader": "^15.9.5",
"webpack": "^4.44.2",
"webpack-bundle-analyzer": "^3.9.0",
- "webpack-dev-middleware": "^3.7.2",
+ "webpack-dev-middleware": "^4.0.2",
"webpack-hot-middleware": "^2.25.0",
"webpack-node-externals": "^2.5.2",
"webpackbar": "^4.0.0"
},
"engines": {
- "node": ">=8.9.0"
+ "node": ">=10.0.0"
},
"publishConfig": {
"access": "public"
diff --git a/packages/webpack/src/builder.js b/packages/webpack/src/builder.js
index 2cd35e2ebf6a..c0404dfd69ad 100644
--- a/packages/webpack/src/builder.js
+++ b/packages/webpack/src/builder.js
@@ -168,15 +168,19 @@ export class WebpackBundler {
const buildOptions = this.buildContext.options.build
const { client, ...hotMiddlewareOptions } = buildOptions.hotMiddleware || {}
+ compiler.options.watchOptions = this.buildContext.options.watchers.webpack
+ compiler.hooks.infrastructureLog.tap('webpack-dev-middleware-log', (name) => {
+ if (name === 'webpack-dev-middleware') {
+ return false
+ }
+ return undefined
+ })
+
// Create webpack dev middleware
this.devMiddleware[name] = pify(
webpackDevMiddleware(
compiler, {
- publicPath: buildOptions.publicPath,
- stats: false,
- logLevel: 'silent',
- watchOptions: this.buildContext.options.watchers.webpack,
- fs: compiler.outputFileSystem,
+ outputFileSystem: compiler.outputFileSystem,
...buildOptions.devMiddleware
})
)
diff --git a/packages/webpack/src/config/base.js b/packages/webpack/src/config/base.js
index d15047a0238e..815a07d0b789 100644
--- a/packages/webpack/src/config/base.js
+++ b/packages/webpack/src/config/base.js
@@ -254,7 +254,7 @@ export default class WebpackBaseConfig {
},
terserOptions: {
compress: {
- ecma: this.isModern ? 6 : undefined
+ ecma: this.isModern ? 2015 : undefined
},
mangle: {
reserved: reservedVueTags
diff --git a/packages/webpack/src/utils/style-loader.js b/packages/webpack/src/utils/style-loader.js
index cac4f5b80d10..1a7ca5a220c0 100644
--- a/packages/webpack/src/utils/style-loader.js
+++ b/packages/webpack/src/utils/style-loader.js
@@ -20,7 +20,7 @@ export default class StyleLoader {
return this.buildContext.buildOptions.extractCSS
}
- get onlyLocals () {
+ get exportOnlyLocals () {
return Boolean(this.isServer && this.extractCSS)
}
@@ -68,10 +68,13 @@ export default class StyleLoader {
}
css (options) {
- options.onlyLocals = this.onlyLocals
const cssLoader = { loader: 'css-loader', options }
- if (options.onlyLocals) {
+ if (this.exportOnlyLocals) {
+ options.modules = {
+ ...options.modules,
+ exportOnlyLocals: true
+ }
return [cssLoader]
}
diff --git a/renovate.json b/renovate.json
index fa3841786b2d..571f2fdc164a 100644
--- a/renovate.json
+++ b/renovate.json
@@ -7,25 +7,13 @@
],
"ignoreDeps": [
"core-js",
- "memory-fs",
- "execa",
- "pify",
- "file-loader",
- "url-loader",
- "sass-loader",
- "css-loader",
- "node-sass",
"postcss",
"postcss-import",
"postcss-loader",
"postcss-url",
- "thread-loader",
- "fs-extra",
- "chalk",
- "wrap-ansi",
+ "css-loader",
"terser-webpack-plugin",
- "@types/terser-webpack-plugin",
- "defu"
+ "@types/terser-webpack-plugin"
],
"lockFileMaintenance": {
"enabled": true
diff --git a/test/dev/basic.ssr.test.js b/test/dev/basic.ssr.test.js
index 92d1f5c58e1a..fef1410991fc 100644
--- a/test/dev/basic.ssr.test.js
+++ b/test/dev/basic.ssr.test.js
@@ -414,6 +414,11 @@ describe('basic ssr', () => {
expect(html).toContain('Auto discovered component!')
})
+ test('/ (normal