升级到 v3 后,sassOptions 中的 data 选项在 gatsby-plugin-sass 中停止工作,并用 sass 替换了 node-sass

问题描述

我决定从我的 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) 有关,但我无法弄清楚如何使它起作用以及为什么它以前起作用:

ℹ️ 数据和文件等选项不可用,将被忽略。

解决方法

根据changelogdata 选项已重命名为prependData,然后移除以支持additionalData。所以:

{
  resolve: `gatsby-plugin-sass`,options: {
    additionalData: `@use 'globals' as *;`,sassOptions: {
      includePaths: [`${__dirname}/src/styles`],},

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...