在生产中,每次部署时都应清理并重新安装node_modules吗?

时间:2018-07-12 08:01:13

标签: javascript node.js npm npm-install npm-scripts

我们有10个以上的prod服务器实例,每次更新依赖关系时,清理和重新安装的声音都受到更好的控制,但速度也有所降低。

问题是devops团队抱怨每次package.json更改时进行清理(除去现有的node_modules之后) npm install 所花费的时间。 如果确实在现有的node_modules上运行update或install,我们有时会发现在prod上的构建中断。

是否有用于生产部署的最佳实践? 我如何在这里优化安全地更新node_modules的过程?

2 个答案:

答案 0 :(得分:0)

在较新的npm版本中,有一项功能可以锁定依赖项的版本。

与package.json一起存在一个名为package-lock.json的文件。那个锁文件 在开发环境上安装依赖版本时,它将锁定依赖版本。因此,当您使用npm install从package.json将其安装到生产环境时,它将从package-lock.json文件中获取锁定版本,并将安装与开发环境相同的特定版本。

这意味着您不需要在每次生产时都清洁node_module文件夹。您可以只从package.json文件安装新添加的依赖项,其版本将从package-lock.json文件中获取。

还有一个名为“ yarn”的软件包管理器,它提供相同的功能,但是如果您坚持使用npm,则现在可以在新的npm版本中使用它。

答案 1 :(得分:0)

几个月后,我对此感到震惊。我在NPM上遇到了这个软件包: npm-check-updates

npm-check-updates允许您将package.json依赖项升级到最新版本。

您所要做的就是运行

  • npm安装npm-check-updates --save
  • ncu -u
  • npm安装

这对我来说很好。