Вибрана відповідь не пропонує життєздатного рішення.
Практика ОП здається нерегулярною. Спільний / загальний файл, як правило, живе 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