如何仅在存在指南针时才导入scss文件?
我需要为项目的每个安装都有特殊的scss文件,所以我不想将它包含在git压缩文件中。但即使这个文件不存在,一切都应该工作。如何仅在存在指南针时才导入scss文件?
是否有任何方法可以@import scss文件只有存在,忽略文件未找到错误?
您需要使用“导入路径”选项才能执行此操作,其中要导入的路径包含要导入的后备文件(在我们的情况下,我们需要一个空文件)。
选项1:香草萨斯
文件结构
├── 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目录中,它位于您喜欢的文件系统的任何位置。
参见:How does SCSS locate partials?
选项2:北斗扩展
您可能会发现创建一个指南针扩展更方便一点,如果你正在使用在多个项目中这种技术。它会自动为您设置负载路径。您可以在此处了解有关创建扩展程序的更多信息:http://compass-style.org/help/tutorials/extensions/
谢谢,这是我需要的。我实际上采取了一些不同的方式,并设置了'additional_import_paths = [“./lib”]'我放置了可能被覆盖的模块,因此它查找本地文件,然后在“./lib” – 2013-02-20 15:01:58
也许与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
一个空文件(文件名并不重要)。
当您编译样式表时,即使文件_02_style.scss
缺失,Compass也会生成screen.css
。
// 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;
}
当然可以根据导入附加路径改进系统。
所以我想这是不可能的,没有额外的插件?我想通过有两个scss模块查找路径来覆盖特定scss模块的可能性。所以如果没有找到覆盖模块,那么将导入默认的模块。可能吗? – 2013-02-20 12:11:50
这更接近@cimmanon概述的解决方案。 – piouPiouM 2013-02-20 14:48:02
仅包含空白文件有什么问题? – cimmanon 2013-02-20 12:56:23
我需要把它放在源代码控制之下,所以这些项目相关的scss模块应该被gitignored。 – 2013-02-20 14:50:09