Package-lock.json - требует зависимости от - PullRequest
0 голосов
/ 22 октября 2018

В package-lock.json в объекте зависимостей у меня есть поля requires и dependencies, например,

  "requires": {
    "@angular-devkit/core": "0.8.5",
    "rxjs": "6.2.2",
    "tree-kill": "1.2.0",
    "webpack-sources": "1.3.0"
  },
  "dependencies": {
    "rxjs": {
      "version": "6.2.2",
      "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.2.2.tgz",
      "integrity": "sha512-0MI8+mkKAXZUF9vMrEoPnaoHkfzBPP4IGwUYRJhIRJF6/w3uByO1e91bEHn8zd43RdkTMKiooYKmwz7RH6zfOQ==",
      "dev": true,
      "requires": {
        "tslib": "1.9.3"
      }
    }
  }

В чем разница между этими двумя?Почему некоторые зависимости перечислены в requires, другие в dependencies, а некоторые в обоих этих полях?

Ответы [ 3 ]

0 голосов
/ 09 декабря 2018

Подробное объяснение, основанное на Barr J ответ:

По умолчанию npm устанавливает все пакеты непосредственно в node_modules.

Однакоскажем, пакет X зависит от пакета Z в версии 1.0, а пакет Y зависит от того же пакета Z, но в версии 2.0.В этом случае мы должны установить две версии этого пакета.Один будет установлен в корневую папку node_modules, а другой будет установлен в папку node_modules зависимого пакета, например,

package.json
node_modules
   /X
   /Y
      /Z@2.0
   /Z@1.0

С этим знанием легко понять:

«require» отражает зависимости из файла package.json, в то время как «dependencies» отражает фактически установленные зависимости в папке node_modules этой зависимости.

0 голосов
/ 08 августа 2019

После прочтения ответов выше.Может быть, я могу выразить это более простым способом

requires может быть общим среди всех других зависимостей верхнего уровня, в то время как dependencies являются автономными , принадлежащими толькодля модуля требуется

т.е.

"@angular-devkit/core": "0.8.5", "tree-kill": "1.2.0", "webpack-sources": "1.3.0" не принадлежат только к модулю, они находятся на том же уровне, что имодуль требует их.Напротив, "rxjs": "6.2.2" существуют исключительно потому, что модуль требует его.И используется только модулем

0 голосов
/ 22 октября 2018

Начнем с самого начала, с docs.npmjs :

Требуется:

Это отображение имени модуляк версии.Это список всего, что требуется этому модулю, независимо от того, где он будет установлен.Версия должна соответствовать нормальным правилам сопоставления с зависимостью либо в наших зависимостях, либо на уровне выше, чем у нас.

Значение Требуется - сопоставление ваших модулей и все, что требуется конкретному модулю вДля того, чтобы правильно работать, независимо от того, где вы его установили.

Например, чтобы ваши модули работали, вы должны установить "@angular-devkit/core": "0.8.5", через npm i.


Зависимости:

Зависимости этой зависимости, точно так же, как на верхнем уровне.

Просто так, как это звучит.


Разница:

Требуется , указывает модули, необходимые для вашего приложения для работы и работы

Зависимости , перечисляет зависимости в вашем приложении точно так же, как и на верхнем уровне.

Значение зависимостей, чтобы прояснить ситуацию

Отображение имени пакета на объект зависимости.

...