我正在使用gatsby-plugin-sass
建立一个盖茨比项目。
我的gatsby-config.js
文件:
module.exports = {
plugins: [
'gatsby-plugin-resolve-src',
'gatsby-plugin-sass',
'gatsby-plugin-react-helmet',
{
resolve: `gatsby-source-filesystem`,
options: {
name: `images`,
path: `${__dirname}/src/assets/images`,
},
},
],
}
我具有以下样式文件结构:
|
|src
|-styles
|--base
|--- _variables.scss
|--components
|--- _Buttons.scss
|--- ...
|--main.scss
我正在{strong>导入这样的我的_Buttons.scss
文件:
@import '../base/variables';
@use 'sass:color as *;
当我尝试使用这样的颜色设置功能(在https://sass-lang.com/documentation/modules中指定)
%buttons-focus {
background-color: color.adjust($primary-color, $alpha: -0.5);
}
我收到以下错误消息:
Invalid CSS after "...nd-color: color": expected expression (e.g. 1px, bold), was ".adjust($primary-co"
在main.scss中,我将导入如下样式:
@import './components/Buttons';
我在监督什么吗?
我尝试用@use
来替换@import
,但是没有运气。对我来说,好像gatsby-sass-plugin不知道sass模块。
答案 0 :(得分:7)
gatsby-plugin-sass
在后台使用node-sass
。但是,为了使用@use支持内置模块,您需要将gatsby-plugin-sass
配置为使用dart-sass
。见下文。
仅Dart Sass当前支持使用@use加载内置模块。其他实现的用户必须改为使用其全局名称来调用函数。
默认情况下,使用Sass的节点实现(node-sass)。要使用Dart(dart-sass)编写的实现,可以安装sass而不是node-sass并将其作为实现传递给选项:
npm install --save-dev sass
gatsby-config.js
plugins: [
{
resolve: `gatsby-plugin-sass`,
options: {
implementation: require("sass"),
},
},
]