NPM是随同NodeJS一起安裝的包管理工具,能解決NodeJS代碼部署上的很多問題,常見的使用場景有以下幾種:
允許使用者從NPM伺服器下載下傳别人編寫的第三方包到本地使用。
允許使用者從NPM伺服器下載下傳并安裝别人編寫的指令行程式到本地使用。
允許使用者将自己編寫的包或指令行程式上傳到NPM伺服器供别人使用。
由于新版的nodejs已經內建了npm,是以之前npm也一并安裝好了。同樣可以通過輸入 <b>"npm -v" </b>來測試是否成功安裝。指令如下,出現版本提示表示安裝成功:
如果你安裝的是舊版本的 npm,可以很容易得通過 npm 指令來更新,指令如下:
如果是 Window 系統使用以下指令即可:
使用淘寶鏡像的指令:
npm 安裝 Node.js 子產品文法格式如下:
以下執行個體,我們使用 npm 指令安裝常用的 Node.js web架構子產品 <b>express</b>:
安裝好之後,express 包就放在了工程目錄下的 node_modules 目錄中,是以在代碼中隻需要通過 <b>require('express')</b> 的方式就好,無需指定第三方包路徑。
npm 的包安裝分為本地安裝(local)、全局安裝(global)兩種,從敲的指令行來看,差别隻是有沒有-g而已,比如
如果出現以下錯誤:
解決辦法為:
1. 将安裝包放在 ./node_modules 下(運作 npm 指令時所在的目錄),如果沒有 node_modules 目錄,會在目前執行 npm 指令的目錄下生成 node_modules 目錄。
2. 可以通過 require() 來引入本地安裝的包。
1. 将安裝包放在 /usr/local 下或者你 node 的安裝目錄。
2. 可以直接在指令行裡使用。
如果你希望具備兩者功能,則需要在兩個地方安裝它或使用 npm link。
接下來我們使用全局方式安裝 express
安裝過程輸出如下内容,第一行輸出了子產品的版本号及安裝位置。
你可以使用以下指令來檢視所有全局安裝的子產品:
如果要檢視某個子產品的版本号,可以使用指令如下:
package.json 位于子產品的目錄下,用于定義包的屬性。接下來讓我們來看下 express 包的 package.json 檔案,位于 node_modules/express/package.json 内容:
<b>name</b> - 包名。
<b>version</b> - 包的版本号。
<b>description</b> - 包的描述。
<b>homepage</b> - 包的官網 url 。
<b>author</b> - 包的作者姓名。
<b>contributors</b> - 包的其他貢獻者姓名。
<b>dependencies</b> - 依賴包清單。如果依賴包沒有安裝,npm 會自動将依賴包安裝在 node_module 目錄下。
<b>repository</b> - 包代碼存放的地方的類型,可以是 git 或 svn,git 可在 Github 上。
<b>main</b> - main 字段指定了程式的主入口檔案,require('moduleName') 就會加載這個檔案。這個字段的預設值是子產品根目錄下面的 index.js。
<b>keywords</b> - 關鍵字
我們可以使用以下指令來解除安裝 Node.js 子產品。
解除安裝後,你可以到 /node_modules/ 目錄下檢視包是否還存在,或者使用以下指令檢視:
我們可以使用以下指令更新子產品:
使用以下來搜尋子產品:
建立子產品,package.json 檔案是必不可少的。我們可以使用 NPM 生成 package.json 檔案,生成的檔案包含了基本的結果。
以上的資訊,你需要根據你自己的情況輸入。在最後輸入 "yes" 後會生成 package.json 檔案。
接下來我們可以使用以下指令在 npm 資源庫中注冊使用者(使用郵箱注冊):
接下來我們就用以下指令來釋出子產品:
如果你以上的步驟都操作正确,你就可以跟其他子產品一樣使用 npm 來安裝。
使用NPM下載下傳和釋出代碼時都會接觸到版本号。NPM使用語義版本号來管理代碼,這裡簡單介紹一下。
語義版本号分為X.Y.Z三位,分别代表主版本号、次版本号和更新檔版本号。當代碼變更時,版本号按以下原則更新。
如果隻是修複bug,需要更新Z位。
如果是新增了功能,但是向下相容,需要更新Y位。
如果有大變動,向下不相容,需要更新X位。
版本号有了這個保證後,在申明第三方包依賴時,除了可依賴于一個固定版本号外,還可依賴于某個範圍的版本号。例如"argv": "0.0.x"表示依賴于0.0.x系列的最新版argv。
NPM支援的所有版本号範圍指定方式可以檢視官方文檔。
除了本章介紹的部分外,NPM還提供了很多功能,package.json裡也有很多其它有用的字段。
除了可以在npmjs.org/doc/檢視官方文檔外,這裡再介紹一些NPM常用指令。
NPM提供了很多指令,例如install和publish,使用npm help可檢視所有指令。
NPM提供了很多指令,例如<code>install</code>和<code>publish</code>,使用<code>npm help</code>可檢視所有指令。
使用<code>npm help <command></code>可檢視某條指令的詳細幫助,例如<code>npm help install</code>。
在<code>package.json</code>所在目錄下使用<code>npm install . -g</code>可先在本地安裝目前指令行程式,可用于釋出前的本地測試。
使用<code>npm update <package></code>可以把目前目錄下<code>node_modules</code>子目錄裡邊的對應子產品更新至最新版本。
使用<code>npm update <package> -g</code>可以把全局安裝的對應指令行程式更新至最新版。
使用<code>npm cache clear</code>可以清空NPM本地緩存,用于對付使用相同版本号釋出新版本代碼的人。
使用<code>npm unpublish <package>@<version></code>可以撤銷釋出自己釋出過的某個版本代碼。
大家都知道國内直接使用 npm 的官方鏡像是非常慢的,這裡推薦使用淘寶 NPM 鏡像。
淘寶 NPM 鏡像是一個完整 npmjs.org 鏡像,你可以用此代替官方版本(隻讀),同步頻率目前為 10分鐘 一次以保證盡量與官方服務同步。
你可以使用淘寶定制的 cnpm (gzip 壓縮支援) 指令行工具代替預設的 npm:
這樣就可以使用 cnpm 指令來安裝子產品了:
更多資訊可以查閱:http://npm.taobao.org/。