2013-02-20 43 views
5

我需要为项目的每个安装都有特殊的scss文件,所以我不想将它包含在git压缩文件中。但即使这个文件不存在,一切都应该工作。如何仅在存在指南针时才导入scss文件?

是否有任何方法可以@import scss文件只有存在,忽略文件未找到错误?

+2

仅包含空白文件有什么问题? – cimmanon 2013-02-20 12:56:23

+0

我需要把它放在源代码控制之下,所以这些项目相关的scss模块应该被gitignored。 – 2013-02-20 14:50:09

回答

5

您需要使用“导入路径”选项才能执行此操作,其中要导入的路径包含要导入的后备文件(在我们的情况下,我们需要一个空文件)。

选项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/

+0

谢谢,这是我需要的。我实际上采取了一些不同的方式,并设置了'additional_import_paths = [“./lib”]'我放置了可能被覆盖的模块,因此它查找本地文件,然后在“./lib” – 2013-02-20 15:01:58

2

也许与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; 
} 

当然可以根据导入附加路径改进系统。

+0

所以我想这是不可能的,没有额外的插件?我想通过有两个scss模块查找路径来覆盖特定scss模块的可能性。所以如果没有找到覆盖模块,那么将导入默认的模块。可能吗? – 2013-02-20 12:11:50

+0

这更接近@cimmanon概述的解决方案。 – piouPiouM 2013-02-20 14:48:02