npm安裝模塊的方式有兩種:本地安裝,全局安裝。
這兩者的區別在於,在用npm install xxx時加不加-g這個選項。
本地安裝的路徑在win中是當前cmd的路徑。比如,我一打開cmd時,路徑是C:\Documents and Settings\Administrator。那如果我用npm install koa的話,結果會在這個目錄下生成一個node_modules文件夾,里面是koa文件夾。很顯然,很多時候,我們不會把工作路徑設在c盤的那個地方。這時,如果require(‘koa’);的話就會提示找不到模塊的錯誤。
那怎么辦呢,就是先在cmd里面切換目錄到你的工作路徑,然后再安裝。這也是推薦的方式。
還有一點要注意,就是安裝后用require(‘koa’);時,要像普通js一樣,完全顯式的指定它的路徑。比如我的chat_server.js是這樣引用socket.io的。 require('./node_modules/socket.io/index.js')(server);,前面有個點代表當前js文件的路徑。
全局安裝:這個很好理解,比如自己做的很多東西都是基於express,而且東西里面又有很多地方用到express,如果每次都像上面那樣指定路徑的話會很煩人。如果用全局安裝的話,就可以直接用require('express');了。
全局安裝的默認路徑是
那如果我不喜歡這個路徑的話,怎么辦。
比如我的node.js安裝在F:\nodejs,新建一個lib文件夾,里面放新安裝模塊。
先找到F:\nodejs\node_modules\npm里面的npmrc這個文件,打開可以看到就只有
prefix=${APPDATA}\npm
將其改成prefix=F:\nodejs\lib\npm\node_modules\npm。
這時記得安裝的時候加上-g選項。
全局安裝的方式在windows 中,必須配置 NODE_PATH=F:\nodejs\lib\npm\node_modules\npm\node_modules 環境變量,才能在代碼作用使用require引用,否則會報錯。紅色部分是自動生成的文件夾,需要在NODE_PATH中添加,在是prefix並未指定。
另外,設置完環境變量后要重新打開cmd才能讓新設置的環境變量生效。
NPM 配置鏡像
-
by config command
npm config set registry http://registry.cnpmjs.org
npm info underscore (如果上面配置正確這個命令會有字符串response) -
命令行指定
npm --registry http://registry.cnpmjs.org info underscore
-
編輯 ~/.npmrc 加入下面內容
registry = http://registry.cnpmjs.org
設置代理
npm config set proxy http://server:port
npm config set https-proxy http://server:port
如果需要認證的話可以這樣設置:
npm config set proxy http://username:password@server:port
npm confit set https-proxy http://username:password@server:port
如果代理不支持https的話需要修改npm存放package的網站地址。
npm config set registry "http://registry.npmjs.org/"
刪除代理
npm config delete proxy
使用nrm快速切換npm源
nrm 是一個 NPM 源管理器,允許你快速地在如下 NPM 源間切換:
- 列表項目
- npm
- cnpm
- strongloop
- enropean
- australia
- nodejitsu
- taobao
Install
sudo npm install -g nrm
如何使用?
列出可用的源:
➜ ~ nrm ls
npm ---- https://registry.npmjs.org/ cnpm --- http://r.cnpmjs.org/ taobao - http://registry.npm.taobao.org/ eu ----- http://registry.npmjs.eu/ au ----- http://registry.npmjs.org.au/ sl ----- http://npm.strongloop.com/ nj ----- https://registry.nodejitsu.com/ pt ----- http://registry.npmjs.pt/
切換:
➜ ~ nrm use taobao Registry has been set to: http://registry.npm.taobao.org/
增加源:
nrm add <registry> <url> [home]
刪除源:
nrm del <registry>
測試速度:
nrm test