Ответ 1
Вы не можете использовать условный материал для импорта в SASS.
Рассмотрите возможность создания расширения Compass из вашего проекта.
В Меньше я могу сделать что-то вроде этого
@basePath:"../../some_crazy_project_path_to_repeat/less/";
@import "@{basePath}less.less";
Поэтому я попытался сделать то же самое в Sass
$basePath:"../../some_crazy_project_path_to_repeat/less/";
@import "${basePath}less.scss";
// Syntax error: File to import not found or unreadable: ${basePath}less.scss.
и
@import "#{basePath}less.scss";
// Syntax error: File to import not found or unreadable: #{basePath}less.scss.
Есть ли способ сделать это в Sass?
Вы не можете использовать условный материал для импорта в SASS.
Рассмотрите возможность создания расширения Compass из вашего проекта.
Вы не можете использовать переменные в пути импорта, как уже упоминалось. Что вы можете сделать, это использовать параметр -I
или --load-path
, чтобы указать каталог для поиска.
sass --watch sass/:css/ --load-path ../../path/to/library/
Скажем, у вас есть структура каталогов:
themes
hotdog
_variables.scss
classic
_variables.scss
styles.scss
В ваших styles.scss должны быть пути импорта, относящиеся к предоставленным маршрутам (-ам) загрузки:
// note the import here doesn't contain themes, hotdog, or classic
@import "variables";
@debug $foo;
Ваши команды будут выглядеть примерно так:
# hotdog
sass styles.scss hotdog.css --load-path ./themes/hotdog/
# classic
sass styles.scss classic.css --load-path ./themes/classic/
Дополнительную информацию см. в Документация параметров Sass.