Node.js的3m安装法
原文地址:https://cnodejs.org/topic/57f628098489e7ca69f4e839
安裝Node.js
Node.js是支持多個平臺,Mac、Linux以及Windows,但在Windows平臺下面問題較多,很多莫名其妙的問題,一般開發(fā)環(huán)境推薦用Mac或Linux(Ubuntu桌面版)。在生產(chǎn)環(huán)境,推薦使用CentOS或Ubuntu,選用對應(yīng)的64位的LTS長期支持版本即可。
所以,這里推薦Linux安裝作為標準配置,先講一下3m安裝法,之后講一下如何從源碼去編譯,便于大家深入理解。
<!-- toc -->
3m安裝法
在各個平臺都有相關(guān)的包管理工具,比如ubuntu下面有apt-get,centos下面有yum,mac下面有brew等,它們都是安裝軟件的非常方便的利器。但對于Node.js這個版本帝而言,它們是不合適的,首先Node.js的版本更新非常快,開發(fā)機器上可能要同時存在幾個Node.js的大版本,而npm又有2.x和3.x版本的差異,國內(nèi)網(wǎng)訪問npmjs.org的鏡像非常慢,綜上種種問題,這里給出我總結(jié)的比較好的實踐,具體如下
- nvm(Node.js Version Manager):解決多版本共存、切換問題
- npm(Node.js Package Manager):解決Node.js模塊安裝問題,其本身也是一個Node.js 模塊
- nrm(Node.js Registry Manager):解決npm鏡像訪問慢的問題,提供測速,切換registry功能
nvm
nvm是一個開源的Node版本管理器,通過簡單的bash腳本來管理、切換多個Node.js版本。和nvm提供類似功能的還有tj寫的n,它們的功能大同小異,整體來說nvm要稍強大一下。值得注意的是nvm和n目前都不支持windows版本。
官方介紹
Node Version Manager - Simple bash script to manage multiple active node.js versions
安裝nvm
在安裝Node.js之前,需要先安裝nvm,然后通過nvm去安裝多個版本的Node.js。
首先,在終端里執(zhí)行如下命令
$ curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.29.0/install.sh | bash顯示結(jié)果
% Total % Received % Xferd Average Speed Time Time Time CurrentDload Upload Total Spent Left Speed 100 7731 100 7731 0 0 37998 0 --:--:-- --:--:-- --:--:-- 38083 => Downloading nvm from git to '/home/ubuntu/.nvm' => Cloning into '/home/ubuntu/.nvm'... remote: Counting objects: 4715, done. remote: Compressing objects: 100% (3/3), done. remote: Total 4715 (delta 0), reused 0 (delta 0), pack-reused 4712 Receiving objects: 100% (4715/4715), 1.24 MiB | 265.00 KiB/s, done. Resolving deltas: 100% (2801/2801), done. Checking connectivity... done. * (HEAD detached at v0.29.0)master=> Appending source string to /home/ubuntu/.bashrc => Close and reopen your terminal to start using nvm它的意思是通過curl下載install.sh腳本,并執(zhí)行它。待執(zhí)行完成后,它會把nvm命令的執(zhí)行路徑放到~/.bashrc文件里
我們可以用cat命令查看一下
$ cat ~/.bashrc|grep nvm export NVM_DIR="/home/ubuntu/.nvm" [ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh" # This loads nvm確認存在以上配置后,通過執(zhí)行source命令,使環(huán)境變量生效
$ source ~/.bashrc至此,我們就把nvm安裝完成了。然后通過在終端里執(zhí)行nvm --version查看nvm的版本號:
$ nvm --version 0.25.1如果能夠打印出版本號就證明nvm已經(jīng)安裝成功了。
如果系統(tǒng)使用的是zsh,可以把環(huán)境變量放到~/.zshrc里
$ vi ~/.zshrc追加一下內(nèi)容到~/.zshrc里
export NVM_DIR="/home/ubuntu/.nvm" [ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh" # This loads nvm然后,通過執(zhí)行source命令,使環(huán)境變量生效,其他和bash里操作相同
$ source ~/.zshrc查看可安裝版本
在安裝之前,我們需要了解nvm可以安裝哪些版本的Node.js
$ nvm ls-remotev0.1.14...v0.1.104v0.2.0...v0.2.6v0.3.0...v0.3.8v0.4.0...v0.4.12v0.5.0...v0.5.10v0.6.0...v0.6.21v0.7.0...v0.7.12v0.8.0...v0.8.28v0.9.0...v0.10.0... v0.10.45v0.11.0...v0.11.16v0.12.0...v0.12.14iojs-v1.0.0...iojs-v3.3.1v4.0.0...v4.4.5v5.0.0...v5.11.1v6.0.0v6.1.0v6.2.0v6.2.1這么多版本,讀者不需要一一了解,只需要了解LTS和Current這2個最新版本就好
說明
- LTS版本指的是長期支持版本(Long-term Support),有官方支持,推薦給絕大多數(shù)用戶使用,一般在生成環(huán)境上
- Current版本指的是當前正在開發(fā)的版本,它通常較新,功能點有變動,但沒有完全穩(wěn)定,在經(jīng)過一段時間之后,當前版本可能會變?yōu)長TS版本,一般用于學習
以下圖,Node.js官方網(wǎng)站為例,當前的LTS版本是4.4.5,而Current版本6.2.1
八卦一下
Node.js的版本是非常多的,比如5.x作為一個過渡版本,硬生生的給拋棄了…
安裝Node.js
目前4.4.5是LTS長期支持版本,無論是開發(fā)還是產(chǎn)品模式都推薦使用4.4.5版本。
$ nvm install 4.4.5 Downloading https://nodejs.org/dist/v4.4.5/node-v4.4.5-linux-x64.tar.xz... ######################################################################## 100.0% Now using node v4.4.5 (npm v2.15.5) Creating default alias: default -> 4.4.5 (-> v4.4.5)如果想默認使用4.4.5版本進行編譯,需要指定一個default別名,具體操作如下:
$ nvm alias default 4.4.5 default -> 4.4.5 (-> v4.4.5)此時,你輸入node -v
$ node -v v4.4.5這樣需要說明一下,當安裝完Node.js之后,會把node命令在環(huán)境變量里,你可以在終端里任何位置使用它。node命令是用于執(zhí)行Node.js代碼的,因為JavaScript是腳本語言,所以node命令實際上是Node.js代碼的的解釋器。
前面講了,4.4.5版本是LTS長期支持版本,那么如果我想玩玩更多es6的東西呢?
目前現(xiàn)狀是4.4.5支持58%的es6特性,而6.2.1支持96%的es6特性,比如let等在4.x下的非嚴格模式是不支持 ,這時候我就需要使用6.x版本了。
安裝最新的6.x版本
$ nvm install 6 Downloading https://nodejs.org/dist/v6.2.1/node-v6.2.1-linux-x64.tar.xz... ######################################################################## 100.0% Now using node v6.2.1 (npm v3.9.3)切換到6.x版本下面
$ nvm use 6 Now using node v6.2.1 (npm v3.9.3) $ node -v v6.2.1此時,你的Node.js代碼就在6.x版本下執(zhí)行了,可以使用任何6.x支持的特性。
那么,如何知道我本機安裝過哪些Node.js版本呢?
$ nvm lsv4.4.5 -> v6.2.1system default -> 4.4.5 (-> v4.4.5) node -> stable (-> v6.2.1) (default) stable -> 6.2 (-> v6.2.1) (default) iojs -> iojs- (-> system) (default)說明
- 一共有3個版本,一個是system系統(tǒng)默認,另外2個是通過nvm安裝的
- -> v6.2.1 代表當前是6.x版本
- default -> 4.4.5 (-> v4.4.5)
- iojs -> iojs- (-> system) (default) 此處不同機器可能不一樣,如果之前通過apit-get或brew安裝node,此處會有顯示
總結(jié)一下,這節(jié)一共講了nvm的5個常用命令
- 安裝:nvm install 4.4.5
- 設(shè)置默認: nvm alias default 4.4.5
- 切換版本:nvm use 6
- 列出當前本地版本:nvm ls
- 列出遠端可安裝版本:nvm ls-remote
可以說這5個命令在開發(fā)過程中足夠用,其實nvm還有很多高級特性,比如在項目根目錄創(chuàng)建.npmrc指定特定的Node.js版本,它就切換到對應(yīng)版本,類似的很多,就不一一列舉了,讀者自行體會吧。
Hello Node.js
通過nvm已經(jīng)安裝完成Node.js,是時候來個 hello world 代碼了。一般我們用Node.js做的最多是web server開發(fā),就來個最簡單的http server吧。
創(chuàng)建hello_node.js文件,寫下下面的代碼
var http = require('http');http.createServer(function (req, res) {res.writeHead(200, {'Content-Type': 'text/plain'});res.end('Hello Node.js\n'); }).listen(3000, "127.0.0.1");console.log('Server running at http://127.0.0.1:3000/');說明
- 1)引用了Node.js內(nèi)置的http模塊
- 2)通過http.createServer創(chuàng)建了一個http服務(wù)
- 3)通過listen方法,指定端口和ip,啟動該服務(wù)
- 4)res是http協(xié)議里的response(響應(yīng))的別名,通過res控制對瀏覽器的操作,設(shè)置返回狀態(tài)碼是200,設(shè)置header里的’Content-Type’是’text/plain’類型,最后返回’Hello Node.js\n’文本。
通過短短幾行代碼就可以創(chuàng)建一個http服務(wù),是不是非常簡單啊?
執(zhí)行如下
> node hello_node.js Server running at http://127.0.0.1:3000/通過node解釋器,執(zhí)行hello_node.js文件里的Node.js代碼,這是典型的Node.js執(zhí)行過程,腳本不需要編譯,整體來說還是比較簡單的。
訪問瀏覽器,結(jié)果如圖
我們把代碼稍稍改一下,創(chuàng)建hello_node_es6.js文件,寫下下面的代碼
// "use strict"; const http = require('http');http.createServer((req, res) => {let status = 200;res.writeHead(status, {'Content-Type': 'text/plain'});res.end('Hello Node.js\n'); }).listen(3000, "127.0.0.1");console.log('Server running at http://127.0.0.1:3000/');說明
- var變成了const
- http.createServer里的匿名函數(shù)變成 es6 里的箭頭函數(shù)
- 為了演示方便,用let聲明了status變量
實現(xiàn)的效果和原理都是一模一樣的,只是語法上有些許不同而已。
首先,我們在4.x下執(zhí)行看看
$ nvm use 4 Now using node v4.4.5 (npm v2.15.5) $ node hello_node_es6.js /Users/sang/workspace/17koa/book-source/nodejs/hello_node_es6.js:4let status = 200;^^^SyntaxError: Block-scoped declarations (let, const, function, class) not yet supported outside strict modeat exports.runInThisContext (vm.js:53:16)at Module._compile (module.js:413:25)at Object.Module._extensions..js (module.js:452:10)at Module.load (module.js:355:32)at Function.Module._load (module.js:310:12)at Function.Module.runMain (module.js:475:10)at startup (node.js:117:18)at node.js:951:3這里報的是語法錯誤,塊作用域聲明(let, const, function, class) 在嚴格模式外是不支持的。也就是說在Node.js 4.x版本里,如果你不是用嚴格模式,你是無法是let、const、 function、class這些關(guān)鍵字的。不是Node.js的4.x版本不支持它們,而是嚴格模式外是不支持。
如果是在文件第一行增加如下代碼
"use strict";它就是可以正常執(zhí)行的,上面的代碼是把這行注釋掉的,目的就是為了演示在6.x下,即使非嚴格模式,這些語法也是可以正常識別的,下面我們切換到6.x下面
$ nvm use 6 Now using node v6.2.1 (npm v3.9.3) $ node hello_node_es6.js Server running at http://127.0.0.1:3000/至此,我們分別演示了使用nvm在Node.js 的 4.x和6.x版本下的版本切換,希望大家可以理解nvm的作用,以及對Node.js和es6有一個簡單的認識,后面章節(jié)會詳細講解。
npm
NPM(node package manager),通常稱為node包管理器。顧名思義,它的主要功能就是管理node包,包括:安裝、卸載、更新、查看、搜索、發(fā)布等。它最開始的初衷是只是Node.js包管理器,隨著前端技術(shù)react、webpack、browserify等發(fā)展,目前npm的定位是廣義的包管理器,包括js、react、mobile、angularjs、browsers、jquery、cordova、bower、gulp、grunt、browserify、docpad、nodebots、tessel等,是開源世界里最大、生態(tài)最健全的包管理器,包的總數(shù)已經(jīng)超過29.4萬個,日下載量超過1.7億。
NPM是隨同Node.js一起安裝的包管理工具,能解決Node.js代碼部署上的很多問題,常見的使用場景有以下幾種:
- 允許用戶從NPM服務(wù)器下載別人編寫的第三方包到本地使用。
- 允許用戶從NPM服務(wù)器下載并安裝別人編寫的命令行程序到本地使用。
- 允許用戶將自己編寫的包或命令行程序上傳到NPM服務(wù)器供別人使用。
由于新版的Node.js已經(jīng)集成了npm,所以之前安裝Node.js時npm也一并安裝好了。同樣可以通過輸入 “npm -v” 來測試是否成功安裝。命令如下,出現(xiàn)版本提示表示安裝成功:
$ npm -v 2.3.0安裝npm
如果你安裝的是舊版本的 npm,可以很容易得通過 npm 命令來升級,命令如下:
$ [sudo] npm install npm -g /home/ubuntu/.nvm/versions/node/v4.4.5/bin/npm -> /home/ubuntu/.nvm/versions/node/v4.4.5/lib/node_modules/npm/bin/npm-cli.js npm@3.9.5 /home/ubuntu/.nvm/versions/node/v4.4.5/lib/node_modules/npm如果Node.js是通過nvm安裝的,可以不使用sudo臨時授權(quán)的。當然,也可以安裝指定的某個版本,比如npm 2.9之后支持了私有模塊
$ node -v v4.0.0 $ npm -v 2.14.2 $ [sudo]npm install -g npm@2.9使用 npm 安裝模塊
npm 的包安裝分為本地安裝(local)、全局安裝(global)兩種,從敲的命令行來看,差別只是有沒有 -g 而已,
語法格式如下:
$ npm install [-g] <Module Name>本地安裝
以下實例,我們使用 npm 命令安裝常用的 Node.js 調(diào)試模塊 debug:
$ npm install debug安裝好之后,debug 包就放在了工程目錄下的 node_modules 目錄中,因此在代碼中只需要通過 require('debug') 的方式就好,無需指定第三方包路徑。
var debug = require('debug')('xxx');全局安裝
采用nvm安裝Node.js之后,基本不會遇到全局安裝時權(quán)限問題。安裝包放的是用戶目錄的nvm版本對應(yīng)的bin目錄里,當然不用加sudo了,尤其對于初學者,經(jīng)常被Linux的權(quán)限坑死。
區(qū)分npm版本
npm 2.x和3.x是不一樣的,需要區(qū)分,避免很多問題,比如有的模塊在2.x是正常的,而在3.x下就莫名其妙的不好用,所以值得大家花點時間理解一下這個問題
首先,看一下2.x的npm結(jié)構(gòu),為了演示方便,我們統(tǒng)一在2.x和3.x里都安裝一個名為debug的用于根據(jù)環(huán)境變量來決定是否打印調(diào)試日志的Node.js模塊
$ cd book-source/nodejs/npm/2.x // 初始化package.json,一路回車即可 $ npm init $ nvm use 4 Now using node v4.4.5 (npm v2.15.5) $ npm -v 2.15.5 $ npm i -S debug npm WARN package.json 2.x@1.0.0 No description npm WARN package.json 2.x@1.0.0 No repository field. npm WARN package.json 2.x@1.0.0 No README data debug@2.2.0 node_modules/debug └── ms@0.7.1 $ tree . . ├── node_modules │?? └── debug │?? ├── History.md │?? ├── Makefile │?? ├── Readme.md │?? ├── bower.json │?? ├── browser.js │?? ├── component.json │?? ├── debug.js │?? ├── node.js │?? ├── node_modules │?? │?? └── ms │?? │?? ├── History.md │?? │?? ├── LICENSE │?? │?? ├── README.md │?? │?? ├── index.js │?? │?? └── package.json │?? └── package.json └── package.json這里使用的NPM@2.x版本,它的依賴是嵌套依賴的,比如當模塊依賴debug模塊,而debug模塊又依賴ms模塊,這樣就導致里如下結(jié)構(gòu)
下面篩選一下,tree命令的-d選項是只顯示目錄的意思
tree . -d . └── node_modules└── debug└── node_modules└── ms4 directories很明顯,它們的依賴關(guān)系很清晰,但如果不同模塊里依賴了相同模塊呢?彼此互相依賴、各種版本的依賴交織在一起就非常痛苦,所以npm被詬病比較慢,才出現(xiàn)了ied這樣的npm替代方案
實際上,npm也是做了改進的,npm@3.x里有改善的
$ cd book-source/nodejs/npm/3.x // 初始化package.json,一路回車即可 $ npm init $ nvm use 6 Now using node v6.0.0 (npm v3.8.6) $ npm i -S debug 2.x@1.0.0 /Users/sang/workspace/17koa/book-source/nodejs/npm/2.x └─┬ debug@2.2.0 └── ms@0.7.1 $ tree . . ├── node_modules │?? ├── debug │?? │?? ├── History.md │?? │?? ├── Makefile │?? │?? ├── Readme.md │?? │?? ├── bower.json │?? │?? ├── browser.js │?? │?? ├── component.json │?? │?? ├── debug.js │?? │?? ├── node.js │?? │?? └── package.json │?? └── ms │?? ├── History.md │?? ├── LICENSE │?? ├── README.md │?? ├── index.js │?? └── package.json └── package.json3 directories, 15 files這里同樣是debug模塊,不過在3.x下面,debug和ms是同級的
$ tree . -d . └── node_modules├── debug└── ms3 directoriesnpm3現(xiàn)在的模塊目錄結(jié)構(gòu)扁平了,但又保持了樹和依賴版本共存的可能性,node 5.0之后已經(jīng)升級到了npm3,也就是npm3已經(jīng)普遍可用了。更多npm3變更見官方文檔
最簡單的理解如下圖
- npm 2.x依賴都在當前模塊下面,所以路徑會比較深
- npm 3.x是扁平式結(jié)構(gòu),當依賴多個版本的時候,才會像npm 2.x的方式
使用 cnpm 加速 npm
同理 nvm , npm 默認是從國外的源獲取和下載包信息, 不慢才奇怪. 可以通過簡單的 ---registry 參數(shù), 使用國內(nèi)的鏡像?https://registry.npm.taobao.org?:
$ npm --registry=https://registry.npm.taobao.org install koa于是屏幕又嘩啦嘩啦地一大片輸出:
$ npm --registry=https://registry.npm.taobao.org install koa npm http GET https://registry.npm.taobao.org/koa npm http 200 https://registry.npm.taobao.org/koa ... npm http 200 https://registry.npm.taobao.org/negotiator npm http 200 https://registry.npm.taobao.org/keygrip koa[@0](/user/0).5.2 node_modules/koa ├── koa-compose[@2](/user/2).2.0 ├── statuses[@1](/user/1).0.2 ├── finished[@1](/user/1).1.1 ├── escape-html[@1](/user/1).0.1 ├── only[@0](/user/0).0.2 ├── debug[@0](/user/0).8.0 ├── fresh[@0](/user/0).2.2 ├── type-is[@1](/user/1).0.1 ├── delegates[@0](/user/0).0.3 ├── mime[@1](/user/1).2.11 ├── co[@3](/user/3).0.5 ├── accepts[@1](/user/1).0.1 (negotiator[@0](/user/0).4.2) └── cookies[@0](/user/0).4.0 (keygrip[@1](/user/1).0.0)但是畢竟鏡像跟官方的 npm 源還是會有一個同步時間差異, 目前 cnpm 的默認同步時間間隔是 15 分鐘. 如果你是模塊發(fā)布者, 或者你想馬上同步一個模塊, 那么推薦你安裝 cnpm cli:
$ npm --registry=https://registry.npm.taobao.org install cnpm -g通過 cnpm 命令行, 你可以快速同步任意模塊:
$ cnpm sync koa connect mocha呃, 我就是不想安裝 cnpm cli 怎么辦? 哈哈, 早就想到你會這么懶了, 于是我們還有一個 web 頁面:
例如我想馬上同步 koa, 直接打開瀏覽器:?https://npm.taobao.org/sync/koa
或者你是命令行控, 通過 open 命令打開:
$ open https://npm.taobao.org/sync/koa如果你安裝的模塊依賴了 C++ 模塊, 需要編譯, 肯定會通過 node-gyp 來編譯, node-gyp 在第一次編譯的時候, 需要依賴 node 源代碼, 于是又會去 node dist 下載, 于是大家又會吐槽, 怎么 npm 安裝這么慢…
好吧, 于是又要提到 --disturl 參數(shù), 通過七牛的鏡像來下載:
$ npm --registry=https://registry.npm.taobao.org --disturl=https://npm.taobao.org/mirrors/node install microtime再次要提到 cnpm cli, 它已經(jīng)默認將 --registry 和 --disturl 都配置好了, 誰用誰知道 如果不想使用cnpm cli,可以
npm config set registry https://registry.npm.taobao.org --global npm config set disturl https://npm.taobao.org/dist --globalnrm
Node.js和其他語言一樣,默認將模塊托管在npmjs.org,這是官方的registry(源),registry是指從哪個源下載Node.js模塊,當然其他組織或個人也是可以自建npm registry(源)的,這些非官方的鏡像會定期的和npm官方registry(源)進行同步,一般在10分鐘左右一次。
npm官方registry(源)在國外托管,所以對于國內(nèi)來說,速度上有慢一些,而且Node.js本身又是小而美哲學導致的多模塊依賴,有時慢的讓人抓狂,所以就近選擇一些速度更快的源是剛需。
其實npm是提供了這種配置的
$ npm config set registry <registry url>比如官方的registry(源)是https://registry.npmjs.org/
$ npm config set registry https://registry.npmjs.org/如果同時有幾個registry(源)需要切換,整個人都要崩潰了。。。
Nrm就是專門用于解決這個問題,它可以幫助你簡單、快速的在不同的npm registry(源)之間進行切換,它默認內(nèi)置了很多常用的源,包括npm、cnpm、taobao、 nj、rednpm、npmMirror,當然你可以自己通過nrm add維護自己的源。
安裝nrm
nrm本身是Node.js模塊,所以它是通過npm來安裝的,它是一個二進制模塊,需要使用--global參數(shù)進行全局安裝
$ [sudo] npm install --global nrm測速
為了確定哪個registry(源)下載速度更快,我們需要進行測速,通過測速結(jié)果,來決定具體使用哪個registry(源)
測試使用nrm test命令,非常簡單、實用:
$ nrm test* npm ---- 1623mscnpm --- 561mstaobao - 2184msnj ----- 2382msrednpm - Fetch ErrornpmMirror 3999ms從測速結(jié)果上,可以看出cnpm是最快的,雖然每次測速都有浮動,但整體來說cnpm和taobao的源還是比較快的,尤其是在阿里云上部署,按需取用就好。
查看源
一般,我們需要了解自己當前使用的是哪個registry(源),這取決于2點
- 知道當前使用的從哪個registry(源),是否下載速度最快的
- Node.js模塊只能發(fā)布在官方源,如果是其他源,是無法publish(發(fā)布)成功的
查看源的狀態(tài)通過nrm ls命令即可
$ nrm ls* npm ---- https://registry.npmjs.org/cnpm --- http://r.cnpmjs.org/taobao - http://registry.npm.taobao.org/nj ----- https://registry.nodejitsu.com/rednpm - http://registry.mirror.cqupt.edu.cnnpmMirror https://skimdb.npmjs.com/registry說明
- *標識說明它是當前使用的registry(源)
- npm是registry(源)名字,可以在nrm里用于切換的名字
- 當前版本nrm共提供了6個registry(源)
切換源
記住registry具體url地址可能有點難為人,那換成名字呢?nrm就是通過名字來切換的。
通過nrm use <registry name>可以快速的切換registry(源)
$ nrm use cnpmRegistry has been set to: http://r.cnpmjs.org/此時,查看一下npm源的情況,就會知道當前采用的是cnpm源
$ nrm lsnpm ---- https://registry.npmjs.org/ * cnpm --- http://r.cnpmjs.org/taobao - http://registry.npm.taobao.org/nj ----- https://registry.nodejitsu.com/rednpm - http://registry.mirror.cqupt.edu.cnnpmMirror https://skimdb.npmjs.com/registry從源碼編譯
Node.js源碼是典型的c/c++項目,使用make作為構(gòu)建工具,所以和其他c/c++從源碼編譯沒什么區(qū)別,傳統(tǒng)的3步,只是準備好依賴即可
安裝依賴
sudo apt-get install g++ curl libssl-dev apache2-utils git-core build-essential下載源碼,并編譯
git clone https://github.com/nodejs/node.git cd node ./configure make sudo make install總結(jié)
本節(jié)沒有采用apt-get或brew這樣的直接安裝方式,而是通過nvm進行安裝,希望大家能夠體會在Node.js快速發(fā)展的今天,可以隨時切換版本,在線上環(huán)境保守,在學習時超前,無論出于哪種目的,3m安裝法都是比較好的選擇。
最后講了如何從源碼進行編譯,這部分主要是c/c++項目的通用編譯法,如果可以,盡量掌握,在后面npm里開發(fā)c/c++ addons的時候會用到的。
總結(jié)
以上是生活随笔為你收集整理的Node.js的3m安装法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: WEB 3.0(非技术版)
- 下一篇: Linux下GCC与G++的区别和联系