Partage de technologie

Gestionnaires de packages - comparaison de npm, fil, cnpm, pnpm

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

1. npm (gestion de paquets node)

1.1 Installation locale

Utilisez la commande : npm install package name ou npm i package name
Les packages installés localement apparaissent dans le répertoire node_module sous le répertoire actuel
Si le package installé localement dispose d'une CLI, npm placera son script CLI sous node_modules/.bin et utilisera la commande npx pour l'appeler.

1.2 Installation globale

Les packages installés globalement sont placés dans un répertoire global spécial.
Utilisez la commande npm install --global package name ou npm i -g package name.
Le package installé globalement n'est pas disponible pour tous les projets, il fournit uniquement des outils CLI globaux. Dans la plupart des cas, il n’est pas nécessaire d’installer le package globalement.

1.3 Commande d'installation

Dépend de l'environnement de production
npm je nom du paquet
npm i --save le nom du package
npm i -S nom du package
Installer les dépendances dans l'environnement de développement
npm i --save-dev nom du package
npm i -D nom du package

1.4. Lors de l'utilisation de nodejs pour importer un module, si le chemin du module ne commence pas par ./ ​​ou.../, node pensera que le module importé provient du répertoire node_modules.
1.5.script npm

Configurez les commandes CLI couramment utilisées dans le champ de script de package.json et utilisez le nom du script d'exécution npm pour exécuter le script. npx peut être omis dans le script.

2. Problèmes passés avec npm :

  • Les répertoires de dépendances sont profondément imbriqués : dans le passé, les dépendances npm étaient imbriquées et le système Windows ne pouvait pas prendre en charge les répertoires trop profonds.
  • Vitesse de téléchargement lente : en raison des niveaux d'imbrication profonds, les téléchargements de packages ne peuvent être effectués qu'en série ; plusieurs packages de la même version sont téléchargés à plusieurs reprises.
  • La sortie de la console est complexe : impression de nombreux détails du package
  • Problème de transplantation de projet : dans le passé, il n'existait que le fichier de configuration package.json, mais pas de fichier package-lock.json.

3. L’émergence du fil car il présente les avantages suivants :

  • Utiliser une structure de répertoires plate
  • téléchargement parallèle
  • Utiliser le cache local
  • Rationalisez les informations de sortie de la console et affichez uniquement les informations clés
  • Utilisez le fichier Yarn-Lock pour enregistrer les dépendances exactes

4. Influencé par le fil, npm6 s'est inspiré des concepts avancés du fil et a apporté les optimisations suivantes :

  • Aplatissement du répertoire
  • téléchargement parallèle
  • cache local
  • Utilisez package-lock.json pour enregistrer les dépendances exactes
  • Ajout d'un grand nombre d'alias de commande
  • Npx intégré, vous pouvez démarrer les outils CLI locaux
  • Simplifie grandement la sortie de la console

5. cnpm

Le serveur de registre de npm se trouve à l'étranger, ce qui peut entraîner des téléchargements lents ou des échecs. Dans le passé, npm ne fournissait pas la fonction de modification du registre. Taobao construisait son propre registre, qui est le miroir Taobao npm. Taobao fournit également un outil CLI cnpm.

6. pnpm

  • Comme npm et Yarn, le cache est toujours utilisé pour sauvegarder les packages installés.Utilisez pnpm-lock.yaml pour enregistrer les versions détaillées des dépendances
  • Différent de Yarn et NPM, pnpm utilise des liens symboliques et des liens physiques pour placer des dépendances, évitant ainsi la copie de fichiers, améliorant l'efficacité de l'installation et réduisant considérablement l'utilisation de l'espace disque.
  • Grâce à l'utilisation de liens symboliques et de liens physiques, pnpm peut éviter le problème des chemins trop longs dans les systèmes Windows, il utilise donc des dépendances arborescentes. En raison des dépendances arborescentes, les projets ne peuvent utiliser que des dépendances directes, pas des dépendances indirectes.

7. Principe pnpm :

  • L'essence d'un fichier : Le fichier est en fait un pointeur pointant vers une adresse de stockage externe (disque dur, clé USB). La suppression d'un fichier supprime en fait le pointeur, c'est donc très rapide.
  • Copie de fichier : copiez le contenu pointé par le pointeur de fichier, puis générez un nouveau pointeur pointant vers le nouveau contenu.
  • Lien physique : copier un pointeur de fichier A vers un autre pointeur de fichier B. Le fichier B est un lien physique vers le fichier A.
  • Lien symbolique (lien logiciel) : Créez un lien symbolique B pour un fichier ou un dossier A, puis B pointe vers A.
  • Raccourci : Semblable à un lien symbolique, il s'agit d'une méthode de lien prise en charge par Windows au début. Il ne s'agit pas seulement d'un pointeur, mais contient également diverses informations telles que les autorisations, la compatibilité, la méthode de démarrage, etc. Les raccourcis sont propres aux systèmes Windows et ne sont pas utilisés sur toutes les plates-formes.

La différence entre les liens symboliques et les liens physiques

  • Les liens physiques ne peuvent lier que des fichiers, tandis que les liens symboliques peuvent lier des fichiers et des répertoires.
  • Une fois la connexion terminée, le lien physique est uniquement associé au contenu du fichier et n'a rien à voir avec le lien précédent. Les liens symboliques sont toujours associés au fichier précédemment lié et ne sont pas directement associés au fichier de contenu.