问题描述
在使用TFS 2017和vNext进行构建时,遇到了一个问题。虽然构建过程是正常工作的,但需要花费超过20分钟的时间。该构建涉及到使用msbuild、ngc、yarn和karma等工具。用户想要缩短构建时间,已经通过在本地计算机、虚拟机以及直接在构建服务器上(远程登录服务器)运行其中的两个yarn脚本来成功减少了至少8分钟的构建时间。然而,用户尝试通过vNext在并行运行这两个脚本时,每次都会遇到相同的错误。
解决方案
为了解决这个问题,我们可以尝试对构建脚本进行优化,并在vNext构建过程中并行运行这些脚本,从而减少构建时间。
步骤
-
首先,我们要注意到问题是由于ngc和webpack之间的冲突引起的。在构建脚本中,当将
rimraf aot && ngc -p ./tsconfig-aot.json
移到自己的脚本中并在test
和build:prod:aot
之前执行,通过使用npm-run-all
并行运行这些脚本就会如预期地工作。 -
另外,避免使用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:aot
、test
和webpack:prod
脚本,从而实现更快的构建时间和并行运行的效果。
通过以上优化,你应该能够在vNext构建中并行运行脚本,从而减少构建时间并提高构建效率。
请注意:以上操作可能涉及版本差异或对构建系统的修改,请务必在进行操作之前备份你的数据。
这就是针对你提供的问题的解决方案。希望能对你有所帮助!如果还有其他问题或疑问,请随时提问。