28

在少我可以做这样的事情

@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 中做到这一点?

4

2 回答 2

13

您不能在 SASS 中使用条件内容进行导入。

考虑从您的项目中创建一个Compass扩展。

于 2013-07-11T18:42:28.433 回答
10

如前所述,您不能在导入路径中使用变量。您可以做的是使用-Ior--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 选项文档

于 2015-12-11T15:31:14.907 回答