NextJS - 使用 sass-loader 向每个 scss 文件添加变量

Max*_* G. 2 javascript sass reactjs webpack next.js

我正在尝试将自定义 webpack 配置添加到我的 nextjs 项目中。目标是自动导入@import "src/styles/variables.scss";我的应用程序中的每个 scss 文件。

我有一个故事书的 webpack 配置,它按预期工作,但我没有成功地使其适用于 nextJS。

这是我的故事书配置:

webpackFinal: async (config, { configType }) => ({
    ...config,
    module: {
      ...config.module,
      rules: [
        ...config.module.rules,
        {
          test: /\.scss$/,
          use: ['style-loader', 'css-loader', 'sass-loader'],
          include: path.resolve(__dirname, '../'),
        },
        {
          test: /\.s[ac]ss$/i,
          use: {
            loader: 'sass-loader',
            options: {
              additionalData: '@import "src/styles/variables.scss";',
            },
          },
        },
      ],
    },
Run Code Online (Sandbox Code Playgroud)

这是我的 next.config.js

webpack: (config) => ({
    ...config,
    module: {
      ...config.module,
      rules: [
        ...config.module.rules,
        {
          test: /\.scss$/,
          use: ['style-loader', 'css-loader', 'sass-loader'],
          include: path.resolve(__dirname, './'),
        },
        {
          test: /\.s[ac]ss$/i,
          use: {
            loader: 'sass-loader',
            options: {
              additionalData: '@import "src/styles/variables.scss";',
            },
          },
        },
      ],
    },
  })
Run Code Online (Sandbox Code Playgroud)

Max*_* G. 12

我们可以直接添加sassOptions进去,next.config.js不需要sass-loader。

sassOptions: {
    additionalData: `@import "src/styles/variables.scss"; @import "src/styles/mixins.scss";`,
 },
Run Code Online (Sandbox Code Playgroud)