【问题标题】:Understanding difference between 'requires' and 'dependencies' in package-lock.json了解 package-lock.json 中“requires”和“dependencies”之间的区别
【发布时间】:2021-03-19 11:13:56
【问题描述】:

为了了解package-lock.json 中要求和依赖项之间的区别,我正在检查@angular/cli 依赖项对象,如下所示。 在@angular/cli 中,uuid 包在requiresdependencies 字段下都列出了版本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
    }
  }

我已经查看了stackoverflow post,基于此,如果版本不同,将uuid 列在requiresdependencies 字段下是有意义的。

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

【问题讨论】:

    标签: npm angular-cli package.json package-lock.json


    【解决方案1】:

    根据the relevant documentationdependencies 条目不仅为具有不同于其他地方使用的版本的依赖项填充。如果依赖项没有在其他任何地方使用,它也会被填充。至少,这是我的解释。如果我是对的,在您的项目中运行 npm ls uuid 应该会显示只有一个 uuid 条目。

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

    【讨论】:

      猜你喜欢
      • 2020-08-11
      • 2018-12-14
      • 2017-12-20
      • 2018-02-02
      • 2018-07-05
      • 2017-10-30
      • 1970-01-01
      • 2021-02-08
      相关资源
      最近更新 更多