Выбранный ответ не предлагает жизнеспособного решения.
Практика ОП кажется нерегулярной. Общий / общий файл обычно находится в partials
, стандартном шаблонном каталоге. Затем вам нужно добавить каталог partials
в пути импорта конфигурации, чтобы разрешить партиалы в любом месте вашего кода.
Когда я впервые столкнулся с этой проблемой, я подумал, что SASS, вероятно, дает вам глобальную переменную, аналогичную Node's __dirname
, которая сохраняет абсолютный путь к текущему рабочему каталогу (cwd
). К сожалению, это не так, и причина в том, что интерполяция по директиве @import
невозможна, поэтому вы не можете выполнить динамический путь импорта.
Согласно SASS документы .
Вам необходимо установить :load_paths
в вашей конфигурации Sass. Поскольку OP использует Compass, я буду следовать этому в соответствии с документацией здесь .
Вы можете использовать решение CLI по назначению, но почему? гораздо удобнее добавить его в config.rb
. Было бы целесообразно использовать CLI для переопределения config.rb
(например, различные сценарии сборки).
Итак, предполагая, что ваш config.rb
находится в корневом каталоге проекта, просто добавьте следующую строку:
add_import_path 'sub_directory_a'
А теперь @import 'common';
будет отлично работать где угодно.
Пока это отвечает OP, есть еще.
Приложение
Скорее всего, вы столкнетесь со случаями, когда вы хотите импортировать файл CSS во встроенном виде, то есть не через директиву vanilla @import
, предоставляемую CSS из коробки, а фактический слияние содержимого файла CSS с вашим SASS. Есть еще один вопрос , на который дан окончательный ответ (решение не работает в кросс-среде). Решение в том, чтобы использовать это расширение SASS.
После установки добавьте следующую строку в вашу конфигурацию: require 'sass-css-importer'
и затем где-нибудь в вашем коде: @import 'CSS:myCssFile';
Обратите внимание, что расширение должно быть опущено, чтобы это работало.
Однако мы столкнемся с той же проблемой при попытке импортировать файл CSS по пути, отличному от пути по умолчанию, и add_import_path
не будет учитывать файлы CSS. Таким образом, чтобы решить это, вам нужно добавить еще одну строку в вашем конфиге, которая, естественно, похожа:
add_import_path Sass::CssImporter::Importer.new('sub_directory_a')
Теперь все будет хорошо работать.
P.S.,
Я заметил, что в документации sass-css-importer
указано, что для пропуска расширения .css
требуется префикс CSS:
. Я узнал, что это работает независимо. Кто-то начал выпуск , который до сих пор оставался без ответа.