【问题标题】:How to use npm with source control and multiple developers如何将 npm 与源代码控制和多个开发人员一起使用
【发布时间】:2021-08-31 15:37:49
【问题描述】:

我有一个 Angular 应用程序,我想使用 Ant 脚本将其捆绑在一个 jar 文件(包含后端)中。
此 Ant 脚本应安装/更新依赖项(使用 npm),然后使用 Angular CLI 构建应用程序。
它将由多个开发人员在多个环境中使用,并且并非所有开发人员都必须处理前端,因此要求应尽可能低。
理想情况下,只需要在所有 PC 上安装 NodeJS
因此,在构建网页之前,Ant 脚本必须确保所有依赖项都已安装并且是最新的。
现在我可以想到多种方法来做到这一点,但是我不确定哪一种是最好和最稳定的方法:

  1. 删除node_modules 文件夹并使用npm install重新安装所有模块。
    这可能很节省,但速度很慢,因为 Angular-Applications 有大量的依赖项需要下载。
  2. 使用npm install,而不是先删除node_modules
    这会更快,但一些库(例如 Angular CLI)建议在更新时进行全新安装。
  3. 使用npm update。这样,不仅会安装依赖项,还会更新以匹配最新的可能版本(^~ 将影响更新)。

目前我使用npm install,如果node_modules-文件夹不存在,否则npm update
主要问题是,npm update 可能会更改 package.lock.json,这是版本控制的(如 npm 文档所建议的那样)并导致合并冲突。

所以基本上我正在寻找一种方法来在构建脚本中安装所有需要的依赖项(只有 NodeJS 是所有开发人员的要求),而不涉及版本化文件。

【问题讨论】:

    标签: node.js angular npm


    【解决方案1】:

    选项#1 是要走的路。您应该只拥有包含项目所有依赖项的 package.json 文件。没必要,这只是必须包含 node_modules 的方式。

    【讨论】:

    • 但是使用这种方法,每个构建都必须安装所有依赖项,即使它们自上次安装以来没有更改。所以构建过程会减慢几分钟。
    • 最轻的是什么意思? #2 选项只会安装依赖项,如果它们尚未安装(由于最后一次构建)。 node_modules 将永远不会包含在源代码管理中,如果您的意思是这样的话。
    • 但是他必须在他的存储库中携带 node_modules,这是一个很大的禁忌。
    • 考虑使用yarn,这会在本地缓存包,如果需要,每次后续安装都会从缓存中复制。尽管新版本的 npm (5) 在某种程度上做到了这一点,但在我的经验中它远没有 yarn 快
    • node_modules 永远不会在存储库中,只会在运行构建脚本的开发人员的本地 PC 上。因为他们不需要处理它,所以这不是问题(磁盘空间应该不是问题)。
    【解决方案2】:

    似乎npm ci(以持续集成命名)是这里的方法。
    npm ci 使用锁定的依赖项表单 package-lock.json 进行全新安装,并检查它们是否与 @ 中的依赖项匹配987654325@。所以它不会写入package-lock.json,安装似乎比npm install快一点,因为它知道要安装的确切版本,而npm install必须搜索确切的版本。
    一个很好的差异总结可以喜欢here

    【讨论】:

      猜你喜欢
      • 2020-03-18
      • 1970-01-01
      • 2023-03-16
      • 2011-05-28
      • 2011-07-01
      • 2012-02-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多