diff --git a/lib/builder/webpack/base.config.mjs b/lib/builder/webpack/base.config.mjs index dcc91f189d..4f9305beb0 100644 --- a/lib/builder/webpack/base.config.mjs +++ b/lib/builder/webpack/base.config.mjs @@ -1,5 +1,6 @@ import path from 'path' +import ExtractTextPlugin from 'extract-text-webpack-plugin' import TimeFixPlugin from 'time-fix-plugin' import webpack from 'webpack' import _ from 'lodash' @@ -146,6 +147,20 @@ export default function webpackBaseConfig({ name, isServer }) { // Hide warnings about plugins without a default export (#1179) config.plugins.push(new WarnFixPlugin()) + // CSS extraction + const extractCSS = this.options.build.extractCSS + if (extractCSS) { + config.plugins.push(new ExtractTextPlugin(Object.assign({ + filename: this.getFileName('css') + + // When using optimization.splitChunks and there are + // extracted chunks in the commons chunk, + // allChunks *must* be set to true + // TODO: For nuxt this makes duplicate css assets! + // allChunks: true + }, typeof extractCSS === 'object' ? extractCSS : {}))) + } + // Clone deep avoid leaking config between Client and Server return _.cloneDeep(config) } diff --git a/lib/builder/webpack/client.config.mjs b/lib/builder/webpack/client.config.mjs index 75f546b356..5025a8d4e9 100644 --- a/lib/builder/webpack/client.config.mjs +++ b/lib/builder/webpack/client.config.mjs @@ -4,7 +4,6 @@ import _ from 'lodash' import webpack from 'webpack' import HTMLPlugin from 'html-webpack-plugin' import FriendlyErrorsWebpackPlugin from '@nuxtjs/friendly-errors-webpack-plugin' -import ExtractTextPlugin from 'extract-text-webpack-plugin' import StylishPlugin from 'webpack-stylish' import BundleAnalyzer from 'webpack-bundle-analyzer' @@ -135,22 +134,6 @@ export default function webpackClientConfig() { // Create additional runtime chunk for cache boosting config.optimization.runtimeChunk = true - // CSS extraction - const extractCSS = this.options.build.extractCSS - if (extractCSS) { - config.plugins.push(new ExtractTextPlugin(Object.assign({ - filename: this.getFileName('css') - - // When using optimization.splitChunks and there are - // extracted chunks in the commons chunk, - // allChunks *must* be set to true - // TODO: For nuxt this makes duplicate css assets! - // allChunks: true - }, - typeof extractCSS === 'object' ? extractCSS : {} - ))) - } - // -------------------------------------- // Dev specific config // --------------------------------------