全部速查表前端開發

npm

npm 10+

日常 npm CLI 命令快速參考:init/install/add/remove/update/scripts/run/publish/audit,加上 lockfile、registry、cache 管理——附常用參數與實作範例。

34 條命令

專案初始化

npm init

互動式引導建立 `package.json`,會詢問名稱/版本/描述/進入點等欄位。

-y 接受所有預設值;--init.author '姓名 <e@x>' 覆寫預設

npm init -y
npm init -y

直接以合理預設值(`name` 取自目錄、`version` 為 1.0.0 等)產生 `package.json`——現代的起手式。

npm init -y && cat package.json

安裝

npm install

安裝 `package.json` 中列出的所有依賴,重新整理 `node_modules` 與 `package-lock.json`。若 `NODE_ENV=production`,會跳過 dev 相依。

--save-exact / -E 鎖定精確版本;--legacy-peer-deps;--force;--no-audit;--prefer-offline

npm install
npm ci

嚴格依據 `package-lock.json` 進行全新安裝。比 `npm install` 更快,先刪除 `node_modules`,且拒絕修改 lockfile——CI 的正確選擇。

--omit=dev 略過 devDependencies;--prefer-offline

npm ci --omit=dev

新增依賴

npm install <pkg>

新增執行階段依賴(預設 `dependencies`)。會把解析後的版本記錄到 `package-lock.json`,並寫回 `package.json`。

<pkg>@<版本範圍>;--save-dev / -D;--save-exact / -E;--save-optional / -O;--save-prod / -P

npm install lodash && npm install eslint@^9 --save-dev
npm install <pkg>@<version>

安裝特定版本範圍(semver):精確 `1.2.3`、波浪號 `~1.2.3`、插入號 `^1.2.3`,或 dist-tag 如 `latest`/`next`/`beta`。

npm install [email protected] && npm install next@latest
npm install -D <pkg>

加入 `devDependencies`——只在建置/測試階段需要的工具(TypeScript、Jest、ESLint、Prettier)。

npm install -D typescript @types/node vitest
npm install -g <pkg>

全域安裝套件,使其執行檔在每個專案的 PATH 都可用(TypeScript、tsx、create-react-app、http-server)。

npm install -g typescript tsx pnpm

移除

npm uninstall <pkg>

從 `node_modules` 與 `package.json` 移除套件。

-D 從 devDependencies 移除;-g 移除全域套件;--save false 略過 manifest 編輯(罕見)

npm uninstall lodash && npm uninstall -D @types/node

更新

npm update

在 `package.json` semver 範圍允許之內升級所有依賴,並同步更新 `package-lock.json`。

--save false 略過 manifest 寫入;--workspace 在 workspaces 內更新

npm update
npm update <pkg>

把單一套件升級到符合目前 semver 範圍的最新版本。

npm update eslint
npm install <pkg>@latest

把單一套件升級到最新發行版(繞過 semver 範圍,並把範圍重寫為 `^<新版本>`)。

npm install typescript@latest && npm install -D vitest@latest

執行指令稿

npm run <script>

執行 `package.json` 中 `scripts` 區段定義的指令稿。`npm test`、`npm start`、`npm stop`、`npm restart` 是 `npm run X` 的簡寫。

-- silent 抑制 npm 日誌噪音;--if-present 若不存在不要報錯;-- <args> 將後續參數原樣傳給指令稿

npm run build -- --mode production
npm run <script> -- <args>

把額外的 CLI 參數傳給底層指令稿。`--` 之後的所有內容都會原樣轉發。

npm run lint -- --fix src/
npm exec -- <command>

從本地或 `npx` 快取的套件執行指令。取代已被棄用的 `npx <command>` 直接呼叫方式。

npm exec -- create-react-app my-app

檢視

npm ls

印出當前專案的依賴樹(頂層 + 傳遞依賴)。有助於找出同一套件的多重複本。

--all;--depth=N 限制深度;--json 輸出 JSON;-g 列出全域

npm ls --depth=0 && npm ls react
npm outdated

以表格列出每個已安裝版本比 manifest 範圍允許的最新版本還舊的依賴。

--long 詳細;--json 輸出 JSON

npm outdated
npm view <pkg>

顯示套件的 registry metadata——版本、dist-tags、依賴、維護者、儲存庫 URL、README 摘錄。

versions;time;dist-tags;repository.url

npm view lodash versions && npm view react dist-tags

Lockfile

npm shrinkwrap

產生獨立的 `npm-shrinkwrap.json`(格式與 `package-lock.json` 相同),用於沒有 lockfile 也能重現安裝的應用程式。

npm shrinkwrap

Registry

npm config get registry

印出目前啟用的 registry URL。預設為 `https://registry.npmjs.org/`。

npm config get registry
npm config set registry <url>

把 npm 指向私有/快取型 registry(GitHub Packages、Verdaccio、中國鏡像)。寫入 `~/.npmrc` 或專案 `.npmrc`。

npm config set registry https://registry.npmmirror.com/
npm login

對已設定的 registry 進行驗證,並把 token 存入 `~/.npmrc`。`npm publish` 之前必須先登入。

--registry=<url> 登入不同的 registry;--scope=<scope> 限制 token 範圍

npm login --registry=https://registry.npmjs.org/

發佈

npm publish

把當前套件上傳到已設定的 registry。要求 `package.json` 中有 `name`(通常還需要 `version`、`repository`),且登入的使用者具備發佈權限。

--access public|restricted(scoped 套件);--dry-run;--tag <tag> 以特定 dist-tag 發佈

npm publish --access public --tag beta
npm unpublish <pkg>@<version>

從 registry 移除特定版本。**強烈建議在發佈後 72 小時內不要執行**——npm 雖支援但並不鼓勵。

npm unpublish [email protected]
npm deprecate <pkg>@<version> '<msg>'

把某版本標記為已棄用,並附上 npm 在安裝時會印出的訊息。引導使用者改用修正版而不刪除歷史的正確做法。

npm deprecate [email protected] 'use 1.2.4+ — security fix'

稽核

npm audit

對已安裝的依賴樹執行安全性稽核,從 npm registry 取得公告。

--json;--omit=dev 略過 dev 依賴;--audit-level=low|moderate|high|critical

npm audit --omit=dev
npm audit fix

自動把套件升級到能解決公告且最接近的非破壞性版本。`npm audit fix --force` 會接受 semver 主版號跳躍,僅在你能接受時使用。

--force;--dry-run

npm audit fix

快取

npm cache clean --force

清除全域 npm 快取(POSIX 為 `~/.npm`)。在切換 registry 或排查奇怪的安裝錯誤後使用。

npm cache clean --force
npm cache verify

驗證已快取 tarball 的完整性而不刪除。可隨時安全地執行。

npm cache verify

Workspaces

npm install -w <workspace>

把套件安裝到 monorepo 內的單一具名 workspace(定義於 `package.json` 的 `workspaces`)。

npm install lodash -w @myorg/web
npm run <script> -ws

在 monorepo 的每個 workspace 執行指令稿。`-w <name>` 只執行單一 workspace。

--if-present 若不存在不要報錯

npm run build -ws && npm test -w @myorg/api

雜項

npm doctor

執行環境診斷(Node 版本、registry 可達性、快取狀態、Git 是否存在)——排查問題時很有用。

npm doctor
npm fund

印出當前專案直接依賴的贊助連結(供維護者贊助 OSS 使用)。

npm fund
npm pkg set <key>=<value>

從 CLI 直接修改 `package.json` 中的欄位,無需開啟編輯器。適合在指令稿/hooks 中使用。

npm pkg set scripts.lint='eslint .' && npm pkg get version

相關命令速查

關於 npm

npm 是 Node.js 的預設套件管理程式,由 Isaac Z. Schlueter 於 2010 年以獨立工具的形式撰寫,2011 年起隨 Node.js 0.6.3 內建。這個名稱原本代表 `Node Package Manager`,但團隊自 2014 年起已不再將其視為縮寫。目前穩定版線為 npm 10,隨 Node 20+ 一起發佈。npm 會與 registry(預設 `registry.npmjs.org`,自 2020 年起由 GitHub 託管的公開 CouchDB)通訊,讀寫 `package.json` 與 `package-lock.json`,並支援本地安裝(專案內 `node_modules`)與全域安裝(加入 PATH)。npm 7+ 引入了 monorepo 的 workspaces;npm 9+ 內建 `npx` 並搭載嚴格的 peer dependency 引擎。大部分 npm 指令接受 `-D`(開發)、`-E`(精確)、`-g`(全域)、`--save-prod`,以及用於非標準安裝目錄的 `--prefix` 旗標。npm 絕不會上傳你的程式碼——它只會寫入本地檔案與 registry。npm registry 會彙總匿名下載量統計,但不會送出任何專案內容。

速查頁版本 1.0.0