语义版本控制问题和 npm 5 或更高版本
Semantic versioning issue and npm 5 or above
你能告诉我为什么我们需要 NPM 5
或更高版本来避免语义版本控制问题吗?换句话说,我们如何避免使用 package-lock.json
文件呢?如果我们在同一个项目的所有开发机器上使用相同的 package.json
文件,我们不能避免这个问题吗?我有点困惑here.Hope你会为此提供反馈。
如果您的 package.json
文件列出如下包,则可以避免这种情况:
"@angular/core": "4.2.6",
"@angular/forms": "4.2.6",
"@angular/http": "4.2.6",
而不是
"@angular/core": "^4.2.6",
"@angular/forms": "^4.2.6",
"@angular/http": "~4.2.6",
通过从 package.json
中删除波浪号或 cap(~, ^) 符号,npm 将在所有机器上安装完全相同的版本。但是添加波浪号或大写符号是安全的,因此您可以在不更新文件的情况下安装包的小版本更新。但有时这可能会导致问题,当包开发人员在小版本中打包重大更改时。
package-lock.json
会做同样的事情,它会删除波浪号或大写符号,并标记要安装的包的具体版本。并且在安装包时会优先获取包版本信息的锁定文件。
编辑:Youtube 上 Angular University 的精彩解释。
你能告诉我为什么我们需要 NPM 5
或更高版本来避免语义版本控制问题吗?换句话说,我们如何避免使用 package-lock.json
文件呢?如果我们在同一个项目的所有开发机器上使用相同的 package.json
文件,我们不能避免这个问题吗?我有点困惑here.Hope你会为此提供反馈。
如果您的 package.json
文件列出如下包,则可以避免这种情况:
"@angular/core": "4.2.6",
"@angular/forms": "4.2.6",
"@angular/http": "4.2.6",
而不是
"@angular/core": "^4.2.6",
"@angular/forms": "^4.2.6",
"@angular/http": "~4.2.6",
通过从 package.json
中删除波浪号或 cap(~, ^) 符号,npm 将在所有机器上安装完全相同的版本。但是添加波浪号或大写符号是安全的,因此您可以在不更新文件的情况下安装包的小版本更新。但有时这可能会导致问题,当包开发人员在小版本中打包重大更改时。
package-lock.json
会做同样的事情,它会删除波浪号或大写符号,并标记要安装的包的具体版本。并且在安装包时会优先获取包版本信息的锁定文件。
编辑:Youtube 上 Angular University 的精彩解释。