Как импортировать файл scss в компас, только если он существует?

Мне нужно иметь специальный файл scss, который отличается для каждой установки проекта, поэтому я нене хочу включать его в архив git. Но все должно работать, даже если этот файл нене существует.

Есть ли способ @import scss файл, только если он существует, игнорируя файл не найдена ошибка?

 cimmanon20 февр. 2013 г., 13:56
Какие'не так просто включить пустой файл?
 Andrey Kuzmin20 февр. 2013 г., 15:50
Мне нужно поставить его под контроль исходного кода, поэтому эти зависящие от проекта модули scss должны быть обработаны.

Ответы на вопрос(2)

дерзость-подстановка и соглашение об именовании для дополнительных файлов следует определенному порядку загрузки.

Рассмотрим следующее дерево:

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 (имя файла не важно).

Когда вы компилируете таблицу стилей, Compass генерируетscreen.css даже если файл_02_style.scss пропал, отсутствует.

// 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;
}

Конечно, можно улучшить систему, основанную на импорте дополнительных путей.

 piouPiouM20 февр. 2013 г., 15:48
Это ближе к решению, описанному @cimmanon.
 Andrey Kuzmin20 февр. 2013 г., 13:11
Так что я думаю, что это невозможно из коробки без дополнительных плагинов? Я думал о возможности переопределить конкретный модуль scss, имея два пути для поиска модуля 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, он должен находиться где угодно в файловой системе.

Смотрите также:Как SCSS определяет местонахождение частичек?

Вариант 2: расширение компаса

Вы можете обнаружить, что создание расширения Compass немного удобнее, если выВы используете эту технику в нескольких проектах. Он автоматически установит путь загрузки для вас. Вы можете узнать больше о создании расширений здесь:http://compass-style.org/help/tutorials/extensions/

 Andrey Kuzmin20 февр. 2013 г., 16:01
Спасибо, это то, что мне нужно. Я на самом деле пошел немного по-другому, и установитьadditional_import_paths = ["./lib"] где я разместил модули, которые могут быть переопределены, так что он ищет локальные файлы, а затем внутри "./lib»

Ваш ответ на вопрос