Introduction à l'utilisation du NPM


NPM est un outil de gestion de packages installé avec NodeJS. Il peut résoudre de nombreux problèmes dans le déploiement de code NodeJS. Les scénarios d'utilisation courants sont les suivants :

  • Autoriser les utilisateurs à télécharger des tiers. -party packages écrits par d’autres à partir du serveur NPM et utilisez-les localement.

  • Permet aux utilisateurs de télécharger et d'installer des programmes en ligne de commande écrits par d'autres à partir du serveur NPM pour une utilisation locale.

  • Permet aux utilisateurs de télécharger des packages ou des programmes en ligne de commande qu'ils écrivent sur le serveur NPM pour que d'autres puissent les utiliser.

Depuis que la nouvelle version de nodejs a intégré npm, npm a également été installé auparavant. Vous pouvez également tester si l'installation a réussi en entrant "npm -v" . La commande est la suivante. Si l'invite de version apparaît, cela signifie que l'installation est réussie :

$ npm -v
2.3.0

Si vous installez une ancienne version de npm, vous pouvez facilement la mettre à niveau via la commande npm. suit :

$ sudo npm install npm -g
/usr/local/bin/npm -> /usr/local/lib/node_modules/npm/bin/npm-cli.js
npm@2.14.2 /usr/local/lib/node_modules/npm

Si c'est Window Le système peut utiliser la commande suivante :

npm install npm -g

Utilisez la commande npm pour installer le module

npm installe le Node. js. Le format de syntaxe est le suivant :

$ npm install <Module Name>

Dans l'exemple suivant, nous utilisons La commande npm installe le module de framework Web Node.js couramment utilisé express:

$ npm install express

Après l'installation, le package express est placé dans le répertoire node_modules sous le répertoire du projet, donc dans le code dont vous avez seulement besoin, utilisez simplement require('express') sans spécifier le chemin du package tiers.

var express = require('express');

Installation globale et installation locale

L'installation du package npm est divisée en deux types : l'installation locale (locale) et l'installation globale (globale). À en juger par la ligne de commande, la différence. Juste sans -g, par exemple

npm install express          # 本地安装
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

  • 1. Placez le package d'installation sous ./node_modules (le répertoire où la commande npm est exécutée). S'il n'y a pas de répertoire node_modules, le répertoire node_modules sera généré dans le répertoire où la commande npm est actuellement exécutée.

  • 2. Les packages installés localement peuvent être introduits via require().

Installation globale

  • 1. Placez le package d'installation sous /usr/local ou dans le répertoire d'installation de votre nœud.

  • 2. Peut être utilisé directement dans la ligne de commande.

Si vous souhaitez avoir la fonctionnalité des deux, vous devez l'installer à deux endroits ou utiliser le lien npm.

Ensuite, nous utilisons la méthode globale pour installer express

$ npm install express -g

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

express@4.13.3 node_modules/express
├── escape-html@1.0.2
├── range-parser@1.0.2
├── merge-descriptors@1.0.0
├── array-flatten@1.1.1
├── cookie@0.1.3
├── utils-merge@1.0.0
├── parseurl@1.3.0
├── cookie-signature@1.0.6
├── methods@1.1.1
├── fresh@0.3.0
├── vary@1.0.1
├── path-to-regexp@0.1.7
├── content-type@1.0.1
├── etag@1.7.0
├── serve-static@1.10.0
├── content-disposition@0.5.0
├── depd@1.0.1
├── qs@4.0.0
├── finalhandler@0.4.0 (unpipe@1.0.0)
├── on-finished@2.3.0 (ee-first@1.1.1)
├── proxy-addr@1.0.8 (forwarded@0.1.0, ipaddr.js@1.0.1)
├── debug@2.2.0 (ms@0.7.1)
├── type-is@1.6.8 (media-typer@0.3.0, mime-types@2.1.6)
├── accepts@1.2.12 (negotiator@0.5.3, mime-types@2.1.6)
└── send@0.13.0 (destroy@1.0.3, statuses@1.2.1, ms@0.7.1, mime@1.3.4, http-errors@1.3.1)

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

$ npm ls -g

Utiliser package.json

package.json se trouve dans le répertoire du module, utilisez Utilisé pour définir les propriétés du package. Jetons ensuite un coup d'œil au fichier package.json du package express, situé dans node_modules/express/package.json Contenu :

{
  "name": "express",
  "description": "Fast, unopinionated, minimalist web framework",
  "version": "4.13.3",
  "author": {
    "name": "TJ Holowaychuk",
    "email": "tj@vision-media.ca"
  },
  "contributors": [
    {
      "name": "Aaron Heckmann",
      "email": "aaron.heckmann+github@gmail.com"
    },
    {
      "name": "Ciaran Jessup",
      "email": "ciaranj@gmail.com"
    },
    {
      "name": "Douglas Christopher Wilson",
      "email": "doug@somethingdoug.com"
    },
    {
      "name": "Guillermo Rauch",
      "email": "rauchg@gmail.com"
    },
    {
      "name": "Jonathan Ong",
      "email": "me@jongleberry.com"
    },
    {
      "name": "Roman Shtylman",
      "email": "shtylman+expressjs@gmail.com"
    },
    {
      "name": "Young Jae Sim",
      "email": "hanul@hanul.me"
    }
  ],
  "license": "MIT",
  "repository": {
    "type": "git",
    "url": "git+https://github.com/strongloop/express.git"
  },
  "homepage": "http://expressjs.com/",
  "keywords": [
    "express",
    "framework",
    "sinatra",
    "web",
    "rest",
    "restful",
    "router",
    "app",
    "api"
  ],
  "dependencies": {
    "accepts": "~1.2.12",
    "array-flatten": "1.1.1",
    "content-disposition": "0.5.0",
    "content-type": "~1.0.1",
    "cookie": "0.1.3",
    "cookie-signature": "1.0.6",
    "debug": "~2.2.0",
    "depd": "~1.0.1",
    "escape-html": "1.0.2",
    "etag": "~1.7.0",
    "finalhandler": "0.4.0",
    "fresh": "0.3.0",
    "merge-descriptors": "1.0.0",
    "methods": "~1.1.1",
    "on-finished": "~2.3.0",
    "parseurl": "~1.3.0",
    "path-to-regexp": "0.1.7",
    "proxy-addr": "~1.0.8",
    "qs": "4.0.0",
    "range-parser": "~1.0.2",
    "send": "0.13.0",
    "serve-static": "~1.10.0",
    "type-is": "~1.6.6",
    "utils-merge": "1.0.0",
    "vary": "~1.0.1"
  },
  "devDependencies": {
    "after": "0.8.1",
    "ejs": "2.3.3",
    "istanbul": "0.3.17",
    "marked": "0.3.5",
    "mocha": "2.2.5",
    "should": "7.0.2",
    "supertest": "1.0.1",
    "body-parser": "~1.13.3",
    "connect-redis": "~2.4.1",
    "cookie-parser": "~1.3.5",
    "cookie-session": "~1.2.0",
    "express-session": "~1.11.3",
    "jade": "~1.11.0",
    "method-override": "~2.3.5",
    "morgan": "~1.6.1",
    "multiparty": "~4.1.2",
    "vhost": "~3.0.1"
  },
  "engines": {
    "node": ">= 0.10.0"
  },
  "files": [
    "LICENSE",
    "History.md",
    "Readme.md",
    "index.js",
    "lib/"
  ],
  "scripts": {
    "test": "mocha --require test/support/env --reporter spec --bail --check-leaks test/ test/acceptance/",
    "test-ci": "istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --require test/support/env --reporter spec --check-leaks test/ test/acceptance/",
    "test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- --require test/support/env --reporter dot --check-leaks test/ test/acceptance/",
    "test-tap": "mocha --require test/support/env --reporter tap --check-leaks test/ test/acceptance/"
  },
  "gitHead": "ef7ad681b245fba023843ce94f6bcb8e275bbb8e",
  "bugs": {
    "url": "https://github.com/strongloop/express/issues"
  },
  "_id": "express@4.13.3",
  "_shasum": "ddb2f1fb4502bf33598d2b032b037960ca6c80a3",
  "_from": "express@*",
  "_npmVersion": "1.4.28",
  "_npmUser": {
    "name": "dougwilson",
    "email": "doug@somethingdoug.com"
  },
  "maintainers": [
    {
      "name": "tjholowaychuk",
      "email": "tj@vision-media.ca"
    },
    {
      "name": "jongleberry",
      "email": "jonathanrichardong@gmail.com"
    },
    {
      "name": "dougwilson",
      "email": "doug@somethingdoug.com"
    },
    {
      "name": "rfeng",
      "email": "enjoyjava@gmail.com"
    },
    {
      "name": "aredridel",
      "email": "aredridel@dinhe.net"
    },
    {
      "name": "strongloop",
      "email": "callback@strongloop.com"
    },
    {
      "name": "defunctzombie",
      "email": "shtylman@gmail.com"
    }
  ],
  "dist": {
    "shasum": "ddb2f1fb4502bf33598d2b032b037960ca6c80a3",
    "tarball": "http://registry.npmjs.org/express/-/express-4.13.3.tgz"
  },
  "directories": {},
  "_resolved": "https://registry.npmjs.org/express/-/express-4.13.3.tgz",
  "readme": "ERROR: No README data found!"
}

Description de la propriété Package.json

  • .

    nom - nom du package.

  • version - Le numéro de version du package.

  • description - Description du colis.

  • page d'accueil - l'URL du site officiel du colis.

  • auteur - Le nom de l'auteur du package.

  • contributeurs - Noms des autres contributeurs au package.

  • dépendances - liste des packages dépendants. Si le package dépendant n'est pas installé, npm installera automatiquement le package dépendant dans le répertoire node_module.

  • dépôt - Le type d'endroit où le code du package est stocké, il peut être git ou svn, git peut être sur Github.

  • main - Le champ principal est un identifiant de module, qui est un pointeur vers l'élément principal de votre programme. Autrement dit, si le nom de votre package est express et que l'utilisateur l'installe, alors require("express").

  • mots-clés - Mots-clés


Module de désinstallation

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

$ npm uninstall express


Après la désinstallation, vous pouvez accéder au répertoire /node_modules/ pour vérifier si le package existe toujours, ou utiliser la commande suivante pour vérifier :

$ npm ls

Module de mise à jour

Nous pouvons mettre à jour le module en utilisant :

$ npm update express

Module de recherche

Utilisez ce qui suit pour rechercher le module :

$ npm search express

Créer un module

Pour créer un module, le fichier package.json est indispensable. Nous pouvons utiliser NPM pour générer un fichier package.json, et le fichier généré contient les résultats 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) php                   # 模块名
version: (1.0.0) 
description: Node.js 测试模块(www.php.cn)  # 描述
entry point: (index.js) 
test command: make test
git repository: https://github.com/php/php.git  # Github 地址
keywords: 
author: 
license: (ISC) 
About to write to ……/node_modules/package.json:      # 生成地址

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


Is this ok? (yes) yes

Vous devez saisir les informations ci-dessus en fonction de votre propre situation. Après avoir entré « oui » à la fin, le fichier package.json sera généré.

Ensuite, nous pouvons utiliser la commande suivante pour enregistrer un utilisateur dans le référentiel npm (utilisez l'e-mail pour vous inscrire) :

$ npm adduser
Username: mcmohd
Password:
Email: (this IS public) mcmohd@gmail.com

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

$ npm publish

Si vous avez effectué correctement les étapes ci-dessus, vous pouvez utiliser npm pour l'installer comme les autres modules.


Numéro de version

Vous serez exposé au numéro de version lorsque vous utiliserez NPM pour télécharger et publier du code. NPM utilise des numéros de version sémantiques pour gérer le code. Voici une brève introduction.

Le numéro de version sémantique est divisé en trois chiffres : X.Y.Z, qui représentent respectivement le numéro de version majeure, le numéro de version mineure et le numéro de version du correctif. Lorsque le code change, le numéro de version est mis à jour selon les principes suivants.

  • Si vous corrigez simplement le bug, vous devez mettre à jour le bit Z.

  • Si une nouvelle fonction est ajoutée, mais qu'elle est rétrocompatible, le bit Y doit être mis à jour.

  • S'il y a des changements majeurs, il sera rétrocompatible et X bits devront être mis à jour.

Avec cette garantie sur le numéro de version, lors de la déclaration de dépendances de packages tiers, en plus de vous appuyer sur un numéro de version fixe, vous pouvez également vous appuyer sur une certaine plage de numéros de version. Par exemple, "argv": "0.0.x" signifie que cela dépend de la dernière version d'argv de la série 0.0.x.

Pour toutes les méthodes de désignation de plage de numéros de version prises en charge par NPM, veuillez consulter la documentation officielle.


Commandes NPM courantes

En plus des parties présentées dans ce chapitre, NPM fournit également de nombreuses fonctions, et il existe de nombreux autres champs utiles dans package.json.

En plus de consulter la documentation officielle sur npmjs.org/doc/, voici quelques commandes NPM courantes.

NPM fournit de nombreuses commandes, telles que l'installation et la publication. Utilisez l'aide de npm pour afficher toutes les commandes.

  • NPM fournit de nombreuses commandes, telles que install et publish, utilisez npm help pour afficher toutes les commandes.

  • Utilisez npm help <command> pour afficher l'aide détaillée pour une commande, telle que npm help install.

  • Utilisez package.json dans le répertoire où se trouve npm install . -g pour installer d'abord localement le programme de ligne de commande actuel, qui peut être utilisé pour des tests locaux avant la sortie.

  • Utilisez npm update <package> pour mettre à jour les modules correspondants dans le sous-répertoire node_modules du répertoire actuel vers la dernière version.

  • Utilisez npm update <package> -g pour mettre à jour le programme de ligne de commande correspondant installé globalement vers la dernière version.

  • Utilisez npm cache clear pour vider le cache local NPM, qui est utilisé pour traiter avec les personnes qui utilisent le même numéro de version pour publier de nouvelles versions de code.

  • Utilisez npm unpublish <package>@<version> pour dépublier une version du code que vous avez publié.