n=NPM是一個Node包管理和分發工具,已經成為了非官方的發布Node模塊(包)的標准。有了NPM,可以很快的找到特定服務要使用的包,進行下載、安裝以及管理已經安裝的包。npms安裝:
下載npm源代碼:
https://github.com/isaacs/npm/tags
將npm源代碼解壓到D:\npmjs目錄中。
在命令提示符窗口中執行下面的操作,完成npm的安裝:
D:\>cd npmjs
D:\npmjs>node cli.js install -gf
另外:
node cli.js install npm -gf //可以安裝最新版的NPM
node cli.js install npm@1.0.105 -gf //可以安裝指定版本的NPM
上面兩種方法都是通過網絡從代碼庫中下載並安裝,但是代碼庫一般只保留最近的兩個版本。
NPM安裝完成后,將"D:\nodejs\node_modules"加入系統環境變量NODE_PATH中。
D:\develop\nodejs\hello>npm install -d
npm info it worked if it ends with ok
npm info using npm@1.0.103
npm info using node@v0.5.10
npm info preinstall application-name@0.0.1
npm info addNamed [ 'jade', '>= 0.0.1' ]
npm info addNamed [ 'express', '2.5.0' ]
最好設置下國內鏡像要不然下載會很慢。淘寶有個npm鏡像。
NPM常用的命令有:
(1)$ npm install moduleNames
安裝Node模塊
注意事項:如果在使用模塊的時候不知道其名字,可以通過http://search.npmjs.org網站按照
索引值找到想要的模塊。npm也提供了查詢的功能 $ npm search indexName
安裝完畢后會產生一個node_modules目錄,其目錄下就是安裝的各個node模塊。
node的安裝分為全局模式和本地模式。一般情況下會以本地模式運行,包會被安裝
到和你的應用代碼統計的本地node_modules目錄下。在全局模式下,Node包會被
安裝到Node的安裝目錄下的node_modules下。全局安裝命令為
$ npm install -g moduleName。獲知使用$npm set global=true來設定安裝模式
,$npm get global可以查看當前使用的安裝模式。
我最開始已經用這個安裝formidable:
C:\Users\Administrator
>nmp install formidable
我的代碼放在H盤:
var formidable = require('formidable'),
運行總是報錯:
原因是什么呢?原來node.js 模塊安裝有兩種方式,一種是local安裝,一種是全局安裝。
nmp install xxx 普通安裝
npm install xxx -g 將會被安裝到【全局目錄】里,我的是安裝在:
C:\Users\Administrator\AppData\Roaming\npm\node_modules 目錄。
可以通過 npm config set prefix "目錄路徑" 來設置。
普通的npm會安裝到當前目錄,加上—global參數(簡寫為-g)就會安裝到默認的全局目錄,至於Node和npm的默認目錄是哪些,建議閱讀這篇文章,對於win7,8用戶言,現在是默認裝到Program Files\nodejs下, npm 的 repo在 %USERPROFILE%\AppData\Roaming\npm 且會自動加到系統PATH下。
1. npm install xxx -g 時, 模塊將被下載安裝到【全局目錄】中。
【全局目錄】通過 npm config set prefix "目錄路徑" 來設置。
2. npm install xxx ,則是將模塊下載到當前命令行所在目錄。
例如:
c:\123>npm install xxx
將會安裝到
c:\123\node_modules\xxx
如果是全局安裝,還要設置一個環境變量,
NODE_PATH =C:\Users\Administrator\AppData\Roaming\npm\node_modules
就可以了。
(2)$ npm view moduleNames
查看node模塊的package.json文件夾
注意事項:如果想要查看package.json文件夾下某個標簽的內容,可以使用
$ npm view moduleName labelName
(3)$ npm list
查看當前目錄下已安裝的node包
注意事項:Node模塊搜索是從代碼執行的當前目錄開始的,搜索結果取決於當前使用的目錄中
的node_modules下的內容。$ npm list parseable=true可以目錄的形式來展現當
前安裝的所有node包
(4)$ npm help
查看幫助命令
(5)$ npm view moudleName dependencies
查看包的依賴關系
(6)$ npm view moduleName repository.url
查看包的源文件地址
(7)$ npm view moduleName engines
查看包所依賴的Node的版本
(8)$npm help folders
查看npm使用的所有文件夾
(9)$ npm rebuild moduleName
用於更改包內容后進行重建
(10)$ npm outdated
檢查包是否已經過時,此命令會列出所有已經過時的包,可以及時進行包的更新
(11)$ npm update moduleName
更新node模塊
(12)$ npm uninstall moudleName
卸載node模塊
(13)一個npm包是包含了package.json的文件夾,package.json描述了這個文件夾的結構。訪
問npm的json文件夾的方法如下:
$ npm help json
此命令會以默認的方式打開一個網頁,如果更改了默認打開程序則可能不會以網頁的形式打
開。
(14)發布一個npm包的時候,需要檢驗某個包名是否已存在
$ npm search packageName
(15)很多時候我們在使用一個npm包的時候經常會忘記了require其相互依賴的模塊,我們可以
借助如如下命令來查看此模塊相互依賴的包都有哪些
更多命令請參看npm官方文檔http://npmjs.org/doc/
參考:http://blog.csdn.net/dellheng/article/details/7076461
local安裝和global安裝區別:
npm的包安裝分為本地安裝(local)、全局安裝(global)兩種,從敲的命令行來看,差別只是有沒有-g而已,比如:
npm install grunt # 本地安裝
npm install -g grunt-cli # 全局安裝
這兩種安裝方式有什么區別呢?從npm官方文檔的說明來看,主要區別在於(后面通過具體的例子來說明):
本地安裝
1. 將安裝包放在 ./node_modules 下(運行npm時所在的目錄)
2. 可以通過 require() 來引入本地安裝的包
全局安裝
1. 將安裝包放在 /usr/local 下
2. 可以直接在命令行里使用
本地安裝
1、將安裝包放在 ./node_modules 下(運行npm時所在的目錄)
比如運行下面命令
npm install grunt --save-dev
那么,就會在當前目錄下發現一個node_modules目錄,進去后能夠看到grunt這個包
casperchenMacBookPro:testUsemin casperchen$ ll
total 200
drwxr-xr-x 16 casperchen staff 544B 12 14 23:17 node_modules
進入node_modules
casperchenMacBookPro:node_modules casperchen$ ll
total 0
drwxr-xr-x 16 casperchen staff 544B 12 5 00:49 grunt
2、可以通過 require() 來引入本地安裝的包
直接來個例子,我們在項目根目錄下創建test.js,里面的內容很簡單
var grunt = require('grunt');grunt.log.writeln('hello grunt');
然后在控制台運行test.js
node test.js
然后就會看到如下輸出
casperchenMacBookPro:testUsemin casperchen$ node test.js
hello grunt
全局安裝
1、將安裝包放在 /usr/local 下
運行如下命令
npm install -g grunt-cli
然后進入/usr/local/bin目錄,就會發現grunt-cli已經被放置在下面了
casperchenMacBookPro:bin casperchen$ pwd
/usr/local/bin
casperchenMacBookPro:bin casperchen$ ll grunt
lrwxr-xr-x 1 root admin 39B 8 18 21:43 grunt -> ../lib/node_modules/grunt-cli/bin/grunt
可見,全局模塊的真實安裝路徑在/usr/local/lib/node_modules/下,/usr/local/bin下的可執行文件只是軟鏈接而已
2、可以直接在命令行里使用
實現細節在上面其實就講到了,通過在`/usr/local/bin下創建軟鏈接的方式實現。這里不贅述
更直觀的例子
下面就直接看下,當我們在項目目錄下運行grunt task(task為具體的grunt任務名,自行替換)時,發生了什么事情。這里要借助node-inspector。
首先,沒接觸過node-inspector的童鞋可以參考之前的文章了解下
運行如下命令開啟調試
node-inspector &
見到如下輸出
casperchenMacBookPro:tmp casperchen$ node-inspector &
[1] 14390
casperchenMacBookPro:tmp casperchen$ Node Inspector v0.6.1
info - socket.io started
Visit http://127.0.0.1:8080/debug?port=5858 to start debugging.
接着,在當前任務下運行grunt任務
^CcasperchenMacBookPro:testUsemin casperchen$ node --debug-brk $(which grunt) dev
debugger listening on port 5858
接着,打開chrome瀏覽器,輸入網址http://127.0.0.1:8080/debug?port=5858,就會自動進入斷點調試狀態,從一旁顯示的tips可以看到,全局命令grunt其實就是/usr/local/lib/node_modules/grunt-cli/bin/grunt。
按下F8接着往下跑,就會進如Gruntfile.js,此時的grunt,是本地安裝的一個node包,全局命令跟本地的包名字一樣,挺有迷惑性的。軟件自學網
更多:
http://www.cit.cn/tech/develop/node-js/2012/0817/996.html
http://www.cnblogs.com/walkerwang/archive/2013/04/05/3001001.html
linux npm安裝:
就像NPM的官網(http://npmjs.org/ )上介紹的那樣,安裝NPM僅僅是一行命令的事情:
curl http://npmjs.org/install.sh | sh
這里詳解一下這句命令的意思,curl http://npmjs.org/install.sh是通過curl命令獲取這個安裝shell腳本,按后通過管道符| 將獲取的腳本交由sh命令來執行。這里如果沒有權限會安裝不成功,需要加上sudo來確保權限:
curl http://npmjs.org/install.sh | sudo sh
安裝成功后執行npm命令,會得到一下的提示:
Usage: npm <command> where <command> is one of: adduser, apihelp, author, bin, bugs, c, cache, completion, config, deprecate, docs, edit, explore, faq, find, get, help, help-search, home, i, info, init, install, la, link, list, ll, ln, ls, outdated, owner, pack, prefix, prune, publish, r, rb, rebuild, remove, restart, rm, root, run-script, s, se, search, set, show, star, start, stop, submodule, tag, test, un, uninstall, unlink, unpublish, unstar, up, update, version, view, whoami
我們以underscore為例,來展示下通過npm安裝第三方包的過程。
npm install underscore
返回:
underscore@1.2.2 ./node_modules/underscore
由於一些特殊的網絡環境,直接通過npm install命令安裝第三方庫的時候,經常會出現卡死的狀態。幸運的是國內CNode社區的@fire9 同學利用空余時間搭建了一個鏡像的NPM資源庫,服務器架設在日本,可以繞過某些不必要的網絡問題。你可以通過以下這條命令來安裝第三方庫:
npm --registry "http://npm.hacknodejs.com/ " install underscore
如果你想將它設為默認的資源庫,運行下面這條命令即可:
npm config set registry "http://npm.hacknodejs.com/ "
設置之后每次安裝時就可以不用帶上—registry參數。值得一提的是還有另一個鏡像可用,該鏡像地址是http://registry.npmjs.vitecho.com ,如需使用,替換上面兩行命令的地址即可。
通過npm安裝包。安裝好之後會自動被安裝到 /usr/local/bin 目錄下,而相依的函式庫也會自動安裝到/usr/local/lib/node 目錄下,實在是非常方便。
npm使用
npm init 會引導你創建一個package.json文件,包括名稱、版本、作者這些信息等
使用package.json
在Pakcage.json所在目錄npm install就可以安裝了
在國內npm很慢,加速辦法
換成鏡像http://npm.taobao.org/
你可以使用我們定制的 cnpm (gzip 壓縮支持) 命令行工具代替默認的 npm
:
$ npm install -g cnpm --registry=https://registry.npm.taobao.org
或者你直接通過添加 npm
參數 alias
一個新命令:
alias cnpm="npm --registry=https://registry.npm.taobao.org \ --cache=$HOME/.npm/.cache/cnpm \ --disturl=https://npm.taobao.org/dist \ --userconfig=$HOME/.cnpmrc" # Or alias it in .bashrc or .zshrc $ echo '\n#alias for cnpm\nalias cnpm="npm --registry=https://registry.npm.taobao.org \ --cache=$HOME/.npm/.cache/cnpm \ --disturl=https://npm.taobao.org/dist \ --userconfig=$HOME/.cnpmrc"' >> ~/.zshrc && source ~/.zshrc
安裝模塊
從 registry.npm.taobao.org 安裝所有模塊. 當安裝的時候發現安裝的模塊還沒有同步過來, 淘寶 NPM 會自動在后台進行同步, 並且會讓你從官方 NPMregistry.npmjs.org 進行安裝. 下次你再安裝這個模塊的時候, 就會直接從 淘寶 NPM 安裝了.
$ cnpm install [name]
同步模塊
直接通過 sync
命令馬上同步一個模塊, 只有 cnpm
命令行才有此功能:
$ cnpm sync connect
當然, 你可以直接通過 web 方式來同步: /sync/connect
$ open https://npm.taobao.org/sync/connect
另外還可以通過
1.通過config命令
npm config set registry https://registry.npm.taobao.org npm info underscore (如果上面配置正確這個命令會有字符串response)
這種方法也是把所謂的user config寫入到 ~/.npmrc文件的!!
https://cnodejs.org/topic/4f9904f9407edba21468f31e
node_modules
文件夾時提示該文件夾包含名稱過長刪除不了
cmd下rmdir /s/q your_app_dir
來刪除
npm install rimraf -g
rimraf node_modules