Вибрана відповідь не пропонує життєздатного рішення.
Практика ОП здається нерегулярною. Спільний / загальний файл, як правило, живе partials
в стандартному типовому каталозі. Потім слід додати partials
каталог до шляхів імпорту конфігурації, щоб вирішити частинки в будь-якому місці вашого коду.
Коли я вперше зіткнувся з цією проблемою, я зрозумів, що SASS, ймовірно, дає вам глобальну змінну, подібну до Node __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';
буде працювати нормально де завгодно.
Хоча це відповідає на ОП, є й більше.
Додаток
Ймовірно, ви зіткнетеся з випадками, коли ви хочете імпортувати файл CSS вбудованим способом, тобто не за допомогою ванільної @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')
Тепер все буде працювати приємно.
PS, я помітив, що sass-css-importer
документація вказує на CSS:
необхідність префікса на додаток до опускання .css
розширення. Я виявив, що це працює незалежно. Хтось запустив випуск , який досі залишався без відповіді.
-I
? Якщо це ім’я шляху зміниться, буде багато пошуку та заміни; і для цього потрібна однакова структура локальних папок для всіх, хто ділиться .scss