我需要为项目的每个安装提供不同的特殊 scss 文件,所以我不想将它包含在 git 存档中。但即使这个文件不存在,一切都应该工作。
有没有办法@import scss 文件只有在它存在时才会忽略文件未找到错误?
我需要为项目的每个安装提供不同的特殊 scss 文件,所以我不想将它包含在 git 存档中。但即使这个文件不存在,一切都应该工作。
有没有办法@import scss 文件只有在它存在时才会忽略文件未找到错误?
您需要使用“import-path”选项来执行此操作,其中您要导入的路径包含您要导入的后备文件(在我们的例子中,我们需要一个空文件)。
文件结构
├── fallback
├── _example.scss // <-- our blank file
├── _example.scss // <-- the file for the user to customize (optional)
├── style.scss
在 style.scss 中:
@import "example";
/* the rest of our styles */
当你运行你的 sass 命令时,你会这样写:
sass --watch ./css:./sass --load-path ./sass/fallback
请注意,备用目录不必在您的 sass 目录中,它可以在您喜欢的文件系统上的任何位置。
另请参阅:SCSS 如何定位部分?
如果您在多个项目中使用此技术,您可能会发现创建 Compass 扩展会更方便一些。它将自动为您设置加载路径。您可以在此处了解有关创建扩展的更多信息:http: //compass-style.org/help/tutorials/extensions/
也许使用sass-globbing和可选文件的命名约定遵循特定的加载顺序。
考虑以下树:
stackoverflow-14975341/
├── .gitignore
├── config.rb
├── css/
│ └── screen.css
└── sass/
├── optionals/
│ ├── .gitkeep
│ ├── _01_style.scss
│ └── _03_style.scss
└── screen.scss
使用这些文件:
# config.rb
require 'sass-globbing'
sass_dir = 'sass'
css_dir = 'css'
relative_assets = true
和
// sass/screen.scss
@import "optionals/*";
和
// sass/optionals/_01_style.scss
.optional1 {
background-color: red;
}
和
// sass/optionals/_03_style.scss
.optional3 {
background-color: green;
}
并且,对于在.gitignore
:
sass/optional/*
最后,要保留optional
文件夹,创建一个名为的空文件.gitkeep
(文件名不重要)。
当您编译样式表时,screen.css
即使文件_02_style.scss
丢失,Compass 也会生成。
// css/screen.css
/* line 1, ../sass/optionals/_01_style.scss */
.optional1 {
background-color: red;
}
/* line 1, ../sass/optionals/_03_style.scss */
.optional3 {
background-color: green;
}
当然可以基于导入附加路径来改进系统。