问题描述
我决定从我的 gatsby 项目中删除 node-sass
并改用 sass
。我遵循了 v3 中提到的 here。我删除了 node-sass
,现在我的 package.json
中有这些版本:
"gatsby-plugin-sass": "3.1.0","sass": "1.32.5",
我需要能够一次性为全局变量/mixins/函数编写一些@use 或@import 规则,以便我可以在所有scss 文件中使用它们,这样我就不必一遍又一遍地重复相同的规则再次。
使用 node-sass
时,这样的操作有效:
{
resolve: `gatsby-plugin-sass`,options: {
includePaths: [`${__dirname}/src/styles`],data: `@import "globals.scss";`,},
升级后,includePaths
属性有效,但 data
无效,我从我的 scss 文件中收到关于“丢失”变量的错误:
{
resolve: `gatsby-plugin-sass`,options: {
sassOptions: {
includePaths: [`${__dirname}/src/styles`],data: `@use 'globals' as *;`,
如果我在每个 scss 文件中插入规则 @use 'globals' as *;
,错误就会消失,一切都按预期工作,但我不想插入这一行并修改我所有的 sass 文件。
我很确定该问题与 sass-loader
和此声明 (documentation) 有关,但我无法弄清楚如何使它起作用以及为什么它以前起作用:
ℹ️ 数据和文件等选项不可用,将被忽略。
解决方法
根据changelog,data
选项已重命名为prependData
,然后移除以支持additionalData
。所以:
{
resolve: `gatsby-plugin-sass`,options: {
additionalData: `@use 'globals' as *;`,sassOptions: {
includePaths: [`${__dirname}/src/styles`],},