Node程序包管理器(NPM)提供了以下兩個主要功能:
在線存儲庫的Node.js包/模塊,可搜索 search.nodejs.org
命令行實用程序來安裝Node.js的包,做版本管理和Node.js包依賴管理。
NPM捆綁v0.6.3版本在一起以后,Node.js可直接安裝。為了驗證一致性,打開控制臺,然后輸入以下命令,看到的結(jié)果:
$ npm --version 2.7.1
如果您正在運行舊版本npm,那么可以將其更新到最新版本。只要從root使用以下命令:
$ sudo npm install npm -g /usr/bin/npm -> /usr/lib/node_modules/npm/bin/npm-cli.js npm@2.7.1 /usr/lib/node_modules/npm
有一個簡單安裝任何Node.js模塊,語法如下:
$ npm install <Module Name>
例如,下面是安裝一個著名的Node.jsweb框架模塊的命令叫 express:
$ npm install express
現(xiàn)在,你可以在js文件中使用此模塊如下:
var express = require('express');
默認情況下,NPM安裝任何依賴在本地模式。在這里,本地模式是指包安裝在node_modules目錄位于的地方節(jié)點應用程序存在的文件夾中。本地部署的包都可以通過 require()方法進行訪問。例如,當我們安裝Express模塊,它安裝Express模塊當前目錄中創(chuàng)建node_modules目錄。
$ ls -l total 0 drwxr-xr-x 3 root root 20 Mar 17 02:23 node_modules
另外,您可以使用npm ls命令列出了所有本地安裝的模塊。
全局范圍內(nèi)已安裝的軟件包/依賴性都存儲在系統(tǒng)目錄中。這種依賴關(guān)系可以在任何Node.js的CLI(命令行界面)功能可以使用,但不能直接使用require()的Node應用程序中導入。 現(xiàn)在,讓我們嘗試使用全局安裝Express模塊。
$ npm install express -g
這將產(chǎn)生類似的結(jié)果,模塊將在全局范圍內(nèi)安裝。在這里,第一行講述了在那里得到安裝模塊版本和它的位置。
express@4.12.2 /usr/lib/node_modules/express ├── merge-descriptors@1.0.0 ├── utils-merge@1.0.0 ├── cookie-signature@1.0.6 ├── methods@1.1.1 ├── fresh@0.2.4 ├── cookie@0.1.2 ├── escape-html@1.0.1 ├── range-parser@1.0.2 ├── content-type@1.0.1 ├── finalhandler@0.3.3 ├── vary@1.0.0 ├── parseurl@1.3.0 ├── content-disposition@0.5.0 ├── path-to-regexp@0.1.3 ├── depd@1.0.0 ├── qs@2.3.3 ├── on-finished@2.2.0 (ee-first@1.1.0) ├── etag@1.5.1 (crc@3.2.1) ├── debug@2.1.3 (ms@0.7.0) ├── proxy-addr@1.0.7 (forwarded@0.1.0, ipaddr.js@0.1.9) ├── send@0.12.1 (destroy@1.0.3, ms@0.7.0, mime@1.3.4) ├── serve-static@1.9.2 (send@0.12.2) ├── accepts@1.2.5 (negotiator@0.5.1, mime-types@2.0.10) └── type-is@1.6.1 (media-typer@0.3.0, mime-types@2.0.10)
您可以使用下面的命令來檢查所有全局安裝的模塊:
$ npm ls -g
package.json是存在于任何Node應用程序/模塊的根目錄和用于定義一個包的屬性。讓我們打開package.json在當前 node_modules/express/
{ "name": "express", "description": "Fast, unopinionated, minimalist web framework", "version": "4.11.2", "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": "https://github.com/strongloop/express" }, "homepage": "http://expressjs.com/", "keywords": [ "express", "framework", "sinatra", "web", "rest", "restful", "router", "app", "api" ], "dependencies": { "accepts": "~1.2.3", "content-disposition": "0.5.0", "cookie-signature": "1.0.5", "debug": "~2.1.1", "depd": "~1.0.0", "escape-html": "1.0.1", "etag": "~1.5.1", "finalhandler": "0.3.3", "fresh": "0.2.4", "media-typer": "0.3.0"下一篇:Node.js工具模塊