npm默认依赖特异性

时间:2018-04-04 09:46:26

标签: npm dependency-management

"react": "~16.1.1" 中,如果我指定依赖项,例如

"react": "^16.1.1"

这允许NPM仅更改补丁版本,即它可能使用版本16.1.2,但它不会使用版本16.2.X

同样,如果我指定依赖项,例如

"react": "16.1.1"

这允许NPM仅更改次要版本(中间数字)。

但如果我在依赖版本之前没有任何字符,例如

,该怎么办?
fit()

这是否意味着只能使用版本16.1.1?

1 个答案:

答案 0 :(得分:1)

通过“固定”package.json中的项目依赖项,(即指定semver没有carettilde范围说明符),将导致每次都安装“类似”版本。

举个例子; "react": "16.1.1"中指定了package.json,每次运行16.1.1时,都会导致react npm install版的安装。

然而,(注意我强调单词“类似”),这并不意味着建议通过“pinning”你会得到所有< em>在上次安装软件包时构成react软件包版本16.1.1的“完全相同”文件。原因是其package.json中指定的react依赖关系使用了插入符号和波形符号范围说明符的组合。因此,这些依赖项的版本可能会发生变化。同样,这些依赖项的依赖关系等(也就是:依赖关系树)也会发生变化。

结帐npm-shrinkwrap和/或npm-package-locks,如果您想要真正锁定依赖版本树以供发布。