Webpack 5 sass-loader 不编译嵌套的 scss 文件

Posted

技术标签:

【中文标题】Webpack 5 sass-loader 不编译嵌套的 scss 文件【英文标题】:Webpack 5 sass-loader not compiling nested scss files 【发布时间】:2022-01-16 02:48:54 【问题描述】:

我是第一次设置 Webpack,但在 Sass 部分卡住了。

我有这样的文件结构:

src (目录) 样式(目录) 实用程序(目录) test.scss index.scss(在 src 的根目录下) index.js(在 src 的根目录下)

test.scss 里面有这个:

$blue: dodgerblue;

body 
  background-color: $blue;

index.scss 有这个:

@import url("./styles/utilities/test.scss");

我的入口文件是index.js,如果我在#1 中使用导入,它可以工作,scss 可以正确编译,但如果我在#2 中使用导入,它不会编译。

    import './styles/utilities/test.scss'; import './index.scss';

#1 的输出如下所示:

body 
  background-color: dodgerblue;

#2 的输出如下所示:

body 
  background-color: $blue;

为什么会这样?最终,我希望能够将我的样式表组织在不同的文件夹中,并能够将它们全部编译成 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']
  
;

【问题讨论】:

【参考方案1】:

我刚刚想通了。我们应该使用Sass Modules 而不是@import。另外,这个视频对我帮助很大:https://www.youtube.com/watch?v=CR-a8upNjJ0

当我用 @use 替换 @import 时,它开始工作了。

【讨论】:

以上是关于Webpack 5 sass-loader 不编译嵌套的 scss 文件的主要内容,如果未能解决你的问题,请参考以下文章

webpack编译出来的css不生效

webpack编译出来的css不生效

css-loader,sass-loader 不工作 webpack 2

图片不显示在生产版本中,仅在开发中(webpack/sass-loader)

Webpack 和 sass-loader 文件导入顺序

webpack sass-loader 不生成类选择器样式