Npm 理解';需要';和';依赖关系';在package-lock.json中

Npm 理解';需要';和';依赖关系';在package-lock.json中,npm,angular-cli,package.json,package-lock.json,Npm,Angular Cli,Package.json,Package Lock.json,为了理解package lock.json中requires和dependency之间的区别,我正在检查@angular/clidependency对象,如下所示。 在@angular/cli中,在requires和dependencies字段下列出了uuid软件包的版本8.3.0 "@angular/cli": { "version": "10.1.7", "resolved": "https:/

为了理解
package lock.json
中requires和dependency之间的区别,我正在检查
@angular/cli
dependency对象,如下所示。 在
@angular/cli
中,在
requires
dependencies
字段下列出了
uuid
软件包的版本
8.3.0

"@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
    }
  }
我已经浏览了基础,如果版本不同,将
uuid
列在
requires
dependencies
字段下是有意义的

但是,在这种情况下,
uuid
requires
dependencies
字段下具有相同的版本
8.3.0
。那么,为什么需要在这两个地方都列出它呢?

根据,一个
依赖项
条目不仅是为一个版本不同于其他地方使用的依赖项填充的。如果依赖项不在其他任何地方使用,它也将被填充。至少,这是我的解释。如果我说的没错,在项目中运行
npmls-uuid
应该只显示一个
uuid
条目

它需要在这两个地方列出,因为
依赖项
需要的信息要多得多
,而
npm
需要这些信息。不过,“为什么”的更广泛的答案是“为什么不呢?”
package lock.json
文件供
npm
内部使用。格式在npm版本6和npm版本7之间更改。它可能会再次改变。他们可能会做任何对npm命令行工具最有效的事情。这可能涉及重复信息