Maison > Article > interface Web > Compréhension approfondie du mécanisme du NMP
Cet article vous apporte une compréhension approfondie du mécanisme NPM. Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer.
Lors de l'utilisation de NPM pour l'installation, des conflits de packages se produisent souvent (tels que des versions incohérentes des sous-modules de plusieurs modules principaux, etc.), entraînant divers problèmes majeurs ou mineurs au cours du processus de développement. Tous les contenus suivants seront présentés ici :
NPM diverses méthodes d'installation
npm install packageName[@next | @versionNumber]
npm install packageName --f | -- force
npm update packageName
Service de requête NPM
npm view packageName [version]
Après avoir entré la commande npm install et appuyé sur Entrée, vous irez à travers les étapes suivantes (en prenant npm 5.5.1 comme exemple) :
1. Exécuter la préinstallation du projet lui-même
Si le hook de préinstallation est défini dans le projet npm actuel, il sera exécuté à ce moment-là.
2. Déterminez le module de dépendance de premier niveau
La première chose que vous devez faire est de déterminer la dépendance de premier niveau dans le projet, c'est-à-dire directement dans les attributs dependencies
et devDependencies
Le module spécifié (en supposant qu'aucun paramètre d'installation npm ne soit ajouté pour le moment).
Le projet lui-même est le nœud racine de l'ensemble de l'arborescence des dépendances. Chaque module de dépendance de premier niveau est un sous-arbre sous le nœud racine. Npm démarrera plusieurs processus à partir de chaque dépendance de premier niveau. Le module commence progressivement à rechercher des nœuds plus profonds.
Si le module spécifié existe déjà dans le répertoire node_modules de la requête, il ne sera pas réinstallé
3 Récupérer le module
Récupérer le module. a Le processus récursif est divisé en les étapes suivantes :
Obtenir des informations sur le module
Obtenir l'entité du module.
Recherchez les dépendances de ce module
4. Aplatissement du module (déduplication)
Ce qui est obtenu en une seule étape est un arbre de dépendances complet, qui peut inclure des lots. de modules répétitifs. Par exemple, le module A dépend deloadsh et le module B dépend également de lodash. Avant npm3, l'installation était strictement basée sur la structure arborescente des dépendances, ce qui entraînait une redondance des modules.
Un processus de déduplication est ajouté par défaut à partir de npm3 版本
. Il traversera tous les nœuds et placera les modules un par un sous le nœud racine, qui est le premier niveau de nœuds-modules. Lorsque des modules en double sont trouvés, ils sont supprimés.
Ici, vous devez définir un module en double, qui fait référence à le nom du module est le même et le semver est compatible. Chaque semver correspond à une plage de versions autorisées. Si les plages de versions autorisées de deux modules se chevauchent, une version compatible peut être obtenue sans avoir besoin d'avoir exactement le même numéro de version. Cela permet de supprimer davantage de modules redondants lors du processus de déduplication.
Par exemple,
Par exemple, supposons qu'un arbre de dépendances ressemble à l'origine à ceci :
node_modules
-- foo
---- lodash@version1
-- bar
---- lodash@version2
En supposant que la version1 et la version2 sont des versions compatibles, après la déduplication, cela deviendra la forme suivante :
node_modules
-- foo
-- bar
-- lodash (la version retenue est la version compatible)
En supposant que la version1 et la version2 sont des versions incompatibles, les versions ultérieures sont conservées dans la dépendance arbre :
node_modules
-- foo
-- lodash@version1
-- bar
---- lodash@version2
5 . Installer le module
Cette étape mettra à jour node_modules dans le projet et exécutera les fonctions de cycle de vie dans le module (dans l'ordre de préinstallation, installation, postinstallation).
6. Exécuter le propre cycle de vie du projet
Si le projet npm actuel a un hook défini, il sera exécuté à ce moment (dans l'ordre d'installation, postinstallation, prépublication et préparation).
La dernière étape consiste à générer ou à mettre à jour le fichier de description de version, et le processus d'installation de npm est terminé.
Cet article est terminé ici. Pour un contenu plus passionnant, vous pouvez faire attention à la colonne Tutoriel vidéo JavaScript du site Web PHP chinois !
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!