在构建时设置direction-scss变量

时间:2017-08-02 10:55:33

标签: angular sass angular-i18n

我使用angular来构建多语言系统,使用angular i18n进行内部化我必须将每种语言构建为不同的包。由于某些语言是RTL,我使用方向scss(而不是导入不同的样式表或在元素上应用f)。

问题是,我不希望在每次构建之前更改代码。我需要在scss变量文件中只更改一个简单的行: 关于RTL语言的library(rBayesianOptimization) Test_Fun <- function(x) { #hacky way of finding 'a' from the calling function #n=6 was "empirically" determined a=get("a",envir=parent.frame(n=6)) list(Score = exp(-a*(x - 2)^2) + exp(-(x - 6)^2/10) + 1/ (x^2 + 1), Pred = 0) } Do_Opt=function () { #it's a requirement of mine that BayesianOptimization is called from Do_Opt a=2 OPT_Res <- BayesianOptimization(Test_Fun, bounds = list(x = c(1, 3)), init_points = 2, n_iter = 1, acq = "ucb", kappa = 2.576, eps = 0.0, verbose = FALSE) } Do_Opt() class=rtl

是否可以从构建脚本中提取此值或其他内容?这将创建更平滑的构建过程。

2 个答案:

答案 0 :(得分:1)

我找到了一个解决方案/解决方法。

  • angular-cli.json我定义了2个应用:ltr和rtl。
  • 在样式下,每个应用程序编译2个不同的文件:
    • directional-scss.scssdirectional-scss-rtl.scss - 与 $dir变量设置为正确的值。
    • style-ltr.scssstyle-rtl.scss - 基本上它们是相同的,但每个都导入正确的方向scss文件。
  • 在我的package.json文件中,我添加了一个脚本来构建所有:"build-all": "npm-run-all --parallel build-en build-i18n:he"
  • 我的构建规则如下所示:"build-en": "ng build --app=ltr --output-path=dist --aot -prod --bh / --locale=en-US",请注意--app=ltr。在其他语言中使用正确的方向进行相同的操作。

多数民众赞成,我现在可以运行这个脚本并构建两种语言!或者在dev和QA的不同端口上同时为它们服务。

答案 1 :(得分:0)

唯一的方法是修改构建过程以包含定义此变量的新导入文件 - 它无法直接从Sass代码访问环境变量。

如果您正在使用Webpack,例如:

https://github.com/webpack-contrib/sass-loader#environment-variables

当然,如果您直接使用配置(而不是使用Angular CLI),或者如果您执行struct,则您只能更改该配置。

相关问题