webpack中的sass-loader


本文作者: jsweibo

本文链接: https://jsweibo.github.io/2019/07/09/webpack%E4%B8%AD%E7%9A%84sass-loader/

摘要

本文主要讲述了:

  1. 作用
  2. 安装
  3. 两种实现
  4. 配置
  5. 示例

正文

作用

将 Sass/SCSS 文件转换为 CSS 文件。

注意:

  1. 相对于当前文件的路径不需要以.开头
  2. ~打头的路径将解析为node_modules目录中的模块

安装

1
2
3
#!/usr/bin/env bash

npm install --save-dev sass-loader

两种实现

sass-loader本身并不具备转换能力。因此还需要选择sass的实现。

sass有两种实现:

  • node-sass 使用 nodejs 包装 LibSass 实现
  • sass 由 Dart Sass 编译而来

如果两者同时被安装,sass-loader默认使用node-sass

node-sass

如果选择node-sass

1
2
3
#!/usr/bin/env bash

npm install --save-dev node-sass

sass

如果选择sass

1
2
3
#!/usr/bin/env bash

npm install --save-dev sass

如果要启用sass必须配置implementation

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
const path = require('path');
const HtmlWebpackPlugin = require('html-webpack-plugin');

module.exports = {
mode: 'development',
entry: './src/index.js',
output: {
path: path.resolve(__dirname, 'dist'),
filename: 'bundle.js',
},
module: {
rules: [
{
test: /\.scss$/,
use: [
{
loader: 'style-loader',
},
{
loader: 'css-loader',
},
{
loader: 'sass-loader',
options: {
implementation: require('sass'),
},
},
],
},
],
},
plugins: [
new HtmlWebpackPlugin({
title: 'learn_webpack',
template: 'public/index.html',
}),
],
};

配置

sourceMap

如果要开启sourceMap,必须同时开启css-loadersass-loadersourceMap选项。

示例

learn_webpack/webpack.config.js

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
const path = require('path');
const HtmlWebpackPlugin = require('html-webpack-plugin');

module.exports = {
mode: 'development',
entry: './src/index.js',
output: {
path: path.resolve(__dirname, 'dist'),
filename: 'bundle.js',
},
module: {
rules: [
{
test: /\.scss$/,
use: [
{
loader: 'style-loader',
},
{
loader: 'css-loader',
},
{
loader: 'sass-loader',
},
],
},
],
},
plugins: [
new HtmlWebpackPlugin({
title: 'learn_webpack',
template: 'public/index.html',
}),
],
};

learn_webpack/src/index.js

1
import resetCSS from './scss/reset.scss';

learn_webpack/src/scss/reset.scss

1
2
3
4
5
6
7
8
body {
margin: 0;
> div {
width: 300px;
height: 300px;
background-color: #f00;
}
}

运行:

1
2
3
#!/usr/bin/env bash

npx webpack

相当于

  1. 将 SCSS 文件转换为 CSS 文件
  2. 将 CSS 文件转换为 JavaScript 模块
  3. 在页面中通过<style>自动插入 JavaScript 模块

参考资料

本文作者: jsweibo

本文链接: https://jsweibo.github.io/2019/07/09/webpack%E4%B8%AD%E7%9A%84sass-loader/


本文对你有帮助?请支持我


支付宝
微信