就像问题的作者一样,package-lock.json 是干什么用的?,只是阅读文档并没有让我清楚为什么需要 package-lock.json 。几年来,我只是愚蠢地遵循了应该使用版本控制系统监控这个文件的建议,但是在组织已安装依赖项的版本时,我总是设置特定版本,而不是范围,例如:
{
"private": "true",
"dependencies": {
"@nestjs/common": "9.0.7",
"@nestjs/core": "9.0.7",
"@nestjs/platform-express": "9.0.7",
"@nestjs/typeorm": "9.0.0"
}
}
代替
{
"private": "true",
"dependencies": {
"@nestjs/common": "^9.0.7",
"@nestjs/core": "^9.0.7",
"@nestjs/platform-express": "^9.0.7",
"@nestjs/typeorm": "^9.0.0"
}
}
因为它在某种程度上更平静,尤其是在团队中工作时。
但是,这仍然不好 - 您需要了解我在做什么以及为什么要这样做,因此出现了问题:如果存在 package-lock.json,我采取的版本安全措施(安装特定版本)是否有意义?
安装特定版本是有意义的。
因为 只有在完成后才会从
lock
版本中获取npm install
,如果完成npm update
,则将更新版本npm.json
并覆盖新值npm.lock
还有,突然之间,如果没有SVN,那么如果锁丢失了,安装了软件,版本就已经被拿走了,好像他们已经完成了一样
npm update
如果有人不小心删除
npm.lock
并再次制作install
/update
,您不必担心安装最小未成年人的版本。甚至发生最小的更新可能会破坏该站点。是的,像未成年人一样,像修复一样,但是(根据我自己的经验)甚至有条件地将版本从 2.2.1 更新到 2.2.2 时,一切都坏了。
此外,考虑到世界现状,例如,我们将所有版本修复至 2 月 24 日。因为在 2 月 24 日之后,一些存储库开始变得粗糙(尤其是在 VUE 中,其中一个扩展的开发人员介绍了他
rm -rf
在系统中所做的代码)。