我正在使用使用最新版本的 vue cli 3 创建的项目。我使用的是默认配置,我的路由器有很多动态导入的路由。在生产中运行时,我的 css 和 js 都被分成多个块。虽然 js 的行为是可取的。我的 css 文件很小,我想关闭 css 的块。
如何通过 vue.config.js 文件配置 webpack 以执行此操作。请帮助使用确切的命令,因为我发现 webpack 配置和链语法非常混乱。谢谢 :)
我正在使用使用最新版本的 vue cli 3 创建的项目。我使用的是默认配置,我的路由器有很多动态导入的路由。在生产中运行时,我的 css 和 js 都被分成多个块。虽然 js 的行为是可取的。我的 css 文件很小,我想关闭 css 的块。
如何通过 vue.config.js 文件配置 webpack 以执行此操作。请帮助使用确切的命令,因为我发现 webpack 配置和链语法非常混乱。谢谢 :)
vue.config.js
我也使用了一些其他选项,但您需要的是这个。
const path = require('path');
module.exports = {
lintOnSave: true,
filenameHashing: false,
chainWebpack: config => {
config.optimization.delete('splitChunks')
}
};
这将删除创建的块,并让您只使用单个文件CSS
以及JS
.
filenameHashing: false
这部分将删除文件上的散列。config.optimization.delete('splitChunks')
这将删除块。更具体地满足您的要求。
使用这些配置
module.exports = {
lintOnSave: true,
filenameHashing: false,
configureWebpack: {
optimization: {
cacheGroups: {
default: false,
// Merge all the CSS into one file
styles: {
name: 'styles',
test: /\.s?css$/,
chunks: 'all',
minChunks: 1,
reuseExistingChunk: true,
enforce: true,
},
},
}
}
};
通过这种方式,您的 JS 代码将被拆分成块,但 CSS 文件将被合并为一个。
更多如果你想配置你的 JS 块,你可以使用这些设置。
module.exports = {
lintOnSave: true,
filenameHashing: false,
configureWebpack:{
optimization: {
cacheGroups: {
default: false,
// Custom common chunk
bundle: {
name: 'commons',
chunks: 'all',
minChunks: 3,
reuseExistingChunk: false,
},
// Customer vendor
vendors: {
chunks: 'initial',
name: 'vendors',
test: 'vendors',
},
// Merge all the CSS into one file
styles: {
name: 'styles',
test: /\.s?css$/,
chunks: 'all',
minChunks: 1,
reuseExistingChunk: true,
enforce: true,
},
},
}
}
};
对于 Webpack 4,你可以看到这个例子(vue.config.js):
const WebpackBundleAnalyzer= require('webpack-bundle-analyzer').BundleAnalyzerPlugin;
module.exports = {
lintOnSave: false,
runtimeCompiler: true,
filenameHashing:false,
productionSourceMap: false,
configureWebpack: {
resolve: {
symlinks: false
},
optimization: {
splitChunks: {
cacheGroups: {
app: {
chunks: 'all',
name: 'main',
test: /[\\/]src[\\/](.*)[\\/]/,
},
flagIcons: {
chunks: 'all',
name: 'flagIcons',
//test: /[\\/]node_modules[\\/]@coreui[\\/]((icons).*)[\\/]/,
test: /[\\/]node_modules[\\/]@coreui[\\/]icons[\\/]js[\\/]((flag).*)[\\/]/,
},
freeIcons: {
chunks: 'all',
name: 'freeIcons',
//test: /[\\/]node_modules[\\/]@coreui[\\/]((icons).*)[\\/]/,
test: /[\\/]node_modules[\\/]@coreui[\\/]icons[\\/]js[\\/]((free).*)[\\/]/,
},
brandIcons: {
chunks: 'all',
name: 'brandIcons',
test: /[\\/]node_modules[\\/]@coreui[\\/]icons[\\/]js[\\/]((brand).*)[\\/]/,
},
vendors: {
chunks: 'all',
name: 'vendors',
test: /[\\/]node_modules[\\/]@coreui[\\/]((?!icons).*)[\\/]/,
},
// Merge all the CSS into one file
styles: {
name: 'styles',
test: /\.s?css$/,
chunks: 'all',
minChunks: 1,
reuseExistingChunk: true,
enforce: true,
}
}
}
},
plugins:[new WebpackBundleAnalyzer()]
}
}
对结果满意后,您可以删除“WebpackBundleAnalyzer”。