如果团队开发人员A安装包:
npm install a-cool-package
然后将他/她的代码推送到回购。
开发人员B执行git pull
以获得更新的package.json和package-lock.json以及任何更改的文件(可能是为了使用酷包(。
然后Dev B需要说npm install
才能使用最新版本的应用程序。
这样做的目的是什么?是为了用酷包及其所有依赖项更新本地node_modules文件夹吗?我认为这是真的,因为您没有在repo中包括node_modules。我说得对吗?
第2部分:当Dev B执行npm install
时,所有有更新的软件包都将更新(即,只有典型设置的次要级别和修补程序级别(。
如果你不想破坏东西,但你需要Dev A的东西,有没有其他选择?还是你总是在package.json更改后运行npm install
,并希望没有任何中断?
我发现自己对典型的工作流程应该是什么感到困惑,以确保最少的停机时间和代码共享。我担心软件包的更新会有破坏性的更改,我所做的只是运行install来获得另一个开发人员所拥有的。
或者我应该为他安装的特定软件包进行npm安装吗?npm install a-cool-package
第1部分-关于NPM和依赖关系
NPM是一个软件包管理器。它管理包,这些包是您的依赖项。这些位于node_modules
目录中。
您不提交node_modules
,因为依赖关系可能很大,有时(使用插件(它们只在安装了它们的机器上工作。避免提交依赖项的另一个原因是,有人可能会修改它们,然后当你更新包时,你的项目就会中断。
TL;博士。是的。npm install
(缩写:npm i
(安装package.json
到node_modules
中列出的包
第2部分-跟踪依赖关系的版本
package.json
package.json
跟踪您的项目应该兼容的包的哪些版本(从语义上讲(。可以将其视为软件包版本规范。
package-lock.json
package-lock.json
跟踪上次运行npm install
时安装的软件包的版本,包括可传递的依赖项。这意味着确切的版本,这里没有使用范围。可以将其视为包版本实现。
选择其中一个
您可以使用npm ci
而不是npm i
(或npm install
(来安装确切的版本,而不是查找应该兼容的最新版本。