NPM 基本指令
淺淺的紀錄一下 NPM 是甚麼,以及相關的一些指令,藉此避免踩到一些開發中常見的雷。
甚麼是 NPM?
全名 Node Package Manager,是一種套件管理工具,簡言之就是匯集各種 Node js 套件的線上庫。
安裝 Node JS & NPM
上圖是 Node js 官網所提供的下載點,可以看到分成兩個部分,左邊為 LTS(Long Term Support),屬於長期支援維護的版本,可以理解成較穩定的版本;右邊 Current 的部分則是最近、最新的版本。
Node js 官方在版本的釋出上有自己的邏輯,通常會在每年四月份發布偶數版本,十月份發布奇數版本,可以從下圖看到近期的版本維護狀態:
新的版本在發布後,版本號如果是奇數,六個月後就不會再維護;但版本號如果是偶數,半年後就會進入長期維護(Active LTS)的狀態,並保證在接下來的三十個月內會更新與修復各種問題,因此新專案通常會選擇安裝 LTS 的版本。
接著進入正題,要如何安裝 NPM?這個問題其實在安裝 Node 後就已經解決了,因為 NPM 是 Node js 開發環境預設的套件管理工具(Packge Manager),因此在安裝 Node 的同時,NPM 會跟著一起安裝。
因為每個專案所使用的 Node 版本不盡相同,因此為了避免產生版本與套件之間的相容問題,建議使用 NVM(Node Version Manager)來切換 Node 版本。
安裝完成後,開啟任一終端機即可開始操作。
檢視版本
在終端機輸入以下指令:
1 |
|
如果顯示 npm 版本號,表示安裝成功,如下所示:
1 |
|
初始化目錄
指定任一資料夾為目錄,輸入以下指令:
1 |
|
此時會顯示訊息要求輸入專案的一些資訊,如下所示:
上述部分只需要持續按下 Enter 即可。
接著透過編輯器開啟專案資料夾,可以看到一個 package.json 的檔案,這是資料夾在進行 npm 初始化後所產生的 json 格式檔案,內容主要是紀錄專案的資訊,如下所示:
安裝套件
全域安裝
1 |
|
安裝套件時,在指令加入 -g
,套件就會被安裝在全域,也就是當前使用的電腦上;這樣做的好處是,當有其他專案需要使用這個套件時,就不用再另外安裝該套件在專案資料夾中。
安裝於指定目錄
1 |
|
以指定專案資料夾為目錄並執行上述指令,套件就會被安裝在該資料夾中,在加入 --save
參數後,這個套件就會被記錄在 package.json 檔案裡,下列以安裝 jquery 為範例:
可以看到檔案中新增了一個 dependencies 項目,並且在下方可以看到已安裝的 jquery 套件與對應版本。
因為不同專案所使用的套件與套件版本不同,因此在接手別人開發的專案時,可以先依據 dependencies 中的資訊來安裝對應的套件。
安裝指定版本套件
正常的情況下,安裝下來的套件預設會是最新的版本,但一些較舊的專案可能不支援新版本的套件,此時就可以使用以下指令來安裝指定版本的套件。
1 |
|
版本數字意義
通常套件的版本會以 3 個數字的格式來表示,但每個數字所代表的意義其實不同,下列以 jquery 為例:
1 |
|
3
- 主要版本,通常會因為重大改版而增加版本號。6
- 次要版本,依當前的主要版本為基準,新增功能時增加版本號。0
- 修正版本,依當前的主要版本為基準,修正錯誤時增加版本號。
開發的過程中通常不會直接更新主要版本,因為這樣有極高的機率毀掉專案,正常的情況下只會更新次要版本或修正版本,依專案的開發情形而定。
版本標示符號
^x.x.x
- 安裝套件時,自動更新次要與修正版本,主要版本不做更動。~x.x.x
- 安裝套件時,自動更新修正版本,主要與次要版本不做更動。latest
- 安裝套件時,自動安裝最新版本。- 未加入任何符號,表示只安裝當前輸入的版本。
更新套件版本的方式,只需要將專案資料夾中的 node_modules 刪除,再重新執行以下指令,系統就會根據該專案中的 package.json 檔案設置來安裝所有會使用到的套件。
1 |
|
移除套件
1 |
|
需要注意的是,上述指令只會將專案資料夾中的套件移除,但是並不會同時更新 package.json 檔案中的設置,如果有這個需求,只需要在指令中加入 --save
參數即可。