Heim > Web-Frontend > js-Tutorial > Einführung in die Verwendung von NPM

Einführung in die Verwendung von NPM

PHPz
Freigeben: 2019-09-23 12:08:24
nach vorne
3037 Leute haben es durchsucht

NPM ist ein Paketverwaltungstool, das zusammen mit NodeJS installiert wird. Es kann viele Probleme bei der NodeJS-Codebereitstellung lösen:

  • Ermöglichen Sie Benutzern die Anmeldung NPM-Server Laden Sie von anderen geschriebene Pakete von Drittanbietern herunter und verwenden Sie sie lokal.

  • Ermöglicht Benutzern das Herunterladen und Installieren von von anderen geschriebenen Befehlszeilenprogrammen vom NPM-Server zur lokalen Verwendung.

  • Ermöglicht Benutzern das Hochladen von Paketen oder Befehlszeilenprogrammen, die sie schreiben, auf den NPM-Server, damit andere sie verwenden können.

Da die neue Version von nodejs npm integriert hat, wurde npm auch schon einmal installiert. Sie können auch testen, ob die Installation erfolgreich ist, indem Sie „npm -v“ eingeben. Der Befehl lautet wie folgt. Wenn die Versionsaufforderung angezeigt wird, bedeutet dies, dass die Installation erfolgreich war:

$ npm -v
2.3.0
Nach dem Login kopieren

Wenn Sie eine alte Version von npm installieren, können Sie diese einfach über den Befehl npm aktualisieren folgt:

$ 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
Nach dem Login kopieren

Wenn es sich um ein Fenster handelt, kann das System den folgenden Befehl verwenden:

npm install npm -g
Nach dem Login kopieren

Taobao-Spiegelungsbefehl verwenden:

npm install -g cnpm --registry=https://registry.npm.taobao.org
Nach dem Login kopieren

Verwenden Sie den Befehl npm, um das Modul zu installieren

npm installiert das Node.js-Modul wie folgt:

$ npm install <Module Name>
Nach dem Login kopieren

Im folgenden Beispiel , verwenden wir den Befehl npm, um das häufig verwendete Node.js-Webframework-Modul express zu installieren:

$ npm install express
Nach dem Login kopieren

Nach der Installation wird das Express-Paket im Verzeichnis node_modules unter dem Projektverzeichnis abgelegt, sodass Sie nur require verwenden müssen ('express') im Code, ohne den Paketpfad des Drittanbieters anzugeben.

var express = require(&#39;express&#39;);
Nach dem Login kopieren

Globale Installation und lokale Installation

Die Installation des NPM-Pakets ist in lokale Installation (lokal) und globale Installation (global) unterteilt. Es gibt zwei Arten. Der Befehlszeile nach zu urteilen, besteht der Unterschied nur darin, ob es -g gibt. Zum Beispiel:

npm install express          # 本地安装
npm install express -g   # 全局安装
Nach dem Login kopieren

Wenn der folgende Fehler auftritt:

npm err! Error: connect ECONNREFUSED 127.0.0.1:8087
Nach dem Login kopieren

>

$ npm config set proxy null
Nach dem Login kopieren

Lokale Installation

  • 1. Platzieren Sie das Installationspaket unter ./node_modules (das Verzeichnis, in dem der npm-Befehl ausgeführt wird). Verzeichnis „node_modules“, es wird derzeit ausgeführt. Das Verzeichnis „node_modules“ wird unter dem Verzeichnis des npm-Befehls generiert.

  • 2. Lokal installierte Pakete können über require() eingeführt werden.

Globale Installation

  • 1. Platzieren Sie das Installationspaket unter /usr/local oder im Installationsverzeichnis Ihres Knotens .

  • 2. Kann direkt in der Befehlszeile verwendet werden.

Wenn Sie die Funktionalität von beiden nutzen möchten, müssen Sie es an zwei Stellen installieren oder den NPM-Link verwenden.

Als nächstes verwenden wir die globale Methode, um Express zu installieren

$ npm install express -g
Nach dem Login kopieren

Der Installationsprozess gibt den folgenden Inhalt aus. Die erste Zeile gibt die Versionsnummer und den Installationsort des Moduls aus.

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)
Nach dem Login kopieren

Installationsinformationen anzeigen

Mit dem folgenden Befehl können Sie alle global installierten Module anzeigen:

$ 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
……
Nach dem Login kopieren

Wenn Sie die Version von anzeigen möchten Wenn Sie eine Modulnummer haben, können Sie den folgenden Befehl verwenden:

$ npm list grunt

projectName@projectVersion /path/to/project/folder
└── grunt@0.4.1
Nach dem Login kopieren


Use package.json

package.json befindet sich in Das Verzeichnis des Moduls zum Definieren der Eigenschaften des Pakets. Schauen wir uns als Nächstes die package.json-Datei des Express-Pakets an, die sich unter node_modules/express/package.json befindet. Inhalt:

{
  "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!"
}
Nach dem Login kopieren

Package.json-Eigenschaftsbeschreibung

  • Name – Paketname.

  • Version – Die Versionsnummer des Pakets.

  • Beschreibung – Beschreibung des Pakets.

  • Homepage – die offizielle Website-URL des Pakets.

  • Autor – Der Name des Autors des Pakets.

  • Mitwirkende – Namen anderer Mitwirkender des Pakets.

  • Abhängigkeiten – Liste der abhängigen Pakete. Wenn das abhängige Paket nicht installiert ist, installiert npm das abhängige Paket automatisch im Verzeichnis node_module.

  • Repository – Die Art des Ortes, an dem der Paketcode gespeichert ist. Es kann Git oder SVN sein, Git kann auf Github sein.

  • main – Das Hauptfeld gibt die Haupteintragsdatei des Programms an und require('moduleName') lädt diese Datei. Der Standardwert dieses Felds ist index.js im Stammverzeichnis des Moduls.

  • Schlüsselwörter - Schlüsselwörter


Modul deinstallieren

Mit dem folgenden Befehl können wir das Node.js-Modul deinstallieren.

$ npm uninstall express
Nach dem Login kopieren

Nach der Deinstallation können Sie in das Verzeichnis /node_modules/ gehen, um zu überprüfen, ob das Paket noch existiert, oder den folgenden Befehl verwenden, um zu überprüfen:

$ npm ls
Nach dem Login kopieren


Modul aktualisieren

Wir können das Modul mit dem folgenden Befehl aktualisieren:

$ npm update express
Nach dem Login kopieren


Suchmodul

Module suchen mit:

$ npm search express
Nach dem Login kopieren


Modul erstellen

So erstellen Sie ein Modul, ein Paket Die .json-Datei ist unerlässlich. Wir können NPM verwenden, um eine package.json-Datei zu generieren, und die generierte Datei enthält die grundlegenden Ergebnisse.

$ 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
Nach dem Login kopieren

Sie müssen die oben genannten Informationen entsprechend Ihrer eigenen Situation eingeben. Nachdem Sie am Ende „Ja“ eingegeben haben, wird die Datei package.json generiert.

Als nächstes können wir den folgenden Befehl verwenden, um einen Benutzer im npm-Repository zu registrieren (verwenden Sie E-Mail, um sich zu registrieren):

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

Als nächstes verwenden wir den folgenden Befehl, um das Modul zu veröffentlichen:

$ npm publish
Nach dem Login kopieren

如果你以上的步骤都操作正确,你就可以跟其他模块一样使用 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
Nach dem Login kopieren

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

$ cnpm install [name]
Nach dem Login kopieren

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

Das obige ist der detaillierte Inhalt vonEinführung in die Verwendung von NPM. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
npm
Quelle:runoob.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage