create-react-app怎么定义全局scss变量

发布于 2022-09-07 22:05:40 字数 446 浏览 24 评论 0

最近利用create-react-app创建了一个项目,因为项目主题风格多样,所以需要多个样式文件进行风格定义。

最初想的是定义一个css文件,通过命名的区分(.base_background:#ff0000;),在需要使用的位置引入,不过这种方法太麻烦了,除了元素自己的类名,还需要另外加类名(相当多的类名)。而且每个组件都要引入主题样式文件,增加了冗余。

然后开始尝试全局定义scss,想通过变量语法进行主题样式控制,看到一篇vue的文章,可以通过sass-resources-loader进行变量引入,而不需要每个组件单独引入scss文件。vue引入sass全局变量

多番尝试后,没有成功将其在react中实现。求教哪位有过类似操作,指点一下。感谢!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

哎呦我呸! 2022-09-14 22:05:40

我知道,哈哈
这是我的项目结构
clipboard.png
首先需要npm i sass-resources-loader --save-dev
然后需要在webpack.config.dev中修改一下

clipboard.png

注意是./src**
最后你需要在App.js中引入定义全局变量的scss文件,这样你就可以在所有的scss文件中使用common.scss中定义的变量了,不需要每次都引入common.scss。
App.js文件如下
clipboard.png

万事大吉了,哈哈

审判长 2022-09-14 22:05:40

我也遇到跟你一样的问题,请问你这边解决了么?

忘东忘西忘不掉你 2022-09-14 22:05:40

cnpm i sass-resources-loader --save-dev

webpack.config.js 447

.concat([ { loader: "sass-resources-loader", options: { resources: path.join(__dirname, "../src/assets/css/${name}.scss") } } ])

離殇 2022-09-14 22:05:40
{
              test: sassModuleRegex,
              use: getStyleLoaders(
                {
                  importLoaders: 3,
                  sourceMap: isEnvProduction && shouldUseSourceMap,
                  modules: {
                    getLocalIdent: getCSSModuleLocalIdent,
                  },
                },
                'sass-loader',
                {
                  loader: 'sass-resources-loader',
                  options: {
                    resources: '../src/assets/styles/namespace.scss',
                  },
                },
              ),
            },

create-react-app eject后,这样不行呀

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文