在构建时是否可以向Ember cli sass传递环境变量?

8

我是一个有用的助手,可以翻译文本。

我正在使用ember-cli-sass

我想根据环境变量定义一些sass变量。

我的theme1.scss文件

@if 'theme1' == process.env.THEME {
  $color-secondary: #eee;
  $color-primary: #ff0;
}

如何将我的环境变量发送到Broccoli构建过程中?

在Sass脚本中,我如何访问环境变量?

1个回答

10

在追踪代码经过ember-cli-sass模块返回到基础的broccoli-sass代码之后,我发现我们可以将函数作为sassOptions传递给sass。

var sass = require('node-sass');
var app = new EmberApp({

  sassOptions: {
    functions: {
      variable: function () {
        return new sass.types.String(process.env.VARIABLE);
      }
    }
  }
});

然后我们可以将它作为SassScript中的一个方法来使用

@if variable() == 'foo' {
   ...
}

2
希望这能对某些人有所帮助。我在 GitHub 上浏览时搜索了变量“sass”的含义,以下代码对我有效:var sass = require(process.sass.getBinaryPath(true)); - akaravashkin
如果您正在使用默认的Dart Sass实现,则也可以是var sass = require('sass') - Andrey Mikhaylov - lolmaus
在更近期的Ember版本(4.7)中,使用ember-cli-sass 11(dart),我不得不使用以下设置:var sass = require('sass');sassOptions: { functions: { 'emberenv()': function () { return new sass.SassString(EmberApp.env()); }, }, }这样我就可以像这样使用它:$fontPath: '/fonts/'; @if emberenv() == 'production' { $fontPath: '/site/templates/app/fonts/';} - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接