npm 是 Node.js 包管理器,幫助 JavaScript 開發(fā)者管理代碼模塊包。NPM(node package manager),通常稱為node包管理器。顧名思義,它的主要功能就是管理node包,包括:安裝、卸載、更新、查看、搜索、發(fā)布等。
npm 是一個(gè)命令行客戶端,允許開發(fā)者安裝和發(fā)布包。NPM 4.0 發(fā)布,這是去年 NPM 3 發(fā)布后的第一個(gè)語義版本,NPM 4 的發(fā)布意味著 NPM 2 和 NPM 3 都已經(jīng)成為維護(hù)版本,除非有重大 bug 修復(fù)或者安全更新,否則不會(huì)提供更新。NPM 4.0 除了預(yù)處理器有較大的影響,對(duì)其他的日常使用影響不大。NPM 已經(jīng)在加快發(fā)布的速度,CLI 團(tuán)隊(duì)之前主要關(guān)注于 Windows 方面的修復(fù)和嚴(yán)重問題的修復(fù),現(xiàn)在已經(jīng)轉(zhuǎn)向可用性、特性和性能方面。大家可以繼續(xù)關(guān)注 NPM 5 版本(計(jì)劃在 2017 年第一季度發(fā)布),計(jì)劃對(duì) shrinkwrap 做徹底的改進(jìn),還有各種速度和可用性的改進(jìn)。
npm 4.0 重大改進(jìn)包括:
npm search 重寫成流形式的結(jié)果,不再支持排序。
npm scripts 運(yùn)行腳本之前不需要用 node 可執(zhí)行路徑來運(yùn)行 npm,可以通過添加 --scripts-prepend-node-path 選項(xiàng)來配置這個(gè)行為。
移除 npat
廢棄 prepublish,替換成 prepare。臨時(shí)添加了一個(gè) prepublishOnly 腳本,只能在 npm publish 運(yùn)行。
npm 在沒有找到任何超時(shí)包的情況下按代碼 1 超時(shí)退出。
npm tag 在經(jīng)過一段廢棄周期后被廢除,使用 npm dist-tag 替代。
已經(jīng)不再支持部分 shrinkwraps,npm-shrinkwrap.json 現(xiàn)在被認(rèn)為是完整的安裝清單。
npm 的默認(rèn) git 分支不在是 master,現(xiàn)在使用 latest 代替。
npm于 2009 年作為一個(gè)開源項(xiàng)目發(fā)布,npm 當(dāng)前有 400 萬+ 用戶。npm 遵循 Artistic License 2.0 協(xié)議,GitHub 地址:https://github.com/npm/npm。
npm包安裝模式
在具體介紹npm包的管理之前,我們首先得來了解一下npm包的兩種安裝模式。
本地安裝 vs 全局安裝(重要)
node包的安裝分兩種:本地安裝、全局安裝。兩者的區(qū)別如下,后面會(huì)通過簡(jiǎn)單例子說明
本地安裝:package會(huì)被下載到當(dāng)前所在目錄,也只能在當(dāng)前目錄下使用。
全局安裝:package會(huì)被下載到到特定的系統(tǒng)目錄下,安裝的package能夠在所有目錄下使用。
npm install pkg - 本地安裝
運(yùn)行如下命令,就會(huì)在當(dāng)前目錄下安裝 grunt-cli (grunt命令行工具)
npm install grunt-cli
安裝結(jié)束后,當(dāng)前目錄下回多出一個(gè) node_modules 目錄,grunt-cli就安裝在里面。
npm install -g pkg- 全局安裝
上面已經(jīng)安裝了grunt-cli,然后你跑到其他目錄下面運(yùn)行如下命令
grunt
果斷提示你grunt命令不存在,為什么呢?因?yàn)樯厦嬷皇沁M(jìn)行了 本地安裝 ,grunt命令只能在對(duì)應(yīng)安裝目錄下使用。
-bash: grunt: command not found
如果為了使用grunt命令,每到一個(gè)目錄下都得重新安裝一次,那不抓狂才怪。腫么辦呢?
很簡(jiǎn)單,采用全局安裝就行了,很簡(jiǎn)單,加上參數(shù) -g 就可以了
npm install -g grunt-cli
于是,在所有目錄下都可以無壓力使用 grunt 命令了。這個(gè)時(shí)候,你會(huì)注意到控制臺(tái)輸入的信息有點(diǎn)不同。主要的區(qū)別在于安裝目錄,現(xiàn)在變成了 /usr/local/lib/node_modules/grunt-cli , /usr/local/lib/node_modules/ 也就是之前所說的全局安裝目錄啦。
npm包管理
npm的包管理命令是使用頻率最高的,所以也是我們需要牢牢記住并熟練使用的。其實(shí)無非也就是幾個(gè)動(dòng)作:安裝、卸載、更新、查看、搜索、發(fā)布等。
安裝最新版本的grunt-cli
npm install grunt-cli
安裝0.1.9版本的grunt-cli
npm install grunt-cli@"0.1.9"
通過package.json進(jìn)行安裝
如果我們的項(xiàng)目依賴了很多package,一個(gè)一個(gè)地安裝那將是個(gè)體力活。我們可以將項(xiàng)目依賴的包都在package.json這個(gè)文件里聲明,然后一行命令搞定
npm install
其他package安裝命令
運(yùn)行如下命令,列出所有 npm install 可能的參數(shù)形式
npm install --help
輸出如下,有興趣的童鞋可以了解下
npm install <tarball file>
npm install <tarball url>
npm install <folder>
npm install <pkg>
npm install <pkg>@<tag>
npm install <pkg>@<version>
npm install <pkg>@<version range>
卸載grunt-cli
比如卸載grunt-cli
npm uninstall grunt-cli