我在项目中的scss目录:
src/styles/
├── base
│ ├── _global.scss
│ └── _normalize.scss
├── libraries
│ └── _antd-custom.scss
├── utilities
│ └── _utilities.scss
├── variables
│ └── _colors.scss
├── base.scss
└── settings.scss
base.scss 导入全局和基本的scss文件:
@import 'src/styles/base/normalize';
@import 'src/styles/base/global';
@import 'src/styles/libraries/antd-custom';
@import 'src/styles/utilities/utilities';
settings.scss 导入配置样式,例如变量,mixin,函数。
@import 'src/styles/variables/colors';
settings.scss
将先于其他scss文件加载。
webpack.conf.js
rules: [
// styles
{
test: /\.(s)css$/,
use: [
'style-loader',
{
loader: 'css-loader',
options: {
sourceMap: true,
modules: true,
localIdentName: '[name]__[local]--[hash:base64:5]',
},
},
{
loader: 'postcss-loader',
options: {
plugins() {
return [autoprefixer()]
},
sourceMap: true,
},
},
{
loader: 'sass-loader',
options: {
sourceMap: true,
// load settings scss files before
data: '@import "src/styles/settings.scss";',
},
},
],
exclude: /node_modules/,
},
}
base.scss
将导入到应用程序入口点:
src / index.js
import 'src/styles/base.scss'
结果是settings.scss
有效,但base.scss
无效。
是否应该在webpack的 sass loader 选项中同时导入setting.scss
和base.scss
文件?还是其他更好的解决方案?