基于环境设置的Sass条件

时间:2013-02-14 15:14:54

标签: sass compass-sass

在Compass config.rb文件中,您可以将environment设置为:development:production

是否可以在Sass条件中使用此设置?这就是我想要做的事情:

@if (environment === :development) {
    @import 'debug';
}

解决:我在起草问题时找到了答案。无论如何都要发帖,因为我没有发现任何确切的解释这个问题。

2 个答案:

答案 0 :(得分:10)

部分感谢Compass存储库中的this issue,我发现你可以在Sass中使用基于设置的条件,如下所示:

@if compass-env() == 'development' {
    body {
        color: red;
    }
}

确认这适用于Sass 3.2.5 + Compass 0.12.2 + Ruby 1.9.3p194。

但是你不能这样做:

@if compass-env() == 'development' {
    @import 'debug';
}

抛出语法错误:“导入指令不能在控制指令或mixins中使用。

因此,解决方法是@import文件,然后将其全部内容包装在条件环境中。

答案 1 :(得分:0)

这可以通过在动态生成的SCSS文件中存储环境信息来完成(在Compass不可用时),然后可以将其导入任何需要此信息的地方。这应该在启动SASS编译器之前完成。

构建脚本如下所示(即build.sh):

#!/bin/bash

echo "\$ENV: 'production';" > ./_sass/env.scss

../node_modules/.bin/node-sass ./_sass/style.scss   ../_site/css/style.css --source-map=true

可以像这样使用此SCSS文件:

@import 'env';

@if ($ENV == 'production') {
   ...
   // some SCSS styling to be used in production only
   ...
}