【发布时间】:2022-01-07 07:46:22
【问题描述】:
我想使用 node_modules 中已安装模块的 scss 文件中的 css 变量。
node_modules 文件夹:
|node_modules
- A
-- A1
--- variable.scss
varibale.scss:
$include-html-classes: false;
$include-html-global-classes: false;
@import "~foundation-sites/scss/foundation/components/_global.scss";
$default-color-white: #fff;
$color-white: var(--a-palette-complementary-0, $default-color-white);
webpack.config.js
{
test: /\.scss$/,
use: [
{
loader: MiniCssExtractPlugin.loader,
options: {
hmr: isDevelopment
}
},
{
loader: 'css-loader',
options: {
sourceMap: true
}
},
{
loader: 'postcss-loader',
options: {
plugins: [
require('autoprefixer')()
],
sourceMap: true
}
},
{
loader: 'sass-loader',
options: {
sassOptions: {
includePaths: [
path.resolve(__dirname, 'node_modules'),
path.resolve(__dirname, 'node_modules/foundation-sites/scss')
]
},
sourceMap: true
}
}
]
},
{
test: /\.css$/,
use: [
{
loader: MiniCssExtractPlugin.loader,
options: {
hmr: isDevelopment
}
},
{
loader: 'css-loader',
options: {
sourceMap: true
}
}
]
},
我得到一个编译错误:
SassError: argument `$color` of `transparentize($color, $amount)` must be a color
但如果我尝试使用变量 $default-color-white 而不是 $color-white 则编译成功
我的 scss 文件:
@import "~A/A1/variable";
.import-section {
border: 1px solid transparentize($color-white, 0.5); // compile error
}
@import "~A/A1/variable";
.import-section {
border: 1px solid transparentize($default-color-white, 0.5); // compile OK
}
我不知道为什么我不能使用使用 var 函数的变量。我做错了 CSS 加载器配置吗?
【问题讨论】: