Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular 语义版本控制问题和npm 5或以上_Angular_Npm_Version_Semantic Versioning - Fatal编程技术网

Angular 语义版本控制问题和npm 5或以上

Angular 语义版本控制问题和npm 5或以上,angular,npm,version,semantic-versioning,Angular,Npm,Version,Semantic Versioning,您能告诉我为什么我们需要npm5或更高版本来避免语义版本控制问题吗?换句话说,我们如何使用package lock.json文件来避免它?如果我们在同一个项目的所有开发机器上使用相同的package.json文件,我们就不能避免这个问题吗?我在这里有点困惑。希望您能对此给出反馈。如果您的包.json文件列出如下包,则可以避免这种情况: "@angular/core": "4.2.6", "@angular/forms": "4.2.6", "@angular/http": "4.2.6", 而

您能告诉我为什么我们需要
npm5
或更高版本来避免语义版本控制问题吗?换句话说,我们如何使用
package lock.json
文件来避免它?如果我们在同一个项目的所有开发机器上使用相同的
package.json
文件,我们就不能避免这个问题吗?我在这里有点困惑。希望您能对此给出反馈。

如果您的
包.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中删除tilde或cap(~,^)符号,npm将在所有计算机上安装完全相同的版本。但是添加tilde或cap标志是安全的,因此您可以安装软件包的小版本更新,而无需更新文件。但有时,当包开发人员在小版本中打包一个突破性的更改时,这可能会导致问题

package lock.json
也会这样做,它会删除tilde或cap标志,并标记要安装的包的具体版本。并且在安装软件包时,将使锁定文件具有获取软件包版本信息的优先级


编辑:Youtube上的精彩解释。

非常感谢您的精彩解释:)目前,我的自动生成的包锁带有以版本号为前缀的波浪号和克拉号。但是我想锁定依赖项的版本。我是否应该手动删除这些插入符号和波浪号并检查包对源countrol的锁定?这是一个很好的做法吗?@Murtuza是的,您可以这样做,但不要更新
package lock.json
文件。更新
package.json
文件,并自动生成
package lock.json
文件。