【问题标题】:In production, should i clean and reinstall node_modules everytime I deploy?在生产中,我是否应该在每次部署时清理并重新安装 node_modules?
【发布时间】:2018-07-12 08:01:12
【问题描述】:

我们有超过 10 个 prod 服务器实例,每次我们更新依赖项时,清理和重新安装听起来更受控制,但也有点慢。

问题是 devops 团队抱怨每次 package.json 更改时执行清理(删除现有 node_modules 后)npm install 所花费的时间。 我们注意到,如果我们在现有 node_modules 上运行更新或安装,有时我们的构建会中断。

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

【问题讨论】:

  • npm 具有一定的不确定性,这就是创建 yarnpkg.com 的原因。您应该能够使用它对依赖项进行安全更新。或者,我会尝试某种方式将依赖项捆绑到已知良好的存档中,而不是在生产环境中进行安装。
  • 您可以使用npm-ci。此命令与 npm-install 类似,不同之处在于它用于自动化环境,例如测试平台、持续集成和部署——或任何需要确保干净安装依赖项的情况。

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


【解决方案1】:

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

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

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

还有另一个名为“yarn”的包管理器提供相同的功能,但如果你想坚持使用 npm,那么现在可以使用新的 npm 版本。

【讨论】:

【解决方案2】:

几个月后,我对此感到头疼。我在 NPM 上遇到了这个包: npm-check-updates.

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

你所要做的就是跑

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

这对我来说效果很好。

【讨论】:

    猜你喜欢
    • 2021-08-02
    • 2016-11-01
    • 2017-09-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-07
    • 2012-08-22
    相关资源
    最近更新 更多