web-dev-qa-db-fra.com

Package-lock.json - nécessite vs dépendances

Dans package-lock.json dans un objet de dépendance, j'ai les deux champs requires et dependencies, par exemple

  "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"
      }
    }
  }

Quelle est la différence entre ces deux? Pourquoi certaines dépendances sont répertoriées dans requires, d'autres dans dependencies et certaines d'entre elles dans ces deux champs?

6
Krzysztof Grzybek

Commençons par le début, depuis docs.npmjs :

A besoin: 

Ceci est une correspondance entre le nom du module et la version. Ceci est une liste de tout ce dont ce module a besoin, peu importe où il se trouve installée. La version doit correspondre aux règles de correspondance normales a dépendance soit dans nos dépendances ou à un niveau plus élevé que nous.

Signification Requiert mappe vos modules et tout ce dont le module a besoin pour fonctionner correctement, où que vous soyez installé. 

Par exemple, pour que vos modules fonctionnent, vous devez installer "@angular-devkit/core": "0.8.5", via npm i.


Dépendances: 

Les dépendances de cette dépendance, exactement comme au niveau supérieur.

C'est comme ça que ça sonne. 


Différence: 

Requiert, indique les modules qui sont requis pour que votre application s'exécute et fonctionne correctement.

Dependencies, Répertorie les dépendances de votre application exactement de la même manière qu'au niveau supérieur.

_ {Signification des dépendances pour rendre les choses plus claires} _

Un mappage du nom du package sur l'objet de dépendance.

1
Barr J

Explication détaillée, basée sur Barr J réponse:

Par défaut, npm installe tous les packages directement dans node_modules.

Cependant, supposons que le package X dépende du package Z dans la version 1.0 et que le package Y dépend du même package Z, mais dans la version 2.0. Dans ce cas, nous devons installer deux versions de ce paquet. Un sera installé dans le dossier racine node_modules, et un autre sera installé dans le dossier node_modules du paquet dépendant, par exemple.

package.json
node_modules
   /X
   /Y
      /[email protected]
   /[email protected]

Avec cette connaissance, il est facile de comprendre:

"require" reflète les dépendances du fichier package.json, alors que "dependencies" indique les dépendances réellement installées dans le dossier node_modules de cette dépendance.

1
Krzysztof Grzybek