目錄(更新於2016.09.23):html
一、認識和使用NPMnode
二、npm包安裝模式linux
三、npm包管理(package的安裝、卸載、升級、查看、搜索、發佈,其餘等)git
- npm install [-g] 本地或全局安裝模塊
- npm uninstall [-g] 本地或全局卸載模塊
- npm update 更新模塊
- npm ls 查看安裝的模塊
- npm list 列出已安裝模塊
- npm show 顯示模塊詳情
- npm info 查看模塊的詳細信息
- npm search 搜索模塊
- npm publish 發佈模塊
- npm unpublish 刪除已發佈的模塊
- npm -v 或 npm version顯示版本信息
- npm view npm versions 列出npm 的全部有效版本
- npm install -g npm@2.14.14 /npm update -g npm@2.14.14 安裝指定的npm版本
- npm init 引導建立一個package.json文件,包括名稱、版本、做者這些信息等
- npm outdated #檢查模塊是否已通過時
- npm root [-g] 查看包的安裝路徑,輸出 node_modules的路徑,
- npm help 查看某條命令的詳細幫助 例如輸入npm help install
- npm config 管理npm的配置路徑
五、npm使用過程當中疑點github
一、認識和使用NPM數據庫
NPM(node package manager),一般稱爲node包管理器。顧名思義,它的主要功能就是管理node包,包括:安裝、卸載、更新、查看、搜索等。npm
npm的背後,是基於couchdb的一個數據庫,詳細記錄了每一個包的信息,包括做者、版本、依賴、受權信息等。它的一個很重要的做用就是:將開發者從繁瑣的包管理工做(版本、依賴等)中解放出來,更加專一於功能的開發。json
npm官網:https://npmjs.org/瀏覽器
官網文檔:https://docs.npmjs.com服務器
NPM是隨同NodeJS一塊兒安裝的包管理工具,能解決NodeJS代碼部署上的不少問題,常見的使用場景有如下幾種:
- 容許用戶從NPM服務器下載別人編寫的第三方包到本地使用。
- 容許用戶從NPM服務器下載並安裝別人編寫的命令行程序到本地使用。
- 容許用戶將本身編寫的包或命令行程序上傳到NPM服務器供別人使用。
因爲新版的nodejs已經集成了npm,因此以前npm也一併安裝好了。一樣能夠經過輸入 "npm -v" 來測試是否成功安裝。命令以下,出現版本提示表示安裝成功:
在具體介紹npm包的管理以前,咱們首先得來了解一下npm包的兩種安裝模式。
本地安裝 vs 全局安裝(重要)
node包的安裝分兩種:本地安裝、全局安裝。二者的區別以下,後面會經過簡單例子說明
- 本地安裝:package會被下載到當前所在目錄,也只能在當前目錄下使用。
- 全局安裝:package會被下載到到特定的系統目錄下,安裝的package可以在全部目錄下使用。
npm的包管理命令是使用頻率最高的,因此也是咱們須要緊緊記住並熟練使用的。其實無非也就是幾個動做:安裝、卸載、更新、查看、搜索等。
本地安裝,如grunt-cli
- npm install grunt-cli:安裝包grunt-cli,默認會安裝最新的版本
- npm install grunt-cli@"0.1.9":安裝0.1.9版本的grunt-cli
- npm install grunt-cli --save 或 npm install grunt-cli -S:安裝包grunt-cli並將信息將加入到package.json文件的dependencies(生產階段的依賴)
- npm install grunt-cli --save-dev 或 npm install grunt-cli -D:安裝包grunt-cli並將包信息寫入package.json文件的devDependencies(開發階段的依賴)配置中,這樣代碼提交到github時,就不用提交node_modules這個文件.
- npm install grunt-cli --save-optional 或 npm install grunt-cli -O:安裝包grunt-cli並將信息將加入到optionalDependencies(可選階段的依賴)
模塊的依賴都被寫入了package.json文件後,他人打開項目的根目錄(項目開源、內部團隊合做),使用npm install命令能夠根據dependencies配置安裝全部的依賴包

普通安裝完畢後會產生一個node_modules目錄,其目錄下就是安裝的各個node模塊。
全局安裝,如npm
- npm install -g npm :全局安裝npm
- npm install -g npm@2.14.14 :安裝指定的npm版本,同時也是下降和更新npm版本的方法;
全局安裝模塊的目錄通常爲c:\User\Administrator\AppData\Roaming\npm\node_modules\下;
全局安裝的模塊,在代碼中直接經過require()的方式是沒有辦法調用到的。全局的安裝是供命令行使用的,就好像全局安裝了vmarket後,就能夠在命令行中直接運行vm命令。也就是能夠直接在cmd的命令行中使用。
3.二、卸載模塊,好比grunt-cli
- npm uninstall grunt-cli: 卸載包grunt-cli
- npm uninstall grunt-cli@"0.1.9": 卸載0.1.9版本的grunt-cli
3.三、更新模塊,好比grunt-cli,全局npm
- npm update #升級當前目錄下的項目的全部模塊
- npm update grunt-cli 更新
- npm update -g npm@3.14.14,安裝指定的npm版本,同時也是更新npm版本的方法;
3.四、查看模塊,好比 grunt-cli
- npm ls grunt-cli:查看特定包grunt-cli的信息
- npm info grunt-cli:查看詳細的輸出信息(包括做者、版本、依賴等)。
- npm list #列出已安裝模塊
- npm show grunt-cli #顯示模塊詳情
3.五、搜索模塊,如 grunt-cli
3.六、發佈模塊
- npm publish,即將本身開發的包發佈到npm官網,成功以後,能夠在https://www.npmjs.com/登陸查看發佈的模塊。而後,就能夠用npm install安裝了。
- npm unpublish 模塊名 --force,刪除已發佈的模塊
運行以下命令,列出全部npm install可能的參數形式
- npm -v 或npm version 顯示版本
- npm init 會引導你建立一個package.json文件,包括名稱、版本、做者這些信息等
- npm view npm versions 列出npm 的全部有效版本
- npm outdated 檢查模塊是否已通過時,此命令會列出全部已通過時的包,能夠及時進行包的更新
- npm root [-g]查看包的安裝路徑,輸出 node_modules的路徑

- npm help 查看某條命令的詳細幫助 例如輸入npm help install,系統在默認的瀏覽器或者默認的編輯器中打開本地nodejs安裝包的文件/nodejs/node_modules/npm/html/doc/cli/npm-install.html
- npm config 管理npm的配置路徑
基礎語法
npm config set <key> <value> [-g|--global]
npm config get <key>
npm config delete <key>
npm config list
npm config edit
npm get <key>
npm set <key> <value> [-g|--global]
對於config這塊用得最多應該是設置代理,解決npm安裝一些模塊失敗的問題
例如我在公司內網,由於公司的防火牆緣由,沒法完成任何模塊的安裝,這個時候設置代理能夠解決
npm config set proxy=http://dev-proxy.oa.com:8080
又如國內的網絡環境問題,某官方的IP可能被和諧了,幸虧國內有好心人,搭建了鏡像,此時咱們簡單設置鏡像
npm config set registry="http://r.cnpmjs.org"
也能夠臨時配置,如安裝淘寶鏡像
npm install -g cnpm --registry=https://registry.npm.taobao.org
字段至關多,但最重要的的是下面幾個
- name: package的名字(因爲他會成爲url的一部分,因此 non-url-safe 的字母不會經過,也不容許出現"."、"_"),最好先在http://registry.npmjs.org/上搜下你取的名字是否已經存在
- version: package的版本,當package發生變化時,version也應該跟着一塊兒變化,同時,你聲明的版本須要經過semver的校驗(semver可自行谷歌)
- dependencies: package的應用依賴模塊,應用依賴模塊會安裝到當前模塊的node_modules目錄下
- devDependencies:package的開發依賴模塊,即別人要在這個package上進行開發
- 其餘:參見官網
五、npm使用過程當中疑點
5.一、理解sudo npm安裝,如:$ sudo npm install -g ionic
sudo命令是在linux環境中以管理員身份執行後面的命令。如爲當前帳戶添加node_modules目錄讀寫權限,命令爲sudo chown -R $(whoami) ~/.npm。
5.二、npm install會根據package.json來安裝相應的依賴模塊,可是安裝完成後會出現不少的文件夾,是什麼緣由呢?
緣由:這是 npm3 中做出的改變,也是最大的改變之一,5.0 用的是 npm3。npm -v 能夠查看 npm 版本。
若是你想按照package.json中的要求安裝模塊,你須要npm install 指定版本(這個版本必須還3.0之前的版本),執行命令:
npm view npm versions:列出npm 的全部有效版本
npm install -g npm@2.14.14 ,安裝指定的npm版本,同時也是下降npm版本的方法;
npm update -g npm@3.14.14,安裝指定的npm版本,同時也是更新npm版本的方法;
5.三、 安裝模塊過程當中出現以下提示:
fs: re-evaluating native module sources is not supported.
If you are using the graceful-fs module, please update it to a more recent version.
如圖:
寫在後面:內容只是簡單地把最多見的命令,以及一些須要瞭解的內容列了出來。如要進一步瞭解,可參考官網說明。此外,npm help是咱們最好的朋友,若是忘了有哪些命令,命令下有哪些參數,可經過help進行查看。
最關鍵的:若是文章內容有誤,請指出!!!