n=NPM是一個Node包管理和分發工具,已經成爲了非官方的發佈Node模塊(包)的標準。有了NPM,能夠很快的找到特定服務要使用的包,進行下載、安裝以及管理已經安裝的包。npms安裝:html
下載npm源代碼:
https://github.com/isaacs/npm/tagsnode
將npm源代碼解壓到D:\npmjs目錄中。
在命令提示符窗口中執行下面的操做,完成npm的安裝:linux
D:\>cd npmjs
D:\npmjs>node cli.js install -gf
另外:nginx
node cli.js install npm -gf //能夠安裝最新版的NPM
node cli.js install npm@1.0.105 -gf //能夠安裝指定版本的NPM
上面兩種方法都是經過網絡從代碼庫中下載並安裝,可是代碼庫通常只保留最近的兩個版本。git
NPM安裝完成後,將"D:\nodejs\node_modules"加入系統環境變量NODE_PATH中。github
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' ]web
最好設置下國內鏡像要否則下載會很慢。淘寶有個npm鏡像。chrome
NPM經常使用的命令有:express
(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. 能夠直接在命令行裏使用
本地安裝
一、將安裝包放在 ./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
二、能夠經過 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
全局安裝
一、將安裝包放在 /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下的可執行文件只是軟連接而已
二、能夠直接在命令行裏使用
實現細節在上面其實就講到了,經過在`/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命令
這種方法也是把所謂的user config寫入到 ~/.npmrc文件的!!
https://cnodejs.org/topic/4f9904f9407edba21468f31e
npm config set registry https://registry.npm.taobao.org npm info underscore (若是上面配置正確這個命令會有字符串response)
node_modules
文件夾時提示該文件夾包含名稱過長刪除不了
cmd下rmdir /s/q your_app_dir
來刪除
npm install rimraf -g
rimraf node_modules