大家还记得我们在老版本中,对于线上环境配置中会把所有的 css 多打成一个文件:
核心是使用了插件 extract-text-webpack-plugin,方式如下:
第一步都是加载插件
const ExtractTextPlugin = require(\'extract-text-webpack-plugin\')
这个插件的描述如下:
Extract text from a bundle, or bundles, into a separate file.
然后配置如下:(省去了 rules 相关的配置)
一般配置 filename 来保证最终生成的 css 文件名
plugins: [
new ExtractTextPlugin({
filename: utils.assetsPath(\'css/[name].[contenthash].css\')
})
]
我们可以预先用 vue inspect --plugin extract-css 看看最终生成的配置:
/* config.plugin(\'extract-css\') */
new MiniCssExtractPlugin(
{
filename: \'css/[name].[contenthash:8].css\',
chunkFilename: \'css/[name].[contenthash:8].css\'
}
)
在文件 @vue/cli-service/lib/config/css.js 中:
最开始需要获取 vue.config.js 里面配置的 css.extract:
const isProd = process.env.NODE_ENV === \'production\'
const {
extract = isProd
} = options.css || {}
设置一个变量 shouldExtract
const shadowMode = !!process.env.VUE_CLI_CSS_SHADOW_MODE
const shouldExtract = extract !== false && !shadowMode
如果变量 shouldExtract 为 true,调用 plugin 方法来生成一个插件配置:
这里依赖的插件为 mini-css-extract-plugin
if (shouldExtract) {
webpackConfig
.plugin(\'extract-css\')
.use(require(\'mini-css-extract-plugin\'), [extractOptions])
}
filename 内部也有一个判断过程,如果设置了 filenameHashing,它默认是 true:
filenameHashing: true
类型为 boolean:
filenameHashing: joi.boolean()
const filename = getAssetPath(
options,
`css/[name]${options.filenameHashing ? \'.[contenthash:8]\' : \'\'}.css`
)
处理 filename 之后,插件还有一个配置项:chunkFilename
下面就是通过 .assign 来生成 extractOptions
const extractOptions = .assign({
filename,
chunkFilename: filename
}, extract && typeof extract === \' \' ? extract : {})
继续阅读与本文标签相同的文章
上一篇 :
java代理
下一篇 :
半年总结:买哪支人工智能相关的股票最赚?
-
《中国工夫》聚焦“中国智造”
2026-05-18栏目: 教程
-
基于 APIGateway 打造生产级别的 Knative 服务
2026-05-18栏目: 教程
-
棱镜丨圆通回应“承诺达”解散:由直营模式改回加盟商授权经营
2026-05-18栏目: 教程
-
自从有了它,我在微信上吵架就没输过!
2026-05-18栏目: 教程
-
OTT终端不断地在全球范围扩展,未来万物互联不再是梦想
2026-05-18栏目: 教程
