什么是包管理工具
包管理工具其實就是對一些程序包進(jìn)行安裝、升級茴肥、卸載的管理工具值戳。程序員在編程的時候常常會用到一些工具,類似于我們在電腦上安裝一些軟件炉爆。這些工具或者一些源碼包都是通過命令行來下載安裝使用的。所以就需要一個管理工具對這些安裝包進(jìn)行管理卧晓。
在系統(tǒng)層面芬首,我們進(jìn)行開發(fā)時需要給系統(tǒng)安裝一些環(huán)境,或者開發(fā)工具之類的逼裆,就會需要用到一些依賴包郁稍。一般系統(tǒng)都會內(nèi)置這些包管理工具,比如Red hat有yum
胜宇,Ubuntu有apt-get
耀怜,Mac OS有Homebrew
。
又比如我們進(jìn)行程序開發(fā)時常常會依賴第三方的包桐愉,所以也會有包管理工具進(jìn)行管理财破。如iOS第三方庫管理工具:cocopods
,安卓有gradle
从诲,java有Maven
左痢。
node也有自己的包管理工具,最為一個前端新人系洛,剛開始對node相關(guān)的各種包管理工具會比較混亂俊性,因為這類工具挺多的,如npm描扯、nrm定页、nvm、n绽诚。還有對應(yīng)的安裝路徑典徊,鏡像源等杭煎。所以這里對這些工具做一個簡單梳理和介紹。首先我們要弄清楚npm宫峦、nrm岔帽、nvm、n导绷、node之間的關(guān)系犀勒。我是在Mac OS上進(jìn)行使用的,所以相關(guān)的還要加上Homebrew妥曲。
什么是Node.js
Node.js是一個能夠在服務(wù)器端運行JavaScript的開放源代碼贾费、跨平臺JavaScript運行環(huán)境。Node.js由Node.js基金會持有和維護(hù)檐盟,并與Linux基金會有合作關(guān)系褂萧。Node.js采用Google開發(fā)的V8運行代碼,使用事件驅(qū)動葵萎、非阻塞和異步輸入輸出模型等技術(shù)來提高性能导犹,可優(yōu)化應(yīng)用程序的傳輸量和規(guī)模。這些技術(shù)通常用于數(shù)據(jù)密集的事實應(yīng)用程序羡忘。
以上解釋來自維基百科谎痢,簡單的說Node.js就是基于V8引擎的JavaScript運行環(huán)境。用于開發(fā)服務(wù)端應(yīng)用卷雕。
安裝Node.js環(huán)境(HomeBrew)
在Mac上我們安裝Node.js環(huán)境使用HomeBrew节猿。
brew link node
brew uninstall node
brew install node
安裝好了之后我們輸入which node
能看到軟鏈接的路徑為/usr/local/bin/node
。
然后輸入readlink /usr/local/bin/node
讀取軟鏈接對應(yīng)的相對路徑為../Cellar/node/8.2.1/bin/node
漫雕。即絕對路徑/usr/local/Cellar/node/8.2.1/bin/node
滨嘱。這就是安裝的node 8.2.1版本環(huán)境所在的路徑。
管理Node.js版本(nvm)
因為有時候需要時常對node版本進(jìn)行切換測試兼容性和一些模塊對node版本的限制浸间。所以需要一個工具對node的版本進(jìn)行管理太雨。一般目前主流的node版本管理工具有兩種nvm
和n
。
管理 node 版本魁蒜,選擇 nvm 還是 n躺彬?這篇文章對nvm
和n
的選擇和優(yōu)劣進(jìn)行了解釋。
我這里使用nvm
進(jìn)行管理Node.js版本梅惯∠苡担可以nvm git地址里查看使用,或者安裝完成后輸入nvm
直接列出所有的使用命令铣减。
下載nvm
curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.2/install.sh | bash
配置環(huán)境變量
完成后nvm就被安裝在了/.nvm下啦她君,接下來就需要配一下環(huán)境變量了,我使用的是`zsh`葫哗,所以打開/.zshrc缔刹,在最后一行加上:
export NVM_DIR="/Users/dasheng/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm
這一步的作用是每次新打開一個bash球涛,nvm都會被自動添加到環(huán)境變量中了。
完成后輸入source ~/.zshrc
重新啟動一下配置校镐。
安裝對應(yīng)版本的node
nvm install v8.2.1
當(dāng)前使用的node軟鏈接路徑
which node
我們能看到當(dāng)前的路徑就變成了/Users/dasheng/.nvm/versions/node/v8.2.1/bin/node
查看當(dāng)前node版本
nvm version
或
node -v
查看安裝的所有node版本
nvm ls
比如我這里安裝了多個版本v8.2.1
亿扁、v7.10.0
、v8.2.0
鸟廓。nvm默認(rèn)會使用你最新安裝的那個版本从祝。比如我這里最后安裝的是v8.2.0
,那使用nvm version
查看當(dāng)前的node版本就是v8.2.0
引谜。
切換node版本
nvm use v7.10.0
NodeJS包管理和分發(fā)工具(npm)
npm介紹
我們上面是安裝好了node的基本環(huán)境牍陌,但是我們平時會使用到一些第三方的node模塊,這時就要包管理工具對這些模塊進(jìn)行下載使用了员咽。
NPM的全稱是Node Package Manager
毒涧,是一個NodeJS包管理和分發(fā)工具,已經(jīng)成為了非官方的發(fā)布Node模塊(包)的標(biāo)準(zhǔn)贝室。
新版的node默認(rèn)就會帶有npm契讲,npm和那些第三方的模塊都默認(rèn)安裝在node對應(yīng)版本的/lib/node_modules
目錄下。比如我使用npm安裝es6-promise和ksend滑频。
npm install es6-promise -g
npm install ksend -g
這里包的安裝分為本地安裝和全局安裝:
npm install es6-promise # 本地安裝
npm install es6-promise -g # 全局安裝
全局安裝就是安裝在如上圖所示的node當(dāng)前版本對應(yīng)的node_modules
中怀泊。
本地安裝
本地安裝是安裝在當(dāng)前所在文件夾的node_modules
,同時當(dāng)前文件夾需要有一個package.json
误趴。比如我在test文件夾中創(chuàng)建package.json
文件。內(nèi)容如下:
{
"name": "test",
"version": "0.0.1",
"private": true
}
然后在test目錄下運行npm install es6-promise
务傲。這個es6-promise
就會被安裝在這個test目錄下的node_modules
凉当。同時package.json
內(nèi)容也會相應(yīng)自動的改變:
{
"name": "test",
"version": "0.0.1",
"private": true,
"dependencies": {
"es6-promise": "^4.1.1"
}
}
其實我們可以把test也當(dāng)成一個node的第三方包,然后他有一個package.json
文件售葡,里面描述了這個包的作用看杭、作者、地址挟伙、以及這個包所依賴的包等楼雹。
所以只要有這個package.json
,在dependencies
里寫上所依賴的包尖阔,運行npm install
贮缅,就會把所有依賴的包安裝在test/node_modules
目錄下了。
相關(guān)文章
npm 模塊安裝機(jī)制簡介這篇文章是對npm的機(jī)制的介紹介却。
關(guān)于npm的使用可以看NPM 使用介紹谴供。
NPM源管理器(nrm)
npm默認(rèn)的源是https://registry.npmjs.org/
,國內(nèi)下載安裝一些依賴包的時候會特別慢齿坷。所以一般會使用一些國內(nèi)的鏡像源桂肌,很多都是使用的淘寶的鏡像源https://registry.npm.taobao.org
数焊。而為了管理切換這些鏡像源就有了nrm
。
安裝
npm install -g nrm
列出所有的源
nrm ls
* npm ---- https://registry.npmjs.org/
cnpm --- http://r.cnpmjs.org/
taobao - https://registry.npm.taobao.org/
nj ----- https://registry.nodejitsu.com/
rednpm - http://registry.mirror.cqupt.edu.cn/
npmMirror https://skimdb.npmjs.com/registry/
edunpm - http://registry.enpmjs.org/
添加新的源
nrm add taobao https://registry.npm.taobao.org/
切換源
nrm use taobao
刪除源
nrm del taobao
測試速度
nrm test
參考文章
管理 node 版本崎场,選擇 nvm 還是 n佩耳?
node版本管理工具nvm-Mac下安裝及使用
npm配置鏡像、設(shè)置代理