Introduction à l'utilisation de NPM

NPM (Node Package Manager) est un outil de gestion de paquets JavaScript et le gestionnaire de paquets par défaut pour Node.js.

NPM permet aux développeurs de télécharger, installer, partager et gérer facilement les dépendances et outils du projet.

NPM est un outil de gestion de paquets fourni avec Node.js. Par conséquent, vous n'avez généralement qu'à installer Node.js, et NPM sera automatiquement installé sur votre système.

Fonctionnalités principales :

  • Gestion des paquets: NPM vous aide à installer et gérer diverses bibliothèques tierces (paquets) requises par votre projet. Par exemple, vous pouvez installer, mettre à jour ou supprimer des dépendances avec des commandes simples.

  • Gestion des versions: NPM prend en charge le contrôle de version, vous permettant de verrouiller une version spécifique d'une dépendance ou de choisir la dernière version selon vos besoins.

  • Publication de paquets: NPM permet aux développeurs de publier leurs propres bibliothèques sur le registre NPM, et d'autres développeurs peuvent télécharger et utiliser ces bibliothèques via NPM.

  • Outil en ligne de commande: NPM fournit un puissant outil en ligne de commande qui peut être utilisé pour diverses opérations telles que l'installation de paquets, l'exécution de scripts, l'initialisation de projets, etc.

Étant donné que la dernière version de Node.js inclut déjà NPM, nous pouvons directement le tester en entrantnpm -vpour vérifier s'il a été installé avec succès. Si une invite de version apparaît, l'installation a réussi :

$ npm -v
2.3.0

Si vous avez une ancienne version de npm installée, vous pouvez facilement la mettre à niveau à l'aide de la commande npm. La commande est la suivante :

$ sudo npm install npm -g
/usr/local/bin/npm -> /usr/local/lib/node_modules/npm/bin/npm-cli.js
[email protected] /usr/local/lib/node_modules/npm

Si vous êtes sur un système Windows, vous pouvez utiliser la commande suivante :

npm install npm -g

Utilisation des commandes npm pour installer des modules

La syntaxe d'installation d'un module Node.js avec npm est la suivante :

$ npm install <Module Name>

Dans l'exemple suivant, nous utilisons la commande npm pour installer un module courant de framework web Node.js.express:

$ npm install express

Après l'installation, le paquet express est placé dans le répertoire node_modules sous le répertoire du projet. Par conséquent, dans votre code, vous avez seulement besoin d'utiliserrequire('express')de cette façon ; il n'est pas nécessaire de spécifier le chemin du paquet tiers.

var express = require('express');

Installation globale vs installation locale

L'installation des paquets npm se divise en deux types : installation locale et installation globale. Du point de vue de la ligne de commande, la seule différence est la présence ou non d'un-gparamètre.

Installation locale :Installe le paquet dans le répertoire node_modules et enregistre les informations dans le champ dependencies de package.json.

npm install express          # 本地安装

Installation globale :Utilisée pour installer des outils en ligne de commande ou des paquets qui doivent être utilisés dans plusieurs projets.

npm install express -g   # 全局安装

Si l'erreur suivante se produit :

npm err! Error: connect ECONNREFUSED 127.0.0.1:8087 

La solution est :

$ npm config set proxy null

Installation locale

  • Portée: Par défaut, npm installera le paquet dans lenode_modulesdossier du projet actuel. Cela signifie que chaque projet qui utilise le paquet aura sa propre copie du paquet.

  • Objectif: L'installation locale est généralement utilisée pour les dépendances de projet. Chaque projet peut avoir ses propres versions de dépendances, ce qui contribue à garantir la stabilité et la reproductibilité du projet.

  • Commande d'installation: À exécuter dans le répertoire du projetnpm install <package-name>installera le paquet dans lenode_modulesdossier, etpackage.jsonajoutera la dépendance au fichier.

  • Gestion des versions: Grâce aupackage.jsonetpackage-lock.jsonfichier, gérez les versions des dépendances pour garantir la cohérence entre les différents environnements.

Installation globale

  • Portée: L'installation globale installe les paquets dans un répertoire au niveau du système, généralement/usr/local/bin(sur les systèmes de type Unix) ou%AppData%\npm(sur Windows).

  • Objectif: L'installation globale est utilisée pour les outils ou les utilitaires en ligne de commande qui n'ont pas besoin d'être installés à plusieurs reprises dans chaque projet. Par exemple, installer un paquet globalcreate-react-apppeut être utilisé pour créer de nouveaux projets React.

  • Commande d'installation: Utilisez l'-goption pour installer des paquets globalement, par exemplenpm install -g <package-name>。

  • Gestion des versions: Les versions des paquets installés globalement sont gérées par npm, mais elles ne sont paspackage.jsonreflétées dans le projet. Cela signifie que les paquets installés globalement peuvent être partagés entre différents projets, mais ils peuvent aussi causer des problèmes en raison de conflits de versions.

FonctionnalitésInstallation localeInstallation globale
Portée d'installationDisponible uniquement dans le projet actuelDisponible dans l'environnement global à l'échelle du système
Utilisation des commandesnpm install package-namenpm install -g package-name
Emplacement d'installationnode_modulesrépertoireRépertoire global du système (varie selon l'OS)
Cas d'utilisationDépendances du projet (bibliothèques, frameworks)Outils CLI, générateurs de projets
Mode d'accèsEnrequire()ouimportusingUtilisé directement dans la ligne de commande
Déclaration de dépendanceDanspackage.jsonenregistré dansnotpackage.jsonenregistré dans
Gestion de versionsDifférentes versions peuvent être utilisées dans différents projetsUne seule version est conservée dans le système
Problèmes de permissionsAucune permission spéciale requisePeut nécessiter des permissions d'administrateur

Si vous voulez avoir les deux fonctionnalités, vous devez l'installer aux deux endroits ou utilisernpm link。

Ensuite, nous allons installer express globalement

$ npm install express -g

Le processus d'installation affiche le contenu suivant ; la première ligne indique le numéro de version et l'emplacement d'installation du module.

[email protected] node_modules/express
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected] ([email protected])
├── [email protected] ([email protected])
├── [email protected] ([email protected], [email protected])
├── [email protected] ([email protected])
├── [email protected] ([email protected], [email protected])
├── [email protected] ([email protected], [email protected])
└── [email protected] ([email protected], [email protected], [email protected], [email protected], [email protected])

Voir les informations installées

Vous pouvez utiliser la commande suivante pour afficher tous les modules installés globalement :

$ npm list -g

├─┬ [email protected]
│ ├── [email protected]
│ ├── [email protected]
│ ├── [email protected]
│ ├─┬ [email protected]
│ │ └── [email protected]
│ ├─┬ [email protected]
│ │ └── [email protected]
……

Pour afficher le numéro de version d’un module spécifique, vous pouvez utiliser la commande suivante :

$ npm list grunt

projectName@projectVersion /path/to/project/folder
└── [email protected]

Désinstaller des modules

Nous pouvons utiliser la commande suivante pour désinstaller un module Node.js.

$ npm uninstall express

Après la désinstallation, vous pouvez vous rendre dans le répertoire /node_modules/ pour vérifier si le paquet existe encore, ou utiliser la commande suivante pour le vérifier :

$ npm ls

Mettre à jour des modules

Nous pouvons utiliser la commande suivante pour mettre à jour un module :

$ npm update express

Rechercher des modules

Utilisez ce qui suit pour rechercher des modules :

$ npm search express

Créer des modules

Pour créer un module, le fichier package.json est essentiel. Nous pouvons utiliser NPM pour générer un fichier package.json, et le fichier généré contient le résultat de base.

$ npm init
This utility will walk you through creating a package.json file.
It only covers the most common items, and tries to guess sensible defaults.

See `npm help json` for definitive documentation on these fields
and exactly what they do.

Use `npm install <pkg> --save` afterwards to install a package and
save it as a dependency in the package.json file.

Press ^C at any time to quit.
name: (node_modules) example                   # 模块名
version: (1.0.0) 
description: Node.js 测试模块(www.example.com)  # 描述
entry point: (index.js) 
test command: make test
git repository: https://github.com/example/example.git  # Github 地址
keywords: 
author: 
license: (ISC) 
About to write to ……/node_modules/package.json:      # 生成地址

{
  "name": "example",
  "version": "1.0.0",
  "description": "Node.js 测试模块(www.example.com)",
  ……
}


Is this ok? (yes) yes

Vous devez saisir les informations ci-dessus selon votre propre situation. Après avoir saisi "yes" à la fin, un fichier package.json sera généré.

Ensuite, nous pouvons utiliser la commande suivante pour enregistrer un utilisateur dans le registre npm (s'inscrire avec une adresse e-mail) :

$ npm adduser
Username: mcmohd
Password:
Email: (this IS public) [email protected]

Ensuite, nous utiliserons la commande suivante pour publier le module :

$ npm publish

Si toutes les étapes ci-dessus ont été effectuées correctement, vous pouvez utiliser npm pour l'installer comme n'importe quel autre module.


Numéro de version

Lorsque vous utilisez NPM pour télécharger et publier du code, vous rencontrerez des numéros de version. NPM utilise des numéros de version sémantiques pour gérer le code. Voici une brève introduction.

Les numéros de version suivent le versionnage sémantique (SemVer), avec le format MAJOR.MINOR.PATCH, et peuvent avoir des étiquettes supplémentaires attachées.

  • MAJOR (version majeure): incrémenté lorsque vous apportez des modifications d'API incompatibles. Par exemple :2.0.0。
  • MINOR (version mineure): incrémenté lorsque vous ajoutez de nouvelles fonctionnalités tout en maintenant la compatibilité descendante. Par exemple :1.1.0。
  • PATCH (version corrective): incrémenté lorsque vous corrigez des bogues sans ajouter de nouvelles fonctionnalités. Par exemple :1.0.1。

Étiquettes supplémentaires

  • Version préliminaire: comme1.0.0-alphaou1.0.0-beta.1, indiquant que cette version est encore en cours de test.
  • Métadonnées de build: comme1.0.0+build.1, qui fournit des informations sur la compilation.

Exemples d'installation

  • Installer une version spécifique :npm install [email protected]
  • Installer la dernière version majeure :npm install package-name@^1.2.3(installer1.x.xla dernière version de)

Commandes NPM courantes

NPM fournit de nombreuses commandes. Vous pouvez utilisernpm helppour afficher toutes les commandes.

CommandeDescription
npm initInitialiser un nouveaupackage.jsonfichier, en saisissant les informations de manière interactive.
npm init -yCréer rapidement unpackage.jsonfichier avec les valeurs par défaut.
npm install package-nameInstaller le paquet spécifié localement.
npm install -g package-nameInstaller le paquet spécifié globalement, en le rendant disponible à l'échelle du système.
npm installInstallerpackage.jsontoutes les dépendances listées dans
npm install package-name --save-devInstaller un paquet et l'ajouter àdevDependencies。
npm update package-nameMettre à jour le paquet de dépendances spécifié.
npm uninstall package-nameDésinstaller le paquet de dépendances spécifié.
npm uninstall -g package-nameDésinstaller le paquet spécifié globalement.
npm listAfficher la liste des paquets de dépendances installés pour le projet actuel.
npm list -g --depth=0Afficher la liste des paquets de dépendances installés globalement (sans développer l'arbre des dépendances).
npm info package-nameAfficher les informations détaillées sur un paquet, y compris la version et les dépendances.
npm loginSe connecter à votre compte NPM.
npm publishPublier le paquet actuel dans le registre NPM.
npm unpublish package-nameDépublier un paquet du registre NPM (généralement limité à 24 heures).
npm cache clean --forceNettoyer le cache NPM.
npm auditVérifier les vulnérabilités de sécurité dans les dépendances du projet.
npm audit fixCorriger automatiquement les vulnérabilités connues.
npm run script-nameExécutezpackage.jsonle script défini dans , par exemplenpm run start。
npm startExécutezstartscript (équivalent ànpm run start)。
npm testExécuteztestscript.
npm buildExécutezbuildscript.
npm outdatedLister les paquets de dépendances du projet qui ont des mises à jour disponibles.
npm version patch/minor/majorUpdatepackage.jsonle numéro de version dans , mettant automatiquement à jour la version.
npm ciUtiliserpackage-lock.jsonpour installer rapidement les dépendances, adapté aux environnements CI/CD.

En plus de ce qui est couvert dans ce chapitre, NPM fournit de nombreuses autres fonctionnalités, et package.json possède également de nombreux autres champs utiles.

En plus de pouvoir consulter la documentation officielle à l'adressehttps://docs.npmjs.com/, voici quelques autres commandes NPM couramment utilisées.


Utilisation du miroir NPM de Taobao

Comme l'utilisation directe du miroir officiel de npm en Chine est très lente, pour résoudre ce problème, nous pouvons utiliser le miroir fourni par Taobao (cnpm ou en configurant NPM) pour accélérer le téléchargement et l'installation des paquets.

Le miroir NPM de Taobao est un miroir complet de npmjs.org. Vous pouvez l'utiliser pour remplacer la version officielle (en lecture seule). La fréquence de synchronisation est actuellement d'une fois toutes les 10 minutes afin d'assurer autant que possible la synchronisation avec le service officiel.

Vous pouvez utiliser l'outil en ligne de commande cnpm personnalisé de Taobao (avec prise en charge de la compression gzip) pour remplacer npm par défaut :

$ npm install -g cnpm --registry=https://registry.npmmirror.com

Ensuite, nous pouvons utiliser cnpm à la place de npm pour l'installation et la gestion des paquets :

$ cnpm install [name]

Description et utilisation de package.json

package.json est un fichier central d'un projet Node.js, contenant les métadonnées, les dépendances, les scripts et d'autres informations du projet.

Le fichier package.json sert à décrire les métadonnées et les relations de dépendance du projet. Il se trouve généralement dans le répertoire racine du projet et sert de fichier de configuration du projet.

Le fichier package.json est un fichier au format JSON contenant les champs de base suivants :

  • name: Le nom du projet, qui doit être unique, en utilisant généralement des lettres minuscules et des traits d'union.
  • version: Le numéro de version du projet, suivant le versionnage sémantique.
  • description: Une brève description du projet.
  • main: Le fichier d'entrée du projet, généralement le fichier de démarrage de l'application.
  • scripts: Définit une série de scripts en ligne de commande pouvant exécuter des tâches spécifiques dans le projet.
  • dependencies: Liste tous les paquets de dépendances requis pour l'exécution du projet et leurs versions.
  • devDependencies: Liste les paquets de dépendances et leurs versions nécessaires uniquement pendant le développement.
  • peerDependencies: Liste les paquets que le projet attend que ses paquets de dépendances aient également comme dépendances.
  • optionalDependencies: Liste les paquets de dépendances optionnels.
  • engines: Spécifie la version de Node.js compatible avec le projet.
  • repository: Les informations sur le dépôt de code du projet, telles que l'URL du dépôt GitHub.
  • keywords: Mots-clés du projet, utiles pour trouver le projet dans la recherche npm.
  • author: Les informations sur l'auteur du projet.
  • license: Les informations sur la licence du projet.

Utilisation :

  1. Initialisez le projet: Exécutez lanpm initcommande dans le répertoire du projet, et npm vous guidera pour créer unpackage.jsonfichier, ou générer automatiquement unpackage.json。

  2. Installer les dépendances: Utilisez lanpm install <package-name>commande pour installer les dépendances. npm ajoutera automatiquement les dépendances àpackage.jsondans le fichierdependenciesoudevDependencieset créerpackage-lock.jsonfichier pour verrouiller les versions des dépendances.

  3. Gérer les scripts: Définissez des commandes dans lescriptschamp, par exemple"start": "node app.js", puis vous pouvez utiliser lanpm startcommande pour exécuter ces scripts.

  4. Gestion de versions: Utilisez lanpm versioncommande pour gérer le numéro de version du projet. npm mettra automatiquement à jour le numéro de version danspackage.jsonet générer un nouveau tag Git.

  5. Publier le paquet: Lorsque le projet est prêt à être publié sur npm, vous pouvez utiliser lanpm publishcommande, et npm lira les informations danspackage.jsonpour publier le paquet.

  6. Gestion des dépendances:package.jsonetpackage-lock.jsontravaillent ensemble avec le fichier pour garantir des versions cohérentes des dépendances dans différents environnements.

Une structure typique du fichier package.json est la suivante :

Exemple

{
  "name": "my-project",
  "version": "1.0.0",
  "description": "Un projet Node.js simple",
  "main": "app.js",
  "scripts": {
    "start": "node app.js",
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "dependencies": {
    "express": "^4.17.1"
  },
  "devDependencies": {
    "nodemon": "^2.0.20"
  },
  "keywords": ["node", "npm", "example"],
  "author": "Votre nom",
  "license": "MIT"
}

Descriptions des champs :

ChampDescription
nameLe nom du projet, généralement en lettres minuscules et avec des tirets.
versionLe numéro de version du projet, suivantlangagesignificationtransformationversionspécification (SemVer)。
descriptionUne brève description du projet.
mainLe fichier d'entrée du projet, par défaut surindex.js。
scriptsDéfinit les commandes de script exécutables pour le projet, telles quenpm start。
dependenciesBibliothèques de dépendances requises à l'exécution, ajoutées lors de l'installation ànode_modules。
devDependenciesBibliothèques de dépendances utilisées pendant le développement, non installées dans les environnements de production.
keywordsUn tableau de mots-clés, utile pour décrire le projet et le trouver dans la recherche NPM.
authorLes informations sur l'auteur du projet.
licenseLe type de licence du projet, tel queMIT、ISC。

Avantages de l'utilisation de package.json

  • Gestion des dépendances: Gérez centralement les dépendances du projet et leurs versions.
  • Automatisation des tâches: Grâce auscriptschamp, vous pouvez exécuter facilement des tâches courantes.
  • Gestion des versions: Assurer la cohérence du projet et des versions de ses dépendances, ce qui facilite la collaboration en équipe.
  • Décrire le projet: Fournir des informations de métadonnées sur le projet, ce qui facilite sa publication et son partage.

Gestion des dépendances

dependencies: Stocke les dépendances nécessaires au fonctionnement du projet.

"dependencies": {
  "express": "^4.17.1"
}

Lors de l'installation des dépendances, utilisez :

npm install express

devDependencies: stocke les dépendances nécessaires pendant le développement du projet.

"devDependencies": {
  "nodemon": "^2.0.20"
}

Lors de l'installation des dépendances, utilisez :

npm install nodemon --save-dev

champ scripts

Le champ scripts sert à définir des commandes qui peuvent être exécutées via npm run <script>. Les scripts courants incluent :

"scripts": {
  "start": "node app.js",
  "test": "jest",
  "build": "webpack --mode production",
  "dev": "nodemon app.js"
}

Exemple d'exécution de scripts :

npm run dev   # 执行 "nodemon app.js"
npm start     # 等同于 "node app.js",可以直接用 npm start 运行

Explication des symboles dans les numéros de version

  • ^(caret) : indique l'installation de la dernière version compatible avec la version majeure actuelle. Par exemple,^4.17.1installera4.x.xla dernière version dans .
  • ~(tilde) : indique l'installation de la dernière version compatible avec la version mineure actuelle. Par exemple,~4.17.1installera4.17.xla dernière version dans .

Commandes courantes

Initialiser le fichier package.json :

npm init

L'utilisation de npm init -y permet de générer rapidement un fichier package.json par défaut.

Afficher les dépendances du projet :

npm list --depth=0

Mettre à jour les dépendances :

npm update package-name

Notes

  • Gardez lepackage.jsonfichier concis et précis, en évitant les champs inutiles.
  • Utiliserpackage-lock.jsonpour verrouiller les versions des dépendances afin de garantir la cohérence du projet dans différents environnements.
  • Mettez régulièrement à jour les dépendances pour profiter des dernières fonctionnalités et correctifs de sécurité.

Pour plus d'informations, consultez :https://npmmirror.com/。

Autres extensions