SASS/Compass: ссылка вместо включения

В настоящее время я работаю над крупным бизнес-сайтом, используя Compass (форк Bootstrap). Мы используем много различных файлов scss, все из них включают base.scss, в котором живут наши переменные и примеси. Теперь мы хотим скомпилировать некоторые необязательные файлы css из наших файлов scss, которые получают переменные из файлов base.scss во время компиляции, но не будут иметь накладных расходов на все другие правила, определенные в базе, включенные в готовый и скомпилированный css-файл. В общем, я ищу способ ссылаться на базовый файл, а не включать его. Я просто хочу, чтобы $companyColor (и т.д.) был заменен значением соответствующей переменной в базовом файле.

Обратите внимание, что я не могу @импортировать потерянные файлы в мой базовый файл, потому что эти файлы перезаписывают некоторые базовые правила и загружаются только на определенных страницах веб-сайта для предоставления альтернативной темы.

Это вообще возможно?

Заранее спасибо!


person armin    schedule 12.10.2016    source источник


Ответы (1)


Не уверен, что полностью понял, о чем вы спросили.

Но если вы хотите, чтобы некоторые переменные из base.scss были включены в другие файлы scss, вы можете разделить base.scss на два файла:

  • shared-vars.scss, содержащий переменные, которые будут включены в необязательные файлы scss
  • base.scss содержит все остальные переменные и примеси, и импортирует shared-vars.scss

Теперь вы можете импортировать base.scss в свои основные файлы scss и импортировать только shared-vars.scss в дополнительные файлы scss.

person Finrod    schedule 12.10.2016
comment
Мне всегда нравилась практика хранения всех переменных в отдельном файле, отдельно от миксинов. - person Dre; 12.10.2016
comment
Да, вы правильно поняли. Я не надеялся на этот ответ, но уже ожидал его. Это был своего рода крайний подход, так как я надеялся, что есть более простой (например, мне не придется выполнять утомительную работу по копированию/вставке) способ добиться этого. Но я думаю, что мне придется сделать именно это... (На самом деле я думаю о том, чтобы заставить моего ученика сделать это... ;-)) В любом случае спасибо за ваше время! - person armin; 12.10.2016
comment
@Dre, согласен. Но в некоторых случаях у вас не может быть только одна переменная.scss. @armin использует это время копирования/вставки, чтобы также создать mixins.scss со всеми миксинами, это всегда лучше для обслуживания. И не забудьте принять мой ответ ;) - person Finrod; 12.10.2016