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?
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.
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.