如何使用 Create-React-App 为 sass-resources-loader 设置 Webpack?

How to setup Webpack using Create-React-App for sass-resources-loader?

我想用 CSS 个模块 + SASS 构建一个项目。我想要一些全局样式(mixins、变量、函数等),它们将在每个 component.module.scss 中可用。为此,我需要将全局样式导入到每个模块样式文件中。因为我希望有很多组件,所以我一直在寻找自动执行此操作的选项。我找到了 sass-resourcess-loader ,可能会有所帮助。

但是,由于我没有任何使用 Webpack 的经验,所以我很难设置它。

到目前为止我做了什么:

  1. 使用 create-react-app
  2. 创建了我的 React 应用程序
  3. 已安装 node-sasssass-resources-loader
  4. 在我的 project-folder/node_modules/react-scripts/webpack.config.js 线上 595 我添加了

{ 测试:/.scss$/, 利用: [ { 装载机:“风格装载机”, }, { 装载机:“css-装载机”, }, { 装载机:“sass-装载机”, }, { 装载机:“sass-资源装载机”, } ], }

抱歉,我无法以某种方式正确设置代码片段的样式。我也试过选项字段:

options: {
 resources: "./src/global.scss"
}

但是没有任何效果,我的模块化 scss 文件中仍然有未定义的变量。

我做错了什么?或者有其他方法可以解决这个问题吗?

好的,我找到了 CRACO 的解决方案(创建 React App 配置覆盖)。

1) 我已经卸载了不再需要的 sass-reasources-loader 并还原了 webpack.config.js

中的更改

2) 已安装 CRACO and craco-sass-resources-loader

3) 在我项目的根目录中创建了 craco.config.js 文件并添加了这个:

const sassResourcesLoader = require("craco-sass-resources-loader");

module.exports = {
    mode: "development",
    output: {
        path: __dirname,
    },
    plugins: [
        {
            plugin: sassResourcesLoader,
            options: {
                resources: "./src/global.scss",
            },
        },
    ],
};

4) 在 package.json 中,我将脚本更改为:

"start": "craco start",

"build": "craco build",

现在一切正常。如果您需要更多信息,请单击步骤 2 中提供的链接。