整理自菜鳥教程javascript
npm 是隨同NodeJS一塊兒安裝的包管理工具,能解決NodeJS代碼部署上的不少問題,常見的使用場景有如下幾種:css
因爲新版的nodejs已經集成了npm,因此以前npm也一併安裝好了。一樣能夠經過輸入 「npm -v」 來測試是否成功安裝。命令以下,出現版本提示表示安裝成功:java
C:\Users\peipei3514>npm -v
5.5.1
若是你安裝的是舊版本的 npm,能夠很容易得經過 npm 命令來升級,命令以下(管理員權限):node
C:\WINDOWS\system32>npm install npm -g
C:\Program Files\nodejs\node_gobal\npm -> C:\Program Files\nodejs\node_gobal\node_modules\npm\bin\npm-cli.js
C:\Program Files\nodejs\node_gobal\npx -> C:\Program Files\nodejs\node_gobal\node_modules\npm\bin\npx-cli.js
+ npm@5.6.0
added 476 packages in 17.895s
npm 安裝 Node.js 模塊語法格式以下:git
npm install <Module Name>
如下實例,咱們使用 npm 命令安裝經常使用的 Node.js web框架模塊 express:github
C:\WINDOWS\system32>npm install express -g
+ express@4.16.2
added 48 packages in 11.272s
安裝好以後,express 包就放在了工程目錄下的 node_modules 目錄中,所以在代碼中只須要經過 require(‘express’) 的方式就好,無需指定第三方包路徑。web
var express = require('express');
npm 的包安裝分爲本地安裝(local)、全局安裝(global)兩種,從敲的命令行來看,差異只是有沒有-g而已,好比redis
npm install express # 本地安裝
npm install express -g # 全局安裝
若是出現如下錯誤:sql
npm err! Error: connect ECONNREFUSED 127.0.0.1:8087
解決辦法爲:express
npm config set proxy null
若是你但願具有二者功能,則須要在兩個地方安裝它或使用 npm link。
接下來咱們使用全局方式安裝 express
C:\WINDOWS\system32>npm install express -g
+ express@4.16.2
added 48 packages in 11.272s
你可使用如下命令來查看全部全局安裝的模塊:
C:\WINDOWS\system32>npm list -g
C:\Program Files\nodejs\node_gobal
`-- express@4.16.2
+-- accepts@1.3.4
| +-- mime-types@2.1.17
| | `-- mime-db@1.30.0
| `-- negotiator@0.6.1
+-- array-flatten@1.1.1
+-- body-parser@1.18.2
| +-- bytes@3.0.0
| +-- content-type@1.0.4 deduped
| +-- debug@2.6.9 deduped
若是要查看某個模塊的版本號,可使用命令以下:
C:\WINDOWS\system32>npm list express -g
C:\Program Files\nodejs\node_gobal
`-- express@4.16.2
package.json 位於模塊的目錄下,用於定義包的屬性。接下來讓咱們來看下 express 包的 package.json 文件,位於 node_modules/express/package.json 內容:
{
"_from": "express",
...
"_phantomChildren": {},
"_requested": {
"type": "tag",
"registry": true,
...
"fetchSpec": "latest"
},
"_requiredBy": [
"#USER"
],
"_resolved": "https://registry.npmjs.org/express/-/express-4.16.2.tgz",
"_shasum": "e35c6dfe2d64b7dca0a5cd4f21781be3299e076c",
"_spec": "express",
"_where": "C:\\WINDOWS\\system32",
"author": {
"name": "TJ Holowaychuk",
"email": "tj@vision-media.ca"
},
"bugs": {
"url": "https://github.com/expressjs/express/issues"
},
"bundleDependencies": false,
"contributors": [
{
"name": "Aaron Heckmann",
"email": "aaron.heckmann+github@gmail.com"
}
],
"dependencies": {
"accepts": "~1.3.4",
"array-flatten": "1.1.1",
...
"type-is": "~1.6.15",
"utils-merge": "1.0.1",
"vary": "~1.1.2"
},
"deprecated": false,
"description": "Fast, unopinionated, minimalist web framework",
"devDependencies": {
"after": "0.8.2",
"connect-redis": "~2.4.1",
...
"vhost": "~3.0.2"
},
"engines": {
"node": ">= 0.10.0"
},
"files": [
"LICENSE",
"History.md",
"Readme.md",
"index.js",
"lib/"
],
"homepage": "http://expressjs.com/",
"keywords": [
"express",
...
"app",
"api"
],
"license": "MIT",
"name": "express",
"repository": {
"type": "git",
"url": "git+https://github.com/expressjs/express.git"
},
"scripts": {
"lint": "eslint .",
...
"test-tap": "mocha --require test/support/env --reporter tap --check-leaks --no-exit test/ test/acceptance/"
},
"version": "4.16.2"
}
Package.json 屬性說明:
咱們可使用如下命令來卸載 Node.js 模塊。
npm uninstall express
卸載後,你能夠到 /node_modules/ 目錄下查看包是否還存在,或者使用如下命令查看:
npm ls
咱們可使用如下命令更新模塊:
npm update express
使用如下來搜索模塊:
npm search express
npm help <command>
可查看某條命令的詳細幫助,例如npm help install。npm install . -g
可先在本地安裝當前命令行程序,可用於發佈前的本地測試。npm update <package>
能夠把當前目錄下node_modules子目錄裏邊的對應模塊更新至最新版本。npm update <package> -g
能夠把全局安裝的對應命令行程序更新至最新版。npm cache clear
能夠清空NPM本地緩存,用於對付使用相同版本號發佈新版本代碼的人。npm unpublish <package>@<version>
能夠撤銷發佈本身發佈過的某個版本代碼。你們都知道國內直接使用 npm 的官方鏡像是很是慢的,這裏推薦使用淘寶 NPM 鏡像。
淘寶 NPM 鏡像是一個完整 npmjs.org 鏡像,你能夠用此代替官方版本(只讀),同步頻率目前爲 10分鐘 一次以保證儘可能與官方服務同步。
你可使用淘寶定製的 cnpm (gzip 壓縮支持) 命令行工具代替默認的 npm:
npm install -g cnpm --registry=https://registry.npm.taobao.org
這樣就可使用 cnpm 命令來安裝模塊了:
cnpm install [name]