我使用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
。
是否可以从构建脚本中提取此值或其他内容?这将创建更平滑的构建过程。
答案 0 :(得分:1)
我找到了一个解决方案/解决方法。
angular-cli.json
我定义了2个应用:ltr和rtl。 directional-scss.scss
和directional-scss-rtl.scss
- 与
$dir
变量设置为正确的值。style-ltr.scss
和style-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
,则您只能更改该配置。