我正在使用基于NPM的工具(grunt)构建HTML5前端.
我的持续集成构建过程的第一步是运行一个npm install.
npm install很慢.即使使用本地NPM代理缓存工件(Sonatype的Nexus 3),它仍然需要4分钟!
$> time npm install
real 4m17.427s
user 0m0.170s
sys 0m0.290s
Run Code Online (Sandbox Code Playgroud)
如果我按照通常的最佳实践进行持续集成,我将从一个原始的SCM存储库开始并运行构建.这意味着每次CI构建都必须重新开始npm install并承担4分钟的费用.
这是一个显著的我的编译时间比例.我不满意构建需要这么长时间.
替代方案似乎是node_modules在构建之间保持一致.但是,我遇到了构建变得不稳定的问题.
删除依赖项package.json并不会node_modules简单地删除它们npm install.我可以用npm prune第一个来解决这个问题.
什么被认为是最佳做法?
考虑到为了构建你必须安装新的包,你别无选择,只能调用 install。至于原始,我坚信他们指的是“构建”过程,而不是“依赖管理”过程。
为什么它们不同?让我们看一个例子以使其更加明显。
作为一名开发人员,当您第一次开始工作时,您必须“安装”能够编码的软件。这通常完成一次。之后就可以开始编码了。后者是“构建”部分,因为您正在为代码产生的每个功能生成价值。您可以不时地通过删除、添加或更新工具来更新工具列表。
在这个例子中,每天上班前在开始编码之前安装工具将是地狱。
我建议您确保构建过程(这意味着生成工件(例如 Jar))与依赖项安装过程分离。这意味着安装一次完成,构建就可以顺利进行。你没有提到要构建什么,但 grunt 肯定可以处理剩下的事情。
因此,我认为修剪和安装是一个很好的策略。第一次你不应该担心。将其视为冷启动。任何使用作为管道一起工作的子组件实现的系统都存在这个“问题”。以汽车为例。启动时的燃油效率不如一小时后驾驶时的燃油效率。
| 归档时间: |
|
| 查看次数: |
816 次 |
| 最近记录: |