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 -v

如果顯示 npm 版本號,表示安裝成功,如下所示:

1
6.9.0

初始化目錄

指定任一資料夾為目錄,輸入以下指令:

1
npm init

此時會顯示訊息要求輸入專案的一些資訊,如下所示:

上述部分只需要持續按下 Enter 即可。

接著透過編輯器開啟專案資料夾,可以看到一個 package.json 的檔案,這是資料夾在進行 npm 初始化後所產生的 json 格式檔案,內容主要是紀錄專案的資訊,如下所示:

安裝套件

全域安裝

1
npm install -g 套件名稱

安裝套件時,在指令加入 -g,套件就會被安裝在全域,也就是當前使用的電腦上;這樣做的好處是,當有其他專案需要使用這個套件時,就不用再另外安裝該套件在專案資料夾中。

安裝於指定目錄

1
npm install --save 套件名稱

以指定專案資料夾為目錄並執行上述指令,套件就會被安裝在該資料夾中,在加入 --save 參數後,這個套件就會被記錄在 package.json 檔案裡,下列以安裝 jquery 為範例:

可以看到檔案中新增了一個 dependencies 項目,並且在下方可以看到已安裝的 jquery 套件與對應版本。

因為不同專案所使用的套件與套件版本不同,因此在接手別人開發的專案時,可以先依據 dependencies 中的資訊來安裝對應的套件。

安裝指定版本套件

正常的情況下,安裝下來的套件預設會是最新的版本,但一些較舊的專案可能不支援新版本的套件,此時就可以使用以下指令來安裝指定版本的套件。

1
npm install 套件名稱@版本號

版本數字意義

通常套件的版本會以 3 個數字的格式來表示,但每個數字所代表的意義其實不同,下列以 jquery 為例:

1
"jquery""^3.6.0"
  • 3 - 主要版本,通常會因為重大改版而增加版本號。
  • 6 - 次要版本,依當前的主要版本為基準,新增功能時增加版本號。
  • 0 - 修正版本,依當前的主要版本為基準,修正錯誤時增加版本號。

開發的過程中通常不會直接更新主要版本,因為這樣有極高的機率毀掉專案,正常的情況下只會更新次要版本或修正版本,依專案的開發情形而定。

版本標示符號

  • ^x.x.x - 安裝套件時,自動更新次要與修正版本,主要版本不做更動。
  • ~x.x.x - 安裝套件時,自動更新修正版本,主要與次要版本不做更動。
  • latest - 安裝套件時,自動安裝最新版本。
  • 未加入任何符號,表示只安裝當前輸入的版本。

更新套件版本的方式,只需要將專案資料夾中的 node_modules 刪除,再重新執行以下指令,系統就會根據該專案中的 package.json 檔案設置來安裝所有會使用到的套件。

1
npm install

移除套件

1
npm uninstall 套件名稱

需要注意的是,上述指令只會將專案資料夾中的套件移除,但是並不會同時更新 package.json 檔案中的設置,如果有這個需求,只需要在指令中加入 --save 參數即可。

參考資料

從零開始:使用NPM套件
npm 入門到進階


NPM 基本指令
http://kurifu.tw/2022-02-07-npm-note/
作者
Cliff Chu
發布於
2022年2月7日
許可協議