npm@5已经发布,它有一个新的功能包锁。Json文件(NPM安装后),这让我感到困惑。我想知道,这个文件的效果是什么?
当前回答
package-lock。当package.json中的一个属性(如“version”属性)中的数值或依赖属性被更改时,Json将被写入。
如果这些数值在包装中。Json和包锁。Json匹配,包锁。Json被读取。
如果这些数值在包装中。Json和包锁。Json不匹配,包锁定。Json被写入这些新值,以及新的修饰符,如插入号和波浪号(如果它们存在的话)。但是正是这个数字触发了对package-lock.json的更改。
要明白我的意思,请执行以下操作。使用包。不带包锁的Json。运行NPM install,使用:
{
"name": "test",
"version": "1.0.0",
...
"devDependencies": {
"sinon": "7.2.2"
}
}
package-lock。Json现在有:
"sinon": {
"version": "7.2.2",
现在复制/粘贴两个文件到一个新目录。改变计划。Json到(只添加插入符号):
{
"name": "test",
"version": "1.0.0",
...
"devDependencies": {
"sinon": "^7.2.2"
}
}
运行NPM install。如果没有包裹锁。Json文件,sinon@7.3.0将被安装。NPM install正在从package-lock读取。Json和安装7.2.2。
现在换包。json:
{
"name": "test",
"version": "1.0.0",
...
"devDependencies": {
"sinon": "^7.3.0"
}
}
运行NPM install。package-lock。Json已经被写入,现在将显示:
"sinon": {
"version": "^7.3.0",
其他回答
包中。json文件包含你安装的包和库的主要名称,你可以编辑它,但是Package-lock。json包含每个包的详细信息和每个包的存储库链接(考虑它是来自package.json的包的详细信息)引用
https://web-brackets.com/discussion/69/what-is-the-use-of-package-lock-json-file
npm会自动创建这个文件,并使用它来跟踪你的包安装情况 并且更好地管理项目依赖项的状态和历史。你 不应该改变这个文件的内容。
还有一件重要的事情需要提及,那就是包锁文件带来的安全性改进。因为它保存了所有包的哈希值,如果有人篡改了公共npm注册表,甚至没有改变包本身的版本就改变了包的源代码,包锁文件就会检测到。
package-lock。json:它包含应用程序当前安装的确切版本细节。
包锁的目标。Json文件是为了跟踪安装的每个包的确切版本,以便即使包由其维护者更新,产品也可以100%以相同的方式再现。
这解决了一个非常具体的问题。jsonleft没有解决。在包中。Json,你可以设置你想升级到哪个版本(补丁或小),使用semver符号。
推荐文章
- 在Ubuntu上安装Node.js
- Node -使用NODE_MODULE_VERSION 51根据不同的Node.js版本编译
- 禁用包的postinstall脚本
- NodeJS -用NPM安装错误
- 如何为本地安装npm包设置自定义位置?
- 如何用分发文件发布npm包?
- 如何判断一个npm包是全局安装还是本地安装
- NodeJS需要一个全局模块/包
- 在MacOS X上推荐用什么方式安装Node.js、nvm和npm ?
- npm install和npm run build有什么区别?
- npm start和npm run start的区别
- 有没有办法修复包锁。json lockfileVersion所以npm使用特定的格式?
- 如何使用npm全局安装一个模块?
- npm犯错!错误:EPERM:操作不允许,重命名
- 编译typescript时'tsc命令未找到'