[API-d9] - NVM 與 NPM 使用
NVM 與 NPM 使用
NVM - Node.js Version Manager
安裝
如果是 Ubuntu 的話必須先要有 build-essential
和 libssl-dev
套件
不過這個我們之前就裝過了,所以直接安裝 NVM 吧~
$ curl https://raw.githubusercontent.com/creationix/nvm/v0.17.2/install.sh | bash
$ source ~/.bashrc
使用 NVM 安裝 node.js
先前我們有使用 Ubuntu 本身的 apt-get 安裝 Node.js
不過那是被安裝到 /usr/bin/node
有時候要安裝套件需要 sudo 提供管理者權限
非常麻煩,因此我們使用 NVM 來安裝另一個 Node.js
這個 Node.js 的執行檔就任我們使用,不需要提供管理者權限了
$ nvm install 0.10
nvm 就會安裝 0.10 版本,安裝完後就要使用它:
$ nvm use 0.10
再來我們把 nvm 的 node.js 設定成預設的 node
否則重開機後,node 指令會變回原本系統的 node
$ nvm alias default 0.10
我們觀察一下現在使用的 node 指令是哪裡來的:
$ which node
/home/vagrant/.nvm/v0.10.32/bin/node
Good! 他已經被安裝到我們使用者目錄底下了
原本的系統 Node.js 是在 /usr/bin/node
如果要切換回系統的 Node.js:
$ nvm use system
Now using system version of node: v0.10.32.
// 看一下現在使用 node 的路徑
$ which node
/usr/bin/node
NPM - Node.js Package Manager
NPM 顧名思義就是 node.js 的套件管理系統,
世界上有許許多多的開發者為 Node.js 開發了許許多多的套件,
我們受惠于此,也不用再自己造輪子,拿這些佛心的大大的套件來使用,打造出我們想要的服務,
像我們接下來會使用的 Express 和 Mongodb 的 driver 都是別人寫好開放出來給大家用的!
下面簡單介紹 NPM 的使用方式
初始化專案資料夾
$ npm init
終端機會詢問各種問題來幫忙建立 package.json 的檔案
是在資料夾中建立專案前必下的指令
並且,使用 package.json 有個好處
只要將 package.json 給其他人
其他人只需要將 package.json 放到某個資料夾
並下:
$ npm install
就會在該資料夾安裝 package.json 中列出的所有套件
就不需要一個一個尋找及安裝,非常方便!
安裝套件
// 安裝全域套件
$ npm install [套件名稱] -g
// 安裝套件在專案資料夾
// 會安裝在目前所在的資料夾,所以要下此指令必須先確認自己是否在專案根目錄
$ npm install [套件名稱]
// 通常專案資料夾底下都會有一個 package.json 來管理套件相依性
// 如果在專案資料夾底下下此指令,會將你所安裝的套件加入 package.json 中
// 一樣也是要先確認自己是否在專案目錄底下
$ npm install [套件名稱] -save
移除套件
// 移除全域套件
$ npm uninstall [套件名稱] -g
// 移除在專案資料夾的某個套件
// 會移除在目前所在的資料夾某個套件,所以要下此指令必須先確認自己是否在專案根目錄
$ npm uninstall [套件名稱]
// 通常專案資料夾底下都會有一個 package.json 來管理套件相依性
// 如果在專案資料夾底下下此指令,會將你所移除的套件從 package.json 中刪除
// 一樣也是要先確認自己是否在專案目錄底下
$ npm uninstall [套件名稱] -save
列出套件
// 列出全域套件
$ npm ls -g
// 列出全域套件詳細資訊
$ npm ls -gl
// 在專案資料夾底下:
// 列出專案資料夾的套件
$ npm ls
// 列出專案資料夾的詳細套件資訊
$ npm ls -l
更新套件
// 更新全域套件
$ npm update -g
// 在專案資料夾底下:
// 更新專案套件
$ npm update
搜尋套件
$ npm search [套件名稱]
注意!!
請注意,使用系統 Node.js 的 npm 所安裝的套件,是屬於系統 Node.js 的
切換到使用者目錄底下的 Node.js 時,是不會共用系統 npm 的套件的
請注意這一點,接下來我們都會使用 nvm 的 node.js
我們可以透過以下例子來驗證:
// 使用系統 node.js
$ nvm use system
Now using system version of node: v0.10.32.
// 查看 npm 全域套件
$ npm list -g
/usr/lib
├─┬ express@4.9.5
│ ├─┬ accepts@1.1.1
│ │ ├─┬ mime-types@2.0.2
│ │ │ └── mime-db@1.1.0
│ │ └── negotiator@0.4.8
....
// 使用 nvm node.js
$ nvm use 0.10
Now using node v0.10.32
// 查看 npm 全域套件
$ npm list -g
/home/vagrant/.nvm/v0.10.32/lib
└─┬ npm@1.4.28
├── abbrev@1.0.5
├── ansi@0.3.0
├── ansicolors@0.3.2
├── ansistyles@0.1.3
├── archy@0.0.2
├── block-stream@0.0.7
├── char-spinner@1.0.1
├── child-process-close@0.1.1
├── chmodr@0.1.0
...
主要差別就在於 列出全域套件時,還會提醒你這些套件裝在哪裡,如果不是裝在使用者目錄底下,
表示現在用的是系統的 Node.js
因此發現自己不對了就快換回來吧,如果系統裝爛了,也可以利用先前打包的 box 還原哦!
怎麼找套件?
套件那麼多,我要到哪裡找?
除了根據自己的需求 Google 外,
下面是 Node.js module 的官方網站: https://nodejsmodules.org/
有做最受歡迎的套件排名,進去瀏覽一下,有時候會發現一些好用的套件哦!