首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >运行角i18并行生成

运行角i18并行生成
EN

Stack Overflow用户
提问于 2019-06-05 14:08:34
回答 2查看 2.1K关注 0票数 0

我在我的角应用程序中支持11种语言,我使用的是角的内置国际化(XLF文件)。做一个发行版需要花费很长时间(因为它构建了11次应用程序!)如何并行运行构建任务(我有一个4核CPU)?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-06-05 15:33:29

因为我不想为了将来添加一种新的语言而改变代码(我想是DevOps友好的方法吧!)最后我编写了一个shell脚本( DevOps将使用该脚本):

代码语言:javascript
复制
for arg; do \
    echo "Building for $arg"
    ng build --output-path $PROJECT_ROOT/public/$arg \
         --aot \
         --prod \
         --base-href /$arg/ \
         --i18n-file $LANGUAGE_ASSETS_DIR/i18n/$arg.xlf \
         --i18n-format xlf \
         --i18n-locale $arg & \
done
wait

然后添加了i18n npm任务:

代码语言:javascript
复制
"build:i18n": "bash $PROJECT_ROOT/i18n.sh $LANGS",

以及:

代码语言:javascript
复制
LANGS= en de fr ...

ng build命令末尾的符号是分叉新进程,这使得它成为并行的。我获得了60 %的构建时间改进。

为了增加对新语言的支持,DevOps所需要做的就是将转换的xlf文件添加到资产中(在我们的情况下,在AWS S3桶中单独托管),然后用新的语言环境更新LANGS环境变量,最后触发构建任务(没有代码更改)。

编辑:

还需要在for循环的末尾添加“等待”命令,以等待所有任务的完成。

票数 1
EN

Stack Overflow用户

发布于 2020-02-19 14:46:43

关于文档:我在Jenkins管道中的上述方法

代码语言:javascript
复制
def knownLocales = ["en-CH","en-US","en-GB","de-CH","de-DE"]
def ngAotBuildMap = [:]

steps {
    script {
        for (aot_locale in knownLocales) {
            // beware of how Groovy creates closures in loops
            String aotLocaleClosure = "${aot_locale}"

            ngAotBuildMap[aot_locale] = {
                sh """
                    echo "Building locale ${aotLocaleClosure}"
                    cd $WORKSPACE/webclient
                    rm -R -f $WORKSPACE/webclient/dist/${aotLocaleClosure}/
                    ng build --no-progress --configuration=${params.PARAM_SPRING_PROFILE}-${aotLocaleClosure}
                """
            }
        }

        // https://stackoverflow.com/questions/37333796/using-failfast-with-closure-map-breaks-parallel-step/37356318
        ngAotBuildMap.failFast = true
        parallel ngAotBuildMap
    }
}

然而:在连续构建中,一个AOT构建花费了3分钟30秒,在5个地区总共需要18分钟左右。使用上面的脚本,1 AOT构建需要15分钟30秒,总时间几乎没有变化。我猜在我的例子中,服务器资源已经在顺序构建中被最大化了,所以并行构建不会增加太多。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56462203

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档