团队中包锁文件版本来回切换正常吗?

问题描述 投票:0回答:2

在给定的场景中,新的 Dev A 拥有新版本的 npm (8.3)。他克隆了存储库,npm 说 package.lock 文件需要从 lockFile 版本格式 1 升级到版本 2。然后他将其签入。所以现在存储库有一个格式版本 2 的锁定文件,其他开发人员拉取了那下来。

时间流逝,没有任何问题。然后使用版本 6.13 的开发人员 B 安装一个软件包。锁文件从版本2改回版本1正常吗?换句话说,每次使用不同版本的 npm 且采用不同格式的开发人员升级或安装软件包时,根据其 npm 版本及其格式一遍又一遍地更改 lockfileVersion 格式是否正常?或者应该保留lockFileVersion 2?

尝试确定我们的包裹最近发生了什么,我希望将其排除为可能的问题。

据我所知,fileLockVersion 2 应该是向后兼容的。但它应该这样来回变化吗?我不这么认为,因为拥有版本 2 的人(开发人员 A)如何使用版本 1 如果 首先需要升级到版本 2?

那么我是否正确,一旦进入版本 2,就应该保持这种状态?如果是这样,什么会导致它回到版本 1。

谢谢

npm node-modules package.json package-lock.json
2个回答
2
投票

不,对于开发人员来说,不断地翻转版本并不“正常”,但这种情况的发生是相当“常见”的。我们也遇到过这种情况,特别是package-lock.json,所以我们告诉每个人都要升级,并且我们确保升级我们所有的构建代理。同样,在 Visual Studio 解决方案中,一些开发人员偶尔会将 VS 的版本从 2017 年到 2019 年来回更改几次,然后我们告诉大家只需升级到 2019 年即可。

一般来说,如果可能的话最好避免。
    

经过一些研究,许多团队建议开发人员不要使用

npm i

0
投票
package.json

定义中的软件包,而是使用

package-lock.json
文件中的 npm ci
“clean slate”
)。这将确保每个人在其 node_modules 文件夹中使用相同的版本,而不是下载时 NPM 注册表中的最新版本。 为此,您需要将锁定文件提交到代码存储库,并对谁以及何时更新它有非常严格的规则。当然,如果任何开发人员决定使用 npm i 并提交文件,它将不起作用。

官方文档
指出“此文件旨在提交到源代码存储库中”,很多人都这样做。它假设每个人都知道他们应该使用

ci

而不是 i

install
命令。
    

© www.soinside.com 2019 - 2024. All rights reserved.