Recherche…


Introduction

Node Package Manager (npm) offre les deux fonctionnalités principales suivantes: Référentiels en ligne pour les packages / modules node.js qui peuvent être recherchés sur search.nodejs.org. Utilitaire de ligne de commande pour installer les packages Node.js, faire la gestion des versions et la gestion des dépendances des packages Node.js.

Syntaxe

Paramètres

Paramètre Exemple
accès npm publish --access=public
poubelle npm bin -g
modifier npm edit connect
Aidez-moi npm help init
init npm init
installer npm install
lien npm link
prune npm prune
publier npm publish ./
redémarrer npm restart
début npm start
Arrêtez npm start
mettre à jour npm update
version npm version

Installer des paquets

introduction

Package est un terme utilisé par npm pour désigner les outils que les développeurs peuvent utiliser pour leurs projets. Cela inclut tout, des bibliothèques et des frameworks tels que jQuery et AngularJS aux exécuteurs de tâches tels que Gulp.js. Les paquets seront fournis dans un dossier généralement appelé node_modules , qui contiendra également un fichier package.json . Ce fichier contient des informations concernant tous les packages, y compris les dépendances, qui sont des modules supplémentaires nécessaires pour utiliser un package particulier.

Npm utilise la ligne de commande pour installer et gérer les packages, de sorte que les utilisateurs essayant d'utiliser npm doivent être familiarisés avec les commandes de base de leur système d'exploitation: parcourir les répertoires et voir le contenu des répertoires.


Installation de NPM

Notez que pour installer des packages, NPM doit être installé.

La méthode recommandée pour installer NPM consiste à utiliser l'un des programmes d'installation de la page de téléchargement de Node.js. Vous pouvez vérifier si vous avez déjà installé node.js en exécutant la commande npm -v ou npm version .

Après avoir installé NPM via le programme d'installation de Node.js, assurez-vous de vérifier les mises à jour. Cela est dû au fait que NPM est mis à jour plus fréquemment que le programme d'installation de Node.js. Pour vérifier les mises à jour, exécutez la commande suivante:

npm install npm@latest -g

Comment installer les paquets

Pour installer un ou plusieurs packages, procédez comme suit:

npm install <package-name>
# or
npm i <package-name>...

# e.g. to install lodash and express
npm install lodash express

Note : Ceci installera le paquet dans le répertoire dans lequel se trouve la ligne de commande, il est donc important de vérifier si le répertoire approprié a été choisi

Si vous avez déjà un fichier package.json dans votre répertoire de travail actuel et que des dépendances y sont définies, alors npm install résoudra et installera automatiquement toutes les dépendances répertoriées dans le fichier. Vous pouvez également utiliser la version abrégée de la commande npm install : npm i

Si vous souhaitez installer une version spécifique d'un package, utilisez:

npm install <name>@<version>

# e.g. to install version 4.11.1 of the package lodash
npm install [email protected]

Si vous souhaitez installer une version correspondant à une plage de version spécifique, utilisez:

npm install <name>@<version range>

# e.g. to install a version which matches "version >= 4.10.1" and "version < 4.11.1"
# of the package lodash
npm install lodash@">=4.10.1 <4.11.1"

Si vous souhaitez installer la dernière version, utilisez:

npm install <name>@latest

Les commandes ci-dessus rechercheront les paquets dans le dépôt central npm à npmjs.com . Si vous ne souhaitez pas installer depuis le registre npm , d'autres options sont prises en charge, telles que:

# packages distributed as a tarball
npm install <tarball file>
npm install <tarball url>

# packages available locally
npm install <local path>

# packages available as a git repository
npm install <git remote url>

# packages available on GitHub
npm install <username>/<repository>

# packages available as gist (need a package.json)
npm install gist:<gist-id>

# packages from a specific repository
npm install --registry=http://myreg.mycompany.com <package name>

# packages from a related group of packages 
# See npm scope
npm install @<scope>/<name>(@<version>)

# Scoping is useful for separating private packages hosted on private registry from
# public ones by setting registry for specific scope
npm config set @mycompany:registry http://myreg.mycompany.com
npm install @mycompany/<package name>

Généralement, les modules seront installés localement dans un dossier nommé node_modules , qui se trouve dans votre répertoire de travail actuel. C'est le répertoire que require() pour charger les modules afin de les mettre à votre disposition.

Si vous avez déjà créé un fichier package.json , vous pouvez utiliser l' --save ( --save -S ) ou l'une de ses variantes pour ajouter automatiquement le package installé à votre package.json tant que dépendance. Si quelqu'un installe votre paquet, npm lira automatiquement les dépendances du fichier package.json et installera les versions listées. Notez que vous pouvez toujours ajouter et gérer vos dépendances en éditant le fichier ultérieurement. Il est donc recommandé de suivre les dépendances, par exemple en utilisant:

npm install --save <name> # Install dependencies 
# or
npm install -S <name> # shortcut version --save 
# or
npm i -S <name>

Pour installer les packages et les enregistrer uniquement s'ils sont nécessaires au développement, pas pour les exécuter, pas s'ils sont nécessaires à l'exécution de l'application, suivez la commande suivante:

npm install --save-dev <name> # Install dependencies for development purposes
# or
npm install -D <name> # shortcut version --save-dev
# or
npm i -D <name>

Installation de dépendances

Certains modules fournissent non seulement une bibliothèque à utiliser, mais fournissent également un ou plusieurs fichiers binaires destinés à être utilisés via la ligne de commande. Bien que vous puissiez toujours installer ces packages localement, il est souvent préférable de les installer globalement pour que les outils de ligne de commande puissent être activés. Dans ce cas, npm liera automatiquement les fichiers binaires aux chemins appropriés (par exemple /usr/local/bin/<name> ) afin qu'ils puissent être utilisés à partir de la ligne de commande. Pour installer un package globalement, utilisez:

npm install --global <name>
# or
npm install -g <name>
# or
npm i -g <name>

# e.g. to install the grunt command line tool
npm install -g grunt-cli

Si vous souhaitez voir une liste de tous les packages installés et de leurs versions associées dans l'espace de travail actuel, utilisez:

npm list
npm list <name>

L'ajout d'un argument de nom facultatif permet de vérifier la version d'un package spécifique.


Remarque: Si vous rencontrez des problèmes de permission en essayant d'installer un module npm globalement, résistez à la tentation de sudo npm install -g ... un sudo npm install -g ... pour résoudre le problème. Accorder des scripts tiers pour s'exécuter sur votre système avec des privilèges élevés est dangereux. Le problème de la permission peut signifier que vous avez un problème avec la façon dont npm été installé. Si vous êtes intéressé par l'installation de Node dans des environnements utilisateur en bac à sable, vous pouvez essayer d'utiliser nvm .

Si vous disposez d'outils de génération ou d'autres dépendances de développement uniquement (par exemple Grunt), vous ne souhaiterez peut-être pas les regrouper avec l'application que vous déployez. Si tel est le cas, vous voudrez l’avoir comme une dépendance de développement, qui est répertoriée dans le package.json sous devDependencies . Pour installer un package en tant que dépendance de développement uniquement, utilisez --save-dev (ou -D ).

npm install --save-dev <name> // Install development dependencies which is not included in production 
# or
npm install -D <name>

Vous verrez que le paquet est ensuite ajouté aux devDependencies de votre package.json .

Pour installer des dépendances d’un projet node.js téléchargé / cloné, vous pouvez simplement utiliser

npm install
# or
npm i

npm lit automatiquement les dépendances à partir de package.json et les installe.

MNP derrière un serveur proxy

Si votre accès Internet se fait via un serveur proxy, vous devrez peut-être modifier les commandes npm install qui accèdent aux référentiels distants. npm utilise un fichier de configuration qui peut être mis à jour via la ligne de commande:

npm config set

Vous pouvez localiser vos paramètres de proxy depuis le panneau de configuration de votre navigateur. Une fois que vous avez obtenu les paramètres de proxy (URL du serveur, port, nom d'utilisateur et mot de passe); vous devez configurer vos configurations npm comme suit.

$ npm config set proxy http://<username>:<password>@<proxy-server-url>:<port>
$ npm config set https-proxy http://<username>:<password>@<proxy-server-url>:<port>

username , password , port champs de port sont facultatifs. Une fois ces paramètres définis, votre npm install npm i -g , npm i -g etc. fonctionnerait correctement.

Portées et référentiels

# Set the repository for the scope "myscope"
npm config set @myscope:registry http://registry.corporation.com

# Login at a repository and associate it with the scope "myscope"
npm adduser --registry=http://registry.corporation.com --scope=@myscope

# Install a package "mylib" from the scope "myscope"
npm install @myscope/mylib

Si le nom de votre propre package commence par @myscope et que la portée "myscope" est associée à un autre référentiel, npm publish plutôt votre package sur ce référentiel.

Vous pouvez également conserver ces paramètres dans un fichier .npmrc :

@myscope:registry=http://registry.corporation.com
//registry.corporation.com/:_authToken=xxxxxxxx-xxxx-xxxx-xxxxxxxxxxxxxxx

Ceci est utile lors de l'automatisation de la construction sur un serveur CI

Désinstallation des paquets

Pour désinstaller un ou plusieurs packages installés localement, utilisez:

npm uninstall <package name>

La commande de désinstallation pour npm comporte cinq alias pouvant également être utilisés:

npm remove <package name>
npm rm <package name>
npm r <package name>

npm unlink <package name>
npm un <package name>

Si vous souhaitez supprimer le package du fichier package.json dans le cadre de la désinstallation, utilisez l'indicateur --save (raccourci: -S ):

npm uninstall --save <package name>
npm uninstall -S <package name>

Pour une dépendance de développement, utilisez le drapeau --save-dev (raccourci: -D ):

npm uninstall --save-dev <package name>
npm uninstall -D <package name>

Pour une dépendance facultative, utilisez l' --save-optional (raccourci: -O ):

npm uninstall --save-optional <package name>
npm uninstall -O <package name>

Pour les packages installés globalement, utilisez le drapeau --global (raccourci: -g ):

npm uninstall -g <package name>

Versioning sémantique de base

Avant de publier un package, vous devez le mettre à jour. npm prend en charge la gestion des versions sémantiques , ce qui signifie qu'il existe des versions correctives, mineures et majeures .

Par exemple, si votre package est à la version 1.2.3 pour modifier la version, vous devez:

  1. npm version patch : npm version patch => 1.2.4
  2. npm version minor : npm version minor => 1.3.0
  3. npm version major : npm version major => 2.0.0

Vous pouvez également spécifier une version directement avec:

npm version 3.1.4 => 3.1.4

Lorsque vous définissez une version de package utilisant l'une des commandes npm ci-dessus, npm modifie le champ de version du fichier package.json, le valide et crée également un nouveau tag Git avec la version précédée d'un "v", comme si vous 'ai émis la commande:

git tag v3.1.4

Contrairement à d'autres gestionnaires de paquetages comme Bower, le registre npm ne repose pas sur la création de balises Git pour chaque version. Mais si vous aimez utiliser les balises, n'oubliez pas de pousser la balise nouvellement créée après avoir heurté la version du paquet:

git push origin master (pour pousser le changement vers package.json)

git push origin v3.1.4 (pour pousser la nouvelle balise)

Ou vous pouvez le faire d'un seul coup avec:

git push origin master --tags

Configuration d'une configuration de package

Les configurations de package Node.js sont contenues dans un fichier appelé package.json que vous pouvez trouver à la racine de chaque projet. Vous pouvez configurer un nouveau fichier de configuration en appelant:

npm init

Cela va essayer de lire le répertoire de travail actuel pour les informations du référentiel Git (s'il existe) et les variables d'environnement pour essayer de compléter automatiquement certaines des valeurs des espaces réservés pour vous. Sinon, il fournira une boîte de dialogue de saisie pour les options de base.

Si vous souhaitez créer un package.json avec les valeurs par défaut, utilisez:

npm init --yes
# or
npm init -y 

Si vous créez un package.json pour un projet que vous ne publierez pas en tant que package npm (uniquement dans le but de rassembler vos dépendances), vous pouvez transmettre cette intention dans votre fichier package.json :

  1. Définissez éventuellement la propriété private sur true pour empêcher toute publication accidentelle.
  2. Définissez éventuellement la propriété de license sur "UNLICENSED" pour refuser aux autres le droit d'utiliser votre package.

Pour installer un paquet et l'enregistrer automatiquement dans votre package.json , utilisez:

npm install --save <package>

Le package et les métadonnées associées (telles que la version du package) apparaîtront dans vos dépendances. Si vous enregistrez en tant que dépendance de développement (en utilisant --save-dev ), le package apparaîtra plutôt dans vos devDependencies .

Avec ce package.json bare-bones, vous rencontrerez des messages d'avertissement lors de l'installation ou de la mise à niveau des packages, vous indiquant qu'il vous manque une description et le champ du référentiel. Bien qu'il soit prudent d'ignorer ces messages, vous pouvez les supprimer en ouvrant le package.json dans n'importe quel éditeur de texte et en ajoutant les lignes suivantes à l'objet JSON:

[...]
"description": "No description",
"repository": {
  "private": true
},
[...]

Publication d'un package

Tout d'abord, assurez-vous d'avoir configuré votre paquet (comme indiqué dans Configuration d'une configuration de paquet ). Ensuite, vous devez être connecté à npmjs.

Si vous avez déjà un utilisateur npm

npm login

Si vous n'avez pas d'utilisateur

npm adduser

Pour vérifier que votre utilisateur est enregistré dans le client actuel

npm config ls

Après cela, quand votre paquet est prêt à être publié, utilisez

npm publish

Et vous avez terminé.

Si vous devez publier une nouvelle version, assurez-vous de mettre à jour la version de votre package, comme indiqué dans la section Gestion des versions sémantiques . Sinon, npm ne vous laissera pas publier le paquet.

{
    name: "package-name",
    version: "1.0.4"
}

Exécution de scripts

Vous pouvez définir des scripts dans votre package.json , par exemple:

{
  "name": "your-package",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "author": "",
  "license": "ISC",
  "dependencies": {},
  "devDependencies": {},
  "scripts": {
    "echo": "echo hello!"
  }
}

Pour exécuter le script echo , exécutez npm run echo partir de la ligne de commande. Les scripts arbitraires, tels que echo ci-dessus, doivent être exécutés avec npm run <script name> . npm dispose également d'un certain nombre de scripts officiels qu'il exécute à certaines étapes de la vie du paquet (comme la preinstall ). Voir ici pour la présentation complète de la façon dont npm gère les champs de script.

Les scripts npm sont utilisés le plus souvent pour démarrer un serveur, créer un projet et exécuter des tests. Voici un exemple plus réaliste:

  "scripts": {
    "test": "mocha tests",
    "start": "pm2 start index.js"
  }

Dans les entrées de scripts , les programmes en ligne de commande tels que mocha fonctionneront lorsqu'ils seront installés globalement ou localement. Si l'entrée de ligne de commande n'existe pas dans le système PATH, npm vérifie également vos packages installés localement.

Si vos scripts deviennent très longs, ils peuvent être divisés en plusieurs parties, comme ceci:

  "scripts": {
    "very-complex-command": "npm run chain-1 && npm run chain-2",
    "chain-1": "webpack",
    "chain-2": "node app.js"
  }

Enlever les paquets superflus

Pour supprimer les paquets superflus (packages installés mais pas dans la liste des dépendances), exécutez la commande suivante:

npm prune

Pour supprimer tous les paquets de dev , ajoutez --production flag de production:

npm prune --production

Plus à ce sujet

Liste des paquets actuellement installés

Pour générer une liste (arborescence) des packages actuellement installés, utilisez

npm list

ls , la et ll sont des alias de commande list . Les commandes la et ll affichent des informations étendues telles que la description et le référentiel.

Les options

Le format de réponse peut être modifié en passant des options.

npm list --json
  • json - Affiche des informations au format json
  • long - Affiche des informations étendues
  • analysable - Affiche la liste analysable au lieu de l'arborescence
  • global - Affiche les packages globalement installés
  • depth - Profondeur maximale d'affichage de l'arbre de dépendance
  • dev / development - Affiche les devDependencies
  • prod / production - Affiche les dépendances

Si vous le souhaitez, vous pouvez également accéder à la page d'accueil du package.

npm home <package name>

Mise à jour des npm et des packages

Comme npm lui-même est un module Node.js, il peut être mis à jour lui-même.

Si le système d'exploitation est Windows, vous devez exécuter l'invite de commande en tant qu'administrateur

npm install -g npm@latest

Si vous voulez vérifier les versions mises à jour, vous pouvez faire:

npm outdated

Afin de mettre à jour un paquet spécifique:

npm update <package name>

Cela mettra à jour le package à la dernière version en fonction des restrictions de package.json

Si vous souhaitez également verrouiller la version mise à jour dans package.json:

npm update <package name> --save

Verrouillage de modules sur des versions spécifiques

Par défaut, npm installe la dernière version disponible des modules en fonction de la version sémantique de chaque dépendance. Cela peut être problématique si un auteur de module n'adhère pas à semver et introduit des modifications de rupture dans une mise à jour de module, par exemple.

Pour verrouiller la version de chaque dépendance (et les versions de leurs dépendances, etc.) à la version spécifique installée localement dans le dossier node_modules , utilisez

npm shrinkwrap

Cela créera alors un npm-shrinkwrap.json côté de votre package.json qui répertorie les versions spécifiques des dépendances.

Mise en place de packages globalement installés

Vous pouvez utiliser npm install -g pour installer un package "globalement". Cela est généralement fait pour installer un exécutable que vous pouvez ajouter à votre chemin à exécuter. Par exemple:

npm install -g gulp-cli

Si vous mettez à jour votre chemin, vous pouvez appeler directement gulp .

Sur de nombreux systèmes d'exploitation, npm install -g tentera d'écrire dans un répertoire dans lequel votre utilisateur ne pourra peut-être pas écrire, tel que /usr/bin . Vous ne devez pas utiliser sudo npm install dans ce cas, car il existe un risque de sécurité lié à l'exécution de scripts arbitraires avec sudo et l'utilisateur root peut créer des répertoires dans lesquels vous ne pouvez pas écrire, ce qui complique les futures installations.

Vous pouvez indiquer à npm où installer les modules globaux via votre fichier de configuration, ~/.npmrc . Cela s'appelle le prefix que vous pouvez afficher avec le npm prefix .

prefix=~/.npm-global-modules

Cela utilisera le préfixe chaque fois que vous exécuterez npm install -g . Vous pouvez également utiliser npm install --prefix ~/.npm-global-modules pour définir le préfixe lors de l'installation. Si le préfixe est identique à votre configuration, vous n'avez pas besoin d'utiliser -g .

Pour utiliser le module installé globalement, il doit être sur votre chemin:

export PATH=$PATH:~/.npm-global-modules/bin

Maintenant, lorsque vous exécutez npm install -g gulp-cli vous pourrez utiliser gulp .

Remarque: Lorsque vous npm install (sans -g ), le préfixe sera le répertoire contenant package.json ou le répertoire en cours si aucun élément n’est trouvé dans la hiérarchie. Cela crée également un répertoire node_modules/.bin les exécutables. Si vous souhaitez utiliser un exécutable spécifique à un projet, il n'est pas nécessaire d'utiliser npm install -g . Vous pouvez utiliser celui de node_modules/.bin .

Lier des projets pour un débogage et un développement plus rapides

La création de dépendances de projet peut parfois être une tâche fastidieuse. Au lieu de publier une version de package sur NPM et d'installer la dépendance pour tester les modifications, utilisez le npm link . npm link crée un lien symbolique afin que le dernier code puisse être testé dans un environnement local. Cela facilite le test des outils globaux et des dépendances de projet en autorisant le dernier code exécuté avant de publier une version.

Texte d'aide

NAME
       npm-link - Symlink a package folder

SYNOPSIS
         npm link (in package dir)
         npm link [<@scope>/]<pkg>[@<version>]

         alias: npm ln

Étapes pour lier les dépendances du projet

Lors de la création du lien de dépendance, notez que le nom du package est ce qui va être référencé dans le projet parent.

  1. CD dans un répertoire de dépendances (ex: cd ../my-dep )
  2. npm link
  3. CD dans le projet qui va utiliser la dépendance
  4. npm link my-dep ou si namespaced npm link @namespace/my-dep

Étapes pour lier un outil global

  1. CD dans le répertoire du projet (ex: cd eslint-watch )
  2. npm link
  3. Utiliser l'outil
  4. esw --quiet

Problèmes pouvant survenir

La liaison de projets peut parfois provoquer des problèmes si la dépendance ou l'outil global est déjà installé. npm uninstall (-g) <pkg> , puis en exécutant le npm link résout normalement tous les problèmes pouvant survenir.



Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow