bpr*_*dev 1 sass webpack sass-loader
我是第一次设置 Webpack,但我陷入了 Sass 部分。
我有这样的文件结构:
test.scss里面有这个:
$blue: dodgerblue;
body {
background-color: $blue;
}
Run Code Online (Sandbox Code Playgroud)
index.scss有这个:
@import url("./styles/utilities/test.scss");
Run Code Online (Sandbox Code Playgroud)
我的入口文件index.js如下,如果我在 #1 中使用导入,它可以工作,scss 可以正确编译,但如果我在 #2 中使用导入,它就无法编译。
import './styles/utilities/test.scss';import './index.scss';#1 的输出如下所示:
body {
background-color: dodgerblue;
}
Run Code Online (Sandbox Code Playgroud)
#2 的输出如下所示:
body {
background-color: $blue;
}
Run Code Online (Sandbox Code Playgroud)
为什么会发生这种情况?最终,我希望能够将样式表组织在不同的文件夹中,并能够将它们全部编译成 css。
我的 webpack.config.js 看起来像这样:
const MiniCssExtractPlugin = require("mini-css-extract-plugin");
const path = require('path');
module.exports = {
entry: './src/index.js',
output: {
filename: 'index.js',
path: path.resolve(__dirname, 'assets'),
},
module: {
rules: [
{
test: /\.js$/,
exclude: /node_modules/,
use: {
loader: 'babel-loader',
options: {
presets: ['@babel/preset-env']
}
},
},
{
test: /\.scss$/i,
use: [
MiniCssExtractPlugin.loader,
"css-loader",
{
loader: "postcss-loader",
options: {
postcssOptions: {
plugins: {autoprefixer: {}}
}
}
},
"sass-loader"
]
}
],
},
plugins: [new MiniCssExtractPlugin({
filename: "index.css"
})],
resolve: {
extensions: ['.js', '.scss']
}
};
Run Code Online (Sandbox Code Playgroud)
我刚刚想通了。我们应该使用Sass 模块而不是@import. 另外,这个视频对我帮助很大:https://www.youtube.com/watch ?v=CR-a8upNjJ0
当我更换@import它时@use开始工作。
| 归档时间: |
|
| 查看次数: |
5851 次 |
| 最近记录: |