sass - 在 gatsby 中全局包含 sass
问题描述
我有以下项目结构:
gatsby-config.js
/src
/components
layout.jsx
/button
button.jsx
button.scss
/pages
/styles
styles.scss
_mixins.scss
_variables.scss
和gatsby-config.js
和styles.scss
分别配置如下:
...
plugins: [
...,
`gatsby-plugin-sass`
]
...
@import 'variables',
'mixins';
为了访问 mixins 和变量,styles.scss
当前正在所有组件的 scss 文件中导入,例如:
//button.scss
@import './../styles/styles.scss'
这种方法是有效的,但问题是,随着项目的增长,styles.scss
它被多次导入,这种方法似乎有问题。是否可以只导入styles.scss
一次,并使所有 mixin 和变量在所有组件中都可用?
解决方案
您可以通过 将选项传递给 Sass gatsby-plugin-sass
。
以下选项将全局公开./src/styles/_styles.scss
项目中每个 Sass 文件的内容,而无需显式导入它。
module.exports = {
plugins: [
{
resolve: 'gatsby-plugin-sass',
options: {
data: `@import "${__dirname}/src/styles/styles";`,
}
},
],
}
注意:以下内容对某些人来说可能很明显,但对于未来的读者来说值得一提。
仅对仅包含变量、mixin、函数等的 Sass 文件执行此操作(在使用之前不会输出任何实际 CSS 的 Sass 功能)。否则,您最终会得到在您的项目中重复多次的 CSS。
推荐阅读
- android - 如何隐藏吐司“您的音频将被发送到谷歌以提供语音识别服务。” 在语音识别器中?
- c# - 递归列表到格式良好的表
- laravel - Laravel 5.5 递归函数创建菜单
- ios - 如何为 GDPR / RGPD 匿名化 iOS 版 Google Analytics(分析)
- mysql - MySQL / PostgreSQL - 这可以在事务中执行并行写入吗?
- java - 如何在 ehcache 3.5 版本中将缓存过期配置为 none 和 overflowToDisk="false"?
- google-apps-script - 如何检查电子邮件是否附有 PDF(如果存在)?如何使用 Google App Script 在 Gmail 中显示所有 PDF 附件的标签名称?
- javascript - JS 非内联版本的 console.collapsedGroup
- uwp - 在桌面应用程序中使用更新的 Windows 10 API
- generics - 没有找到类型的名为 len 的方法
::输入当前范围