我知道这有很多问题,我发现npm ci应该不会更改 package-lock.json 的命令,但是当我运行时npm ci它失败了:
ERR! cipm can only install packages when your package.json and package-lock.json or npm-shrinkwrap.json are in sync. Please update your lock file with `npm install` before continuing.
Run Code Online (Sandbox Code Playgroud)
还尝试了另一种解决方案,包括删除我的 node_modules 目录并npm i再次运行,但这并没有改变结果。
我是一名与团队远程合作的初级开发人员..我接到了一项任务,所以我在 Gitlab 上创建了一个新分支,将其拉到我的本地机器上并运行npm i以加快速度......
但它不断地改变我的 package-lock.json 戏剧性(它增加了 20,000 行代码)
在我看来,将其提交给团队的项目似乎很疯狂。有人有建议吗?
更新:OP 最终需要使用yarn他们的团队和项目所使用的。如果有人yarn.lock在他们的项目根目录中找到 a ,这表明yarn涉及到任何package-lock.json,如果有的话,可能已经过时了。
TL;DR:听起来package-lock.json需要一些更新和解决方案,这主要是通过npm install.
听起来package-lock.json不再“同意”您的package.json. 听起来您团队中的其他人也避免将更改提交给您的package-lock.json; 根据我的经验,这是一种不好的做法,因为它只会加深其内容的任何分歧。随着时间的推移,当依赖项的依赖项可能发布错误修复版本并可能取消发布以前的版本时,它们可能会不同步。
作为这个团队的初级开发人员,我会向你的开发/团队负责人提出这个问题,并在这里询问他们的首选方法。如果有意删除了一个主要依赖项并且它有很多自己的依赖项,则可能会导致大量行的删除,package-lock.json并且对不太习惯它的人来说看起来很严重。
额外的上下文:
在安装过程中,npm 会安装package.json. 在这个过程中,随着时间的推移,这些依赖项的一些需要执行的依赖项有可能并且越来越有可能会重叠,并且经常具有冲突的版本。的执行npm i(nstall)将尝试为您协调所有这些竞争版本的子依赖项。
在持续集成上下文中,最好使用备用命令npm ci,该命令仅显式安装已解析的内容package-lock.json(以前称为“shrinkwrap”)。这是为了减少“但它在我的机器上工作!” 时刻。作为开发人员,我发现使用它更好npm install,因为这可以更快地提醒开发人员注意任何依赖项解决问题并保持package-lock.json最新状态。
由于这篇文章得到了如此多的浏览,我想我应该回来发布我发现的内容。
Yarn 和 NPM 都会更新和安装包和依赖项,但区别在于:
yarn创建一个名为yarn.lock
npm install创建一个名为package-lock.json.
我当时并不知道这一点,所以当我将项目存储库克隆到本地计算机时,我运行了npm i它创建了package-lock.json. 然而,我的队友已经在使用了yarn。
因此,请确保您使用的是已经在使用的产品。
| 归档时间: |
|
| 查看次数: |
3784 次 |
| 最近记录: |