在一个scss文件中,我尝试导入定制的、广泛使用的scss块(在React/SASS/Webpack堆栈中)。
这样我就可以使用一个共享的mixin。
假设我正在创建一个MyAdminButton,我想导入一个涉及项目所有按钮的scss文件(这是自定义的scss,不是供应商/外部的)。
它看起来像这样:
//this actually works but it is a code smell : what if the current file moves ?
@import "../../stylesheets/_common-btn-styles.scss";
.my-admin-btn {
// here I can use a shared mixin defined in _common-btn-styles.scss
}
这听起来不太好,因为如果我的scss文件移动,那么一切都是坏的。
谢谢你的帮忙
7条答案
按热度按时间pgccezyw1#
找到了。实际上您可以在webpack.config.json中配置sass-loader,如下所述:https://github.com/jtangelder/sass-loader
以下是相关部分:
soat7uwm2#
如果您使用Create React App v3(allows absolute imports),则可以使用代字号
kfgdxczn3#
您可以使用resolve.modules向Webpack模块添加 * 样式表
sass-loader允许您从模块导入 _common-btn-styles.scsshttps://webpack.js.org/loaders/sass-loader/#resolving-import-at-rules
093gszye4#
在react-scripts最新版本中,您可以在项目根目录下添加一个**
.env
文件,变量为SASS_PATH=node_modules:src
。要指定更多目录,可以将它们添加到SASS_PATH中,并以
:
分隔,例如path1:path2:path3
**official doc
7ajki6be5#
网络包5
Webpack 5的配置有所不同,因为
includePaths
应在选项sassOptions
中指定:网络包4
我不得不做更多的研究,以解决这个问题使用其他答案,所以这里是我的工作解决方案:
然后在
scss
文件中:hpxqektj6#
如果将Dart Sass实现与
sass-loader
一起使用,则选项略有不同。The options for
sassOptions
are herenkoocmlb7#
如果你使用的是NextJS,这里有一个简单的实现,你可以在这里阅读文档。
在我的例子中,我使用Tailwindcss和SASS,下面是配置文件和sass文件。