在 webpack 中,根据项目需要,可能会需要下面 loader 来处理 css。
css-loader
css-loader 可以解析 import require @import url 对 css 文件的引用,将 css 文件转换成 webpack 可以识别的 js 模板,转换后内容如下:
1 | // Imports |
安装
1
npm install --save-dev css-loader
配置
1
2
3
4
5
6
7
8
9
10module.exports = {
module: {
rules: [
{
test: /\.css$/i,
use: ['style-loader', 'css-loader'],
},
],
},
};
style-loader
可以将转换后的 css 文件插入到 html 文件中,默认以 style 的方式插入。
安装
1
npm install --save-dev style-loader
配置
默认以 style 形式插入 html 文件
1
2
3
4
5
6
7
8module: {
rules: [
{
test: /\.css$/,
use: ["style-loader", "css-loader"],
},
],
},如果想以 link 的方式插入,则可以参考如下配置:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16module: {
rules: [
{
test: /\.css$/,
use: [
{
loader: "style-loader",
options: {
injectType: "linkTag",
},
},
"file-loader",//css-loader->file-loader
],
},
],
},
less-loader
可以将 less 转换成 css 。
安装
1
npm install less-loader --save-dev
配置
1
2
3
4
5
6
7
8
9
10
11
12module: {
rules: [
{
test: /\.css$/,
use: ["style-loader", "css-loader"],
},
{
test: /\.less$/,
use: ["style-loader", "css-loader", "less-loader"],
},
],
},
postcss-loader
使用 postcss-loader 可以对 css 进行后置处理,如添加兼容各个浏览器的前缀等。
postcss-loader 内部其实是通过其他插件完成各个功能的。
- 安装
1 | npm i postcss-import postcss-preset-env cssnano postcss-loader -D |
使用
项目根目录创建 postcss.config.js 配置文件
1
2
3
4
5
6
7
8
9
10
11module.exports = {
// parser: "sugarss",
plugins: {
//postcss-import:通过 @import,整合多个 CSS 文件
"postcss-import": {},
//postcss-preset-env: 支持现代的 css 语法。
"postcss-preset-env": {},
//cssnano: 可以压缩 css 代码
cssnano: {},
},
};webpack.config.js 中配置 postcss-loader
1
2
3
4
5
6
7
8module: {
rules: [
{
test: /\.(less|css)$/,
use: ["style-loader", "css-loader", "postcss-loader", "less-loader"],
},
],
},
MiniCssExtractPlugin
使用 MiniCssExtractPlugin 可以将 CSS 提取到单独的文件。为每个包含 CSS 的文件单独创建一个 CSS 文件。
安装
1 | npm install --save-dev mini-css-extract-plugin |
使用
1 | const path = require("path"); |
参考: