7

我需要为项目的每个安装提供不同的特殊 scss 文件,所以我不想将它包含在 git 存档中。但即使这个文件不存在,一切都应该工作。

有没有办法@import scss 文件只有在它存在时才会忽略文件未找到错误?

4

2 回答 2

5

您需要使用“import-path”选项来执行此操作,其中您要导入的路径包含您要导入的后备文件(在我们的例子中,我们需要一个空文件)。

选项 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 目录中,它可以在您喜欢的文件系统上的任何位置。

另请参阅:SCSS 如何定位部分?

选项 2:指南针扩展

如果您在多个项目中使用此技术,您可能会发现创建 Compass 扩展会更方便一些。它将自动为您设置加载路径。您可以在此处了解有关创建扩展的更多信息:http: //compass-style.org/help/tutorials/extensions/

于 2013-02-20T13:16:07.507 回答
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(文件名不重要)。

当您编译样式表时,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;
}

当然可以基于导入附加路径来改进系统。

于 2013-02-20T11:36:48.503 回答