了解 package-lock.json 中"requires"和"dependencies"之间的区别



为了理解package-lock.json中需求和依赖项之间的区别,我正在检查@angular/cli依赖项对象,如下所示。在@angular/cli中,在requiresdependencies字段下列出了版本为8.3.0uuid包。

"@angular/cli": {
"version": "10.1.7",
"resolved": "https://registry.npmjs.org/@angular/cli/-/cli-10.1.7.tgz",
"integrity": "sha512-0tbeHnPIzSV/z+KlZT7N2J1yMnwQi4xIxvbsANrLjoAxNssse84i9BDdMZYsPoV8wbzcDhFOtt5KmfTO0GIeYQ==",
"dev": true,
"requires": {
"@angular-devkit/architect": "0.1001.7",
"@angular-devkit/core": "10.1.7",
"@angular-devkit/schematics": "10.1.7",
"@schematics/angular": "10.1.7",
"@schematics/update": "0.1001.7",
"@yarnpkg/lockfile": "1.1.0",
"ansi-colors": "4.1.1",
"debug": "4.1.1",
"ini": "1.3.5",
"inquirer": "7.3.3",
"npm-package-arg": "8.0.1",
"npm-pick-manifest": "6.1.0",
"open": "7.2.0",
"pacote": "9.5.12",
"read-package-tree": "5.3.1",
"rimraf": "3.0.2",
"semver": "7.3.2",
"symbol-observable": "1.2.0",
"universal-analytics": "0.4.23",
"uuid": "8.3.0"
},
"dependencies": {
"ansi-colors": {
"version": "4.1.1",
"resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz",
"integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==",
"dev": true
},
"debug": {
"version": "4.1.1",
"resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
"integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
"dev": true,
"requires": {
"ms": "^2.1.1"
}
},
"uuid": {
"version": "8.3.0",
"resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.0.tgz",
"integrity": "sha512-fX6Z5o4m6XsXBdli9g7DtWgAx+osMsRRZFKma1mIUsLCz6vRvv+pz5VNbyu9UEDzpMWulZfvpgb/cmDXVulYFQ==",
"dev": true
}
}

我已经阅读了stackoverflow文章,在此基础上,如果版本不同,在requiresdependencies字段下列出uuid是有意义的。

然而,在这种情况下,uuidrequiresdependencies字段下具有相同的版本8.3.0。那么,为什么要求在这两个地方都列出呢?

根据相关文档,dependencies条目不仅用于与其他地方使用的版本不同的依赖项。如果依赖项没有在其他地方使用,它也将被填充。至少,这是我的理解。如果我是对的,那么在项目中运行npm ls uuid应该只显示一个uuid条目。

它需要同时列出,因为dependenciesrequires有更多的信息,而npm需要这些信息。对";为什么";,然而;为什么不呢"package-lock.json文件供npm内部使用。格式在npm版本6和npm版本7之间发生了更改。它可能会再次改变。他们可能会做任何对npm命令行工具最有效的事情。这可能涉及到重复信息。

最新更新