node環(huán)境及包管理

關(guān)系圖

什么是包管理工具

包管理工具其實就是對一些程序包進(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版本管理工具有兩種nvmn

管理 node 版本魁蒜,選擇 nvm 還是 n躺彬?這篇文章對nvmn的選擇和優(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.0v8.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-promiseksend滑频。

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è)置代理

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末谭跨,一起剝皮案震驚了整個濱河市干厚,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌饺蚊,老刑警劉巖萍诱,帶你破解...
    沈念sama閱讀 218,941評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異污呼,居然都是意外死亡裕坊,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,397評論 3 395
  • 文/潘曉璐 我一進(jìn)店門燕酷,熙熙樓的掌柜王于貴愁眉苦臉地迎上來籍凝,“玉大人,你說我怎么就攤上這事苗缩《伲” “怎么了?”我有些...
    開封第一講書人閱讀 165,345評論 0 356
  • 文/不壞的土叔 我叫張陵酱讶,是天一觀的道長退盯。 經(jīng)常有香客問我,道長泻肯,這世上最難降的妖魔是什么渊迁? 我笑而不...
    開封第一講書人閱讀 58,851評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮灶挟,結(jié)果婚禮上琉朽,老公的妹妹穿的比我還像新娘。我一直安慰自己稚铣,他們只是感情好箱叁,可當(dāng)我...
    茶點故事閱讀 67,868評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著惕医,像睡著了一般耕漱。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上抬伺,一...
    開封第一講書人閱讀 51,688評論 1 305
  • 那天孤个,我揣著相機(jī)與錄音,去河邊找鬼沛简。 笑死齐鲤,一個胖子當(dāng)著我的面吹牛斥废,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播给郊,決...
    沈念sama閱讀 40,414評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼牡肉,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了淆九?” 一聲冷哼從身側(cè)響起统锤,我...
    開封第一講書人閱讀 39,319評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎炭庙,沒想到半個月后饲窿,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,775評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡焕蹄,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,945評論 3 336
  • 正文 我和宋清朗相戀三年逾雄,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片腻脏。...
    茶點故事閱讀 40,096評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡鸦泳,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出永品,到底是詐尸還是另有隱情做鹰,我是刑警寧澤,帶...
    沈念sama閱讀 35,789評論 5 346
  • 正文 年R本政府宣布鼎姐,位于F島的核電站钾麸,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏炕桨。R本人自食惡果不足惜饭尝,卻給世界環(huán)境...
    茶點故事閱讀 41,437評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望谋作。 院中可真熱鬧,春花似錦乎芳、人聲如沸遵蚜。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,993評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽吭净。三九已至,卻和暖如春肴甸,著一層夾襖步出監(jiān)牢的瞬間寂殉,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,107評論 1 271
  • 我被黑心中介騙來泰國打工原在, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留友扰,地道東北人彤叉。 一個月前我還...
    沈念sama閱讀 48,308評論 3 372
  • 正文 我出身青樓,卻偏偏與公主長得像村怪,于是被迫代替她去往敵國和親秽浇。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,037評論 2 355

推薦閱讀更多精彩內(nèi)容