Maison > interface Web > js tutoriel > Introduction à l'utilisation du NPM

Introduction à l'utilisation du NPM

PHPz
Libérer: 2019-09-23 12:08:24
avant
3032 Les gens l'ont consulté

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 à se connecter à partir du. Serveur NPM Téléchargez des packages tiers écrits par d'autres 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 saisissant « 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
Copier après la connexion

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
Copier après la connexion

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

npm install npm -g
Copier après la connexion

Utiliser la commande miroir Taobao :

npm install -g cnpm --registry=https://registry.npm.taobao.org
Copier après la connexion

Utilisez la commande npm pour installer le module

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

$ npm install <Module Name>
Copier après la connexion

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

$ npm install express
Copier après la connexion

Après l'installation, le package express est placé dans le répertoire node_modules sous le répertoire du projet, il vous suffit donc d'utiliser require (« express ») dans le code sans spécifier le chemin du package tiers.

var express = require(&#39;express&#39;);
Copier après la connexion

Installation globale et installation locale

L'installation du package npm est divisée en installation locale (locale) et installation globale (globale) Il existe deux types. À en juger par la ligne de commande, la différence réside uniquement dans l'existence de -g. Par exemple,

npm install express          # 本地安装
npm install express -g   # 全局安装
Copier après la connexion

Si l'erreur suivante se produit :

npm err! Error: connect ECONNREFUSED 127.0.0.1:8087
Copier après la connexion

La solution est : <🎜. >

$ npm config set proxy null
Copier après la connexion

Installation locale

  • 1. Placez le package d'installation sous ./node_modules (le répertoire dans lequel vous exécutez la commande npm s'il n'y en a pas). Répertoire node_modules, il sera exécuté actuellement Le répertoire node_modules est généré sous le répertoire de la commande npm.

  • 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 bénéficier des fonctionnalités 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
Copier après la connexion

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)
Copier après la connexion

Afficher les informations d'installation

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

$ npm list -g
├─┬ cnpm@4.3.2
│ ├── auto-correct@1.0.0
│ ├── bagpipe@0.3.5
│ ├── colors@1.1.2
│ ├─┬ commander@2.9.0
│ │ └── graceful-readlink@1.0.1
│ ├─┬ cross-spawn@0.2.9
│ │ └── lru-cache@2.7.3
……
Copier après la connexion

Si vous souhaitez afficher la version de un n° de module, vous pouvez utiliser la commande suivante :

$ npm list grunt

projectName@projectVersion /path/to/project/folder
└── grunt@0.4.1
Copier après la connexion


Utiliser package.json

package.json se trouve dans le répertoire du module 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!"
}
Copier après la connexion

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 package.

  • 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 spécifie le fichier d'entrée principal du programme, et require('moduleName') chargera ce fichier. La valeur par défaut de ce champ est index.js sous le répertoire racine du module.

  • 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
Copier après la connexion

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
Copier après la connexion


Module de mise à jour

Nous pouvons mettre à jour le module en utilisant la commande suivante :

$ npm update express
Copier après la connexion


Module de recherche

Rechercher des modules en utilisant :

$ npm search express
Copier après la connexion


Créer un module

Pour créer un module, un package Le fichier .json est essentiel. 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) runoob                   # 模块名
version: (1.0.0) 
description: Node.js 测试模块(www.runoob.com)  # 描述
entry point: (index.js) 
test command: make test
git repository: https://github.com/runoob/runoob.git  # Github 地址
keywords: 
author: 
license: (ISC) 
About to write to ……/node_modules/package.json:      # 生成地址
{
  "name": "runoob",
  "version": "1.0.0",
  "description": "Node.js 测试模块(www.runoob.com)",
  ……
}
Is this ok? (yes) yes
Copier après la connexion

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
Copier après la connexion

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

$ npm publish
Copier après la connexion

如果你以上的步骤都操作正确,你就可以跟其他模块一样使用 npm 来安装。


版本号

使用NPM下载和发布代码时都会接触到版本号。NPM使用语义版本号来管理代码,这里简单介绍一下。

语义版本号分为X.Y.Z三位,分别代表主版本号、次版本号和补丁版本号。当代码变更时,版本号按以下原则更新。

  • 如果只是修复bug,需要更新Z位。

  • 如果是新增了功能,但是向下兼容,需要更新Y位。

  • 如果有大变动,向下不兼容,需要更新X位。

版本号有了这个保证后,在申明第三方包依赖时,除了可依赖于一个固定版本号外,还可依赖于某个范围的版本号。例如"argv": "0.0.x"表示依赖于0.0.x系列的最新版argv。

NPM支持的所有版本号范围指定方式可以查看官方文档


NPM 常用命令

除了本章介绍的部分外,NPM还提供了很多功能,package.json里也有很多其它有用的字段。

除了可以在【https://npmjs.org/doc/】查看官方文档外,这里再介绍一些NPM常用命令。

  • NPM提供了很多命令,例如install和publish,使用npm help可查看所有命令。

  • NPM提供了很多命令,例如install和publish,使用npm help可查看所有命令。

  • 使用npm help 可查看某条命令的详细帮助,例如npm help install。

  • 在package.json所在目录下使用npm install . -g可先在本地安装当前命令行程序,可用于发布前的本地测试。

  • 使用npm update 可以把当前目录下node_modules子目录里边的对应模块更新至最新版本。

  • 使用npm update -g可以把全局安装的对应命令行程序更新至最新版。

  • 使用npm cache clear可以清空NPM本地缓存,用于对付使用相同版本号发布新版本代码的人。

  • 使用npm unpublish @可以撤销发布自己发布过的某个版本代码。


使用淘宝 NPM 镜像

大家都知道国内直接使用 npm 的官方镜像是非常慢的,这里推荐使用淘宝 NPM 镜像。

淘宝 NPM 镜像是一个完整 npmjs.org 镜像,你可以用此代替官方版本(只读),同步频率目前为 10分钟 一次以保证尽量与官方服务同步。

你可以使用淘宝定制的 cnpm (gzip 压缩支持) 命令行工具代替默认的 npm:

$ npm install -g cnpm --registry=https://registry.npm.taobao.org
Copier après la connexion

这样就可以使用 cnpm 命令来安装模块了:

$ cnpm install [name]
Copier après la connexion

更多信息可以查阅:http://npm.taobao.org/。

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
npm
source:runoob.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal