use*_*232 8 javascript sass webpack
我有这个sass目录:
- _vars.scss
- main.scss
Run Code Online (Sandbox Code Playgroud)
//vars.scss
$base-container: 1400px;
Run Code Online (Sandbox Code Playgroud)
//main.scss
@import './vars';
Run Code Online (Sandbox Code Playgroud)
在其他js文件中我有:
require('./some-module-sass-file');
Run Code Online (Sandbox Code Playgroud)
//some-module-sass-file.scss
.container {
width: $base-container;
}
Run Code Online (Sandbox Code Playgroud)
问题是我在vars文件中有全局变量,而some-module-sass-file无法识别它们并抛出错误:
undefined variable $base-container
Run Code Online (Sandbox Code Playgroud)
如果您有 Webpack 5,则必须使用extraData,其他选项现在无效:
{
loader: 'sass-loader',
options: {
additionalData: '@import path/to/general.sass',
}
},
Run Code Online (Sandbox Code Playgroud)
如果您这样做,您的通用 sass 或 scss 文件将被添加到前面
不使用sass-resources-loader:
感谢@ Arseniy-II与以下线程一起帮助我获得此答案:https : //github.com/webpack-contrib/sass-loader/issues/218
使用webpack模块规则中的loader选项,可以将数据属性分配给sass-loader,然后应该能够按预期使用所有sass函数:
module: {
rules: [
// Apply loader
{
test: /\.scss$/,
use: [
'style-loader',
'css-loader',
{
loader: 'sass-loader',
options: {
data: '@import "path/to/global.scss";',
includePaths:[__dirname, 'src']
},
},
],
},
],
}
Run Code Online (Sandbox Code Playgroud)
https://github.com/shakacode/sass-resources-loader
sass-resources-loader允许在每个必需的sass文件中使用变量,mixins等。
因此,您可以在vars.scss中使用变量:
$main: #073288;
$secondary: #F6A906;
Run Code Online (Sandbox Code Playgroud)
然后照常使用它们:
.my-component {
background-color: $main;
color: $secondary;
}
Run Code Online (Sandbox Code Playgroud)
安装sass-resources-loader:
npm install sass-resources-loader --save-dev
并配置您webpack.config:
{
loader: 'sass-resources-loader',
options: {
resources: './path/to/vars.scss'
}
}
Run Code Online (Sandbox Code Playgroud)
module: {
rules: [
// Apply loader
{
test: /\.scss$/,
use: [
'style-loader',
'css-loader',
'postcss-loader',
'sass-loader',
{
loader: 'sass-resources-loader',
options: {
resources: ['./path/to/vars.scss', './path/to/mixins.scss']
},
},
],
},
],
}
Run Code Online (Sandbox Code Playgroud)
如果您对资源的路径有疑问,请尝试使用如下路径:
const path = require('path') resources: [path.resolve(__dirname, './../vars.scss')]__dirname 在webpack.config内部可用,而不需要它。| 归档时间: |
|
| 查看次数: |
7749 次 |
| 最近记录: |