npm 是什麼?(給非工程師的解釋)
// 一句話回答
npm(Node Package Manager)是 JavaScript/Node.js 的「套件管理工具」,像程式界的 App Store:全世界開發者把寫好的功能打包成「套件」放上去,你用一行 `npm install 套件名` 就能裝進自己的專案,不用自己從零重寫。
先認識兩個底層名詞:JavaScript 與 Node.js
要懂 npm,先認識它服務的對象。JavaScript 是一種「程式語言」——寫網頁互動效果(按鈕、動畫、表單)最常用的語言,你逛的每個網站幾乎都有它。
但 JavaScript 本來只能在「瀏覽器裡」跑。後來有人做了 Node.js,讓 JavaScript 也能在「電腦或伺服器上」直接執行——你可以把 Node.js 想成「讓 JavaScript 走出瀏覽器、在電腦上跑起來的引擎」。而 npm,就是隨 Node.js 一起來的好幫手。
用「App Store」比喻
手機想要新功能,你不會自己寫 App,而是去 App Store 下載別人做好的。寫程式也一樣。
需要某個功能(處理日期、寄 email、畫圖表),與其自己從頭刻,不如去 npm 上找一個現成的「套件(package)」裝進來。「套件」就是「別人寫好、打包好、可以直接拿來用的一組程式功能」。
npm 是什麼
npm 全名 Node Package Manager,直譯就是「Node 的套件管理員」。它其實是兩件事合在一起:一個「超大的公開套件庫」(全世界開發者上傳分享的套件都在這),加上一個「幫你安裝與管理套件的指令工具」。
所以當人家說「用 npm 裝一個套件」,就是「透過 npm 這個工具,從那個大倉庫裡把某個現成功能抓下來裝進專案」。
你會在哪裡看到它、會遇到哪些名詞
跑工程師給你的專案、或照教學裝環境時,常會看到叫你在終端機打 npm install(終端機就是打指令的視窗,不熟的話可先看我們的 CLI 教學)。它會自動把這個專案需要的套件通通抓下來、裝好。
過程中會遇到這幾個名詞,一次講清楚:
- package.json:專案的「材料清單」,用文字記錄這個專案用到(依賴)哪些套件、各要哪個版本
- 依賴(dependency):意思是「這個專案要正常運作,得靠某些套件」——那些被靠的套件就是它的「依賴」
- node_modules:實際被裝下來的套件,全都放在這個資料夾裡(通常很大、不用手動去改它)
- `npm install`:照 package.json 這份清單,把需要的套件一次裝齊
- `npm run 某指令`:執行專案裡預先定義好的動作(例如啟動網站、打包上線)
對非工程師的意義
你不用會用 npm 開發,但知道它是什麼,能讓你:看懂技術教學的安裝步驟、順利跑起別人給你的專案、跟工程師溝通時不卡在名詞。
它是這類專案最基本的一塊。過程會碰到一點命令列(CLI,就是打指令),但多半是照著教學複製貼上,不需要你會寫程式。
常見問題
npm 跟 Node.js 是一樣的嗎?
不一樣,但綁在一起。Node.js 是「讓 JavaScript 在電腦上執行的引擎」,npm 是「隨 Node.js 一起安裝、用來管理套件的工具」——裝了 Node.js 通常就有 npm。
npm 要付費嗎?
公開套件與基本使用是免費的。npm 也有付費的私有套件、企業方案(給公司放不對外公開的內部套件),但一般使用免費的就足夠。
為什麼 node_modules 資料夾那麼大?
因為你裝的套件常常又「依賴」一堆別的套件(它自己也要靠別人才能運作),層層累積下來檔案就很多。這是正常現象,通常不需要手動去動它。
一定要會打指令(CLI)才能用 npm 嗎?
npm 主要透過終端機下指令使用(例如 `npm install`),所以會碰到一點命令列。但多半是照教學複製貼上,不需要會寫程式。