CSS 模块化方案的配置文件
module.exports = {
module: {
rules : [
{
test: "\.css$i",
use: [
{loader: 'style-loader'},
{loader: 'css-loader'},
{loader: 'postcss-loader'},
{loader: 'sass-loader'},
]
}
]
}
}
首先使用
sass-loader
将Sass
文件编译成CSS
文件,然后使用postcss-loader
处理CSS
文件中的浏览器兼容性问题,并使用css-loader
解析CSS
样式表中的@import
和url()
语句。最后使用style-loader
将CSS
样式表直接加载到DOM
中的<style/>
中
重大知识点
loader 从下向上执行 !!!
解析
-
css-loader
css module hash 命名生成规则,官方建议配置
options: { modules: { localIdentName: "[path][name]__[local]--[hash:base64:5]", }, }
base64
生成的hash
有 五 位,这可以通过看线上的代码进行验证
-
css-loader
中引用其他loader
生产环境的构建将CSS
从bundle
中分离出来。mini-css-extract-plugin
&style-loader
⚠️ 不要同时使用上面那两个loader
哈!!! -
css-loader
的作用主要是解析css
文件中的@import
和url
语句,处理css-modules
,并将结果作为一个js
模块返回 -
style-loader
在DOM
中插入一个<style />
标签,然后将CSS
写入这个标签 -
postcss-loader
这个loader
的强大在于他的 plugin,增加CSS
前缀,并进行压缩
使用 auto-prefixer 添加厂商前缀;想处理写在 JS 中的样式 postcss-js parser
-
scss-loader
编译成标准的CSS
,处理变量,嵌套,继承 -
miniCssExtractPlugin
plugins:[newMiniCssExtractPlugin({filename:isProductionMode?'[name].[contenthash].css':'[name].css',}),]
网友评论