如何创建全局样式表以在 Nx React 项目中共享 scss 变量?

How can I create a global stylesheet to share scss variables in a Nx React project?

现在,我真的希望这不是基于意见。但我只是想在这里提供一些建议,因为我不知道如何开始。

我有一个基本的 Nx workspace with a TypeScript React frontend combined with SCSS 样式。 该项目的架构看起来是这样的:

root/
├─ apps/
├─ libs/
│  ├─ someLib1/
│  │  ├─ src/
│  │  │  ├─ lib/
│  │  │  │  ├─ someLib1.tsx
│  │  │  │  ├─ someLib1.scss
│  ├─ someLib2/
│  ├─ someLib3/
│  ├─ shared/
│  │  ├─ styles/
│  │  │  ├─ global.scss

有什么巧妙的方法可以将 global.scss 导入 /libs 中的任何可访问(=相同文件夹级别或以下)组件?举个例子:
假设我在 global.scss 中声明了 $example: #fff;。如果不通过绝对路径(@import/@use "../../../shared/styles/global.scss"@import/@use "/libs/shared/styles/global.scss")导入它,我将如何在 someLib1.scss 中使用它?

最终我想到了以下解决方案:

我向我的工作区添加了一个自定义 webpack.config.js 文件,并使用 global.scss 文件的别名扩展了 Nx 提供的初始配置。

const path = require('path');
const nrwlConfig = require('@nrwl/react/plugins/webpack.js');

module.exports = (config) => {
  nrwlConfig(config);

  return {
    ...config,
    resolve: {
      ...config.resolve,
      alias: {
        ...config.resolve.alias,
        'global': path.join(
          __dirname,
          'libs/shared/styles/global.scss'
        ),
      },
    },
  };
};

这样做之后,我可以通过别名在库中的每个 .scss 文件中导入 global.scss,如下所示:

@import "global";