npm, fil, pnpm

1. Introduction

L'émergence de CommonJS permet de diviser le code JS dans l'environnement de nœud en modules plus fins. Une classe, une fonction, un objet, une configuration... peuvent tous être utilisés comme modules. Cette division fine est la pierre angulaire du développement d'applications à grande échelle.

Afin de résoudre les problèmes courants rencontrés dans le processus de développement, tels que le cryptage, la fourniture d'outils et de méthodes communs, la simulation de données, etc., un grand nombre de bibliothèques tierces ont émergé pendant un certain temps dans la communauté front-end. Ces bibliothèques sont écrites selon le standard CommonJS et sont très simples à utiliser.

Ces bibliothèques fournissent généralement des dépendances sous la forme de packages NPM, et une gestion des versions est requise lors de leur utilisation. Par conséquent, une bibliothèque de gestion de packages est nécessaire pour gérer uniformément ces bibliothèques dépendantes afin d'éviter les conflits de versions et une gestion lourde.

Module : Fragment fonctionnel qui existe généralement sous la forme d'un fichier unique. Le fichier d'entrée est généralement appelé module d'entrée ou module principal.

Bibliothèque (bibliothèque, appelée lib) : bloc fonctionnel complet composé d'un ou plusieurs modules, apportant une solution complète à un problème dans un certain aspect du développement

Package : Une bibliothèque contenant des métadonnées telles que : nom, description, page d'accueil git, contrat de licence, auteur, dépendances, etc.

Les outils de gestion de packages couramment utilisés incluent :

NPM : NPM (Node Package Manager) est l'outil de gestion de packages fourni avec Node.js, et c'est également l'un des outils de gestion de packages les plus couramment utilisés. Vous pouvez facilement installer, mettre à niveau et désinstaller les packages dépendants, et vous pouvez également publier vos propres packages dans le référentiel NPM.

Yarn : Yarn est un outil de gestion de packages lancé par Facebook, qui présente les avantages d'une vitesse rapide et d'un bon mécanisme de mise en cache. Par rapport à NPM, Yarn peut télécharger les dépendances plus rapidement et prend en charge le mode hors ligne.

PNPM : PNPM (Permissive NPM) est un outil de gestion de packages émergent qui utilise une méthode similaire aux liens symboliques pour installer les packages dépendants dans le répertoire node_modules de chaque projet, évitant ainsi un grand nombre d'installations répétées.

2. MNP

Tous les gestionnaires de packages actuels sont basés sur npm, et npm lui-même est un gestionnaire de packages.

S'exécutant dans l'environnement de nœud, les développeurs peuvent effectuer la recherche, l'installation, la mise à jour, la désinstallation, le téléchargement et d'autres opérations de package de manière simple.

npm se compose de trois parties :

registre : entrée

Pensez-y comme à une énorme base de données

Les développeurs de bibliothèques tierces emballent et téléchargent leurs propres bibliothèques dans la base de données conformément aux spécifications npm

Les utilisateurs téléchargent des packages tiers via une adresse unifiée

Site officiel : https://www.npmjs.com/

package de requête

S'inscrire, se connecter, gérer les informations personnelles

CLI : interface de ligne de commande interface de ligne de commande

Après avoir installé npm, utilisez diverses fonctions de npm via CLI

  1. Installation locale : utilisez la commande npm install package name ou npm i package name pour terminer l'installation locale, et le package installé localement apparaît dans le répertoire node_modules sous le répertoire actuel.

4.Configuration du paquet :

(1) Fichier de configuration : npm considère chaque projet utilisant npm lui-même comme un package, et les informations du package sont décrites par un fichier de configuration avec un nom fixe.

Le fichier est : package.json.

Une grande quantité d'informations peut être décrite dans le fichier de configuration, notamment :

name : le nom du package, le nom doit être un caractère de mot anglais et prend en charge les connecteurs

version : version

Spécification de la version : numéro de version majeure. Numéro de version mineure. Numéro de version du correctif.

Numéro de version majeure : il n'augmentera que lorsque des changements majeurs auront eu lieu dans le programme, tels que l'ajout de fonctions importantes, un grand nombre de nouvelles API et des changements majeurs dans l'architecture technique.

Numéro de version mineur : il n'augmentera que lorsque des modifications mineures auront lieu dans le programme, comme l'ajout de petites fonctions et l'ajout de quelques API auxiliaires.

Numéro de version du correctif : mise à jour uniquement lorsque certains bugs sont résolus ou que certaines optimisations locales sont effectuées, comme la correction du bug d'une certaine fonction et l'amélioration de l'efficacité opérationnelle d'une certaine fonction

description : description du colis

page d'accueil : adresse du site officiel

author : l'auteur du package, il doit s'agir d'un nom de compte npm valide, la spécification d'écriture est account, par exemple : zhangsan [email protected] , un numéro de compte et une adresse e-mail incorrects peuvent entraîner un échec lors de la publication du package

dépôt : L'adresse de stockage du package, fait généralement référence à l'adresse de git ou svn, c'est un objet

type : type de stockage, git ou svn

URL : adresse

main : le fichier d'entrée du package, et la personne qui utilise le package importe le contenu du package depuis le fichier d'entrée par défaut

mots-clés : rechercher des mots-clés, après avoir publié le package, vous pouvez rechercher le package via les mots-clés de ce tableau

(2) Enregistrer les dépendances

La fonction la plus importante du fichier package.json est d'enregistrer les dépendances du projet en cours

dépendances : dépendances pour l'environnement de production

devDependencies : uniquement les dépendances de l'environnement de développement

De cette façon, lors du portage du code, seuls le code source et le fichier package.json doivent être portés, sans porter le répertoire node_modules, puis l'installation peut être restaurée par commande après le portage.

5. Version sémantique :

Dans le cas de xyz : cela signifie un numéro de version clair. Dans le cas de ^xyz : cela signifie que la version x reste inchangée, et y et z sont toujours les plus récentes. Quand dans le cas de ~xyz : cela signifie que x et y sont conservés Invariants, z est toujours à jour

Lorsque la personne qui souhaite utiliser le package utilise le package et la version spécifiés, il est nécessaire de décrire les règles de dépendance spécifiques dans le fichier de configuration et de les implémenter via un versioning sémantique. Les règles sont les suivantes.

Symbole Description Exemple Exemple Description

Supérieur à une certaine version>1.2.1 Supérieur à la version 1.2.1

= supérieur ou égal à une certaine version >=1.2.1 supérieur ou égal à la version 1.2.1

< inférieur à une certaine version<1.2.1 inférieur à la version 1.2.1

<= inférieur ou égal à une certaine version <=1.2.1 inférieur ou égal à la version 1.2.1

  • Entre deux versions 1.2.1 - 1.4.5 Entre 1.2.1 et 1.4.5
x Numéro de version non corrigé 1.3.x Tant que le numéro de version majeure est 1 et le numéro de version mineure est 3
Le numéro de version du correctif peut être augmenté jusqu'à ~1.3.4 pour garantir que le numéro de version majeure est 1, le numéro de version mineure est 3 et le numéro de version du correctif est supérieur ou égal à 4.

^ Cette version et la version du correctif peuvent être augmentées ^1.3.4 Le numéro de version principale est garanti être 1, le numéro de version mineure peut être supérieur ou égal à 3 et le numéro de version du correctif peut être supérieur ou égal à 4

  • Dernière version* Installez toujours la dernière version

3. Fil

1. Problèmes avec npm :

(1) En fonction de la profondeur d'imbrication du répertoire

(2) Les téléchargements en série ne peuvent pas utiliser pleinement les ressources de bande passante et plusieurs packages de la même version sont téléchargés à plusieurs reprises.

(3) La console produit beaucoup d'informations

(4) Il existe un problème de migration de projet et les dépendances de version peuvent être vagues, ce qui peut conduire à des versions exactes incohérentes des dépendances après la migration du projet.

2. Comment résoudre les problèmes ci-dessus :

(1) Utilisez une structure de répertoires plate

(2) Téléchargement parallèle, en utilisant le cache local

(3) La console affiche uniquement les informations clés

(4) Utilisez le fichier Yarn-Lock pour enregistrer les dépendances exactes

3. Optimisation :

Ajout de quelques commandes puissantes

Rendre les commandes existantes plus sémantiques

Les outils CLI installés localement peuvent être démarrés directement à l'aide de fil

Traitez le répertoire d'installation global comme un projet ordinaire et générez un fichier package.json, ce qui est pratique pour l'installation et la transplantation globales

4. Le fichier Yarn.lock a été ajouté.

Il s'agit d'un fichier généré automatiquement par Yarn lors de l'installation des packages dépendants. Sa fonction est d'enregistrer la version de chaque package installé par Yarn, afin de s'assurer que la version installée par "package.json" est cohérente avec la version réelle. Plus tard, npm a également ajouté package-lock.json avec la même fonction

Cinq, pnpm

1. Le nom complet de pnpm : performant npm, qui signifie « npm haute performance »

Avantage:

Actuellement, l'efficacité de l'installation est supérieure à celle de la dernière version de npm et Yarn.

Répertoire node_modules extrêmement concis

Évite le problème de l'utilisation de dépendances indirectes lors du développement

Réduit considérablement l'utilisation de l'espace disque

2. Principe

(1) Utilisez le cache pour enregistrer les packages installés et utilisez pnpm-lock.yaml pour enregistrer les versions détaillées des dépendances

(2) Utilisez des liens symboliques et des liens physiques (similaires aux raccourcis) pour placer des dépendances, évitant ainsi le temps de copie des fichiers depuis le cache, rendant l'installation et la désinstallation plus rapides.

(3) Grâce à l'utilisation de liens symboliques et de liens physiques, pnpm peut éviter le problème des chemins trop longs dans le système d'exploitation Windows. Par conséquent, il choisit d'utiliser des résultats de dépendance en forme d'arborescence et a une gestion des dépendances presque parfaite. Pour cette raison, seules les dépendances directes peuvent être utilisées dans le projet, pas les dépendances indirectes.

3. Lien physique : le lien physique fait référence à la connexion via le nœud d'index.

Lien logiciel : Un autre type de connexion est appelé lien symbolique (Symbolic Link), également appelé lien logiciel. Les fichiers de liens symboliques ont des raccourcis de type Windows. C'est en fait un fichier spécial. Dans un lien symbolique, le fichier est en réalité un fichier texte contenant des informations sur l'emplacement d'un autre fichier.

référence:

https://zhuanlan.zhihu.com/p/542738352

https://blog.csdn.net/qq_43750501/article/details/107523394

https://blog.csdn.net/weixin_42575028/article/details/127349060

http://www.xbhp.cn/news/63448.html

Guess you like

Origin blog.csdn.net/dawnyi_yang/article/details/132599007