Heim >Web-Frontend >js-Tutorial >Einführung in die Verwendung von NPM
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
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
Wenn es sich um ein Fenster handelt, kann das System den folgenden Befehl verwenden:
npm install npm -g
Taobao-Spiegelungsbefehl verwenden:
npm install -g cnpm --registry=https://registry.npm.taobao.org
Verwenden Sie den Befehl npm, um das Modul zu installieren
npm installiert das Node.js-Modul wie folgt:
$ npm install <Module Name>
Im folgenden Beispiel , verwenden wir den Befehl npm, um das häufig verwendete Node.js-Webframework-Modul express zu installieren:
$ npm install express
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('express');
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 # 全局安装
Wenn der folgende Fehler auftritt:
npm err! Error: connect ECONNREFUSED 127.0.0.1:8087
>
$ npm config set proxy null
Lokale Installation
Globale Installation
$ npm install express -gDer 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)
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 ……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
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!" }
Package.json-Eigenschaftsbeschreibung
Modul deinstallieren
Mit dem folgenden Befehl können wir das Node.js-Modul deinstallieren.$ npm uninstall expressNach 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
Modul aktualisieren
$ npm update express
Suchmodul
Module suchen mit:$ npm search express
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) yesSie 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.comAls nächstes verwenden wir den folgenden Befehl, um das Modul zu veröffentlichen:
$ npm publish
如果你以上的步骤都操作正确,你就可以跟其他模块一样使用 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 e2b9f03cad787b9644e1f51fd23b7dac可查看某条命令的详细帮助,例如npm help install。
在package.json所在目录下使用npm install . -g可先在本地安装当前命令行程序,可用于发布前的本地测试。
使用npm update 6112fef22dc3bff574b3ebf52fb7ce22可以把当前目录下node_modules子目录里边的对应模块更新至最新版本。
使用npm update 6112fef22dc3bff574b3ebf52fb7ce22 -g可以把全局安装的对应命令行程序更新至最新版。
使用npm cache clear可以清空NPM本地缓存,用于对付使用相同版本号发布新版本代码的人。
使用npm unpublish 6112fef22dc3bff574b3ebf52fb7ce22@3d689bd3819ead35ed794427bd12f459可以撤销发布自己发布过的某个版本代码。
使用淘宝 NPM 镜像
大家都知道国内直接使用 npm 的官方镜像是非常慢的,这里推荐使用淘宝 NPM 镜像。
淘宝 NPM 镜像是一个完整 npmjs.org 镜像,你可以用此代替官方版本(只读),同步频率目前为 10分钟 一次以保证尽量与官方服务同步。
你可以使用淘宝定制的 cnpm (gzip 压缩支持) 命令行工具代替默认的 npm:
$ npm install -g cnpm --registry=https://registry.npm.taobao.org
这样就可以使用 cnpm 命令来安装模块了:
$ cnpm install [name]
更多信息可以查阅: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!