在vNext构建中并行运行脚本解决方案

82次阅读
没有评论

问题描述

在使用TFS 2017和vNext进行构建时,遇到了一个问题。虽然构建过程是正常工作的,但需要花费超过20分钟的时间。该构建涉及到使用msbuild、ngc、yarn和karma等工具。用户想要缩短构建时间,已经通过在本地计算机、虚拟机以及直接在构建服务器上(远程登录服务器)运行其中的两个yarn脚本来成功减少了至少8分钟的构建时间。然而,用户尝试通过vNext在并行运行这两个脚本时,每次都会遇到相同的错误。

解决方案

为了解决这个问题,我们可以尝试对构建脚本进行优化,并在vNext构建过程中并行运行这些脚本,从而减少构建时间。

步骤

  1. 首先,我们要注意到问题是由于ngc和webpack之间的冲突引起的。在构建脚本中,当将rimraf aot && ngc -p ./tsconfig-aot.json移到自己的脚本中并在testbuild:prod:aot之前执行,通过使用npm-run-all并行运行这些脚本就会如预期地工作。

  2. 另外,避免使用PowerShell来运行脚本,因为PowerShell对一些输出的解释与Windows shell不同。例如,某些软件包可能会将“警告”写入错误流中,从而引起混淆。建议仍然使用Windows shell运行这些脚本。

优化后的构建脚本

在构建脚本方面,我们可以做出以下优化,从而在vNext构建中实现脚本的并行运行和更快的构建时间。

"build:prod:aot": "rimraf aot && ngc -p ./tsconfig-aot.json",
"webpack:prod": "SET NODE_ENV=production&& webpack",
"test": "SET NODE_ENV=test&& karma start karma.conf.js",
"buildAndTest": "npm-run-all build:prod:aot --parallel test webpack:prod"

在上述代码中,我们将rimraf aot && ngc -p ./tsconfig-aot.json移到了build:prod:aot脚本中,以及定义了一个buildAndTest脚本,使用npm-run-all在并行运行build:prod:aottestwebpack:prod脚本,从而实现更快的构建时间和并行运行的效果。

通过以上优化,你应该能够在vNext构建中并行运行脚本,从而减少构建时间并提高构建效率。

请注意:以上操作可能涉及版本差异或对构建系统的修改,请务必在进行操作之前备份你的数据。

这就是针对你提供的问题的解决方案。希望能对你有所帮助!如果还有其他问题或疑问,请随时提问。

正文完