📝 TypeScript 全局 vs 局部安裝、更新、卸載完整指南

| TypeScript | 2 Reads

在使用 Node.js + TypeScript 開發時,常常會遇到 TypeScript 是安裝在「全局」還是「局部」的問題,這篇文章將系統性整理相關指令與行為差異,幫助你理解並正確使用 tscnpx tsc


📦 全局 vs 局部安裝 TypeScript 對照表

操作項目 全局 (Global) 局部 (Local / 專案內)
✅ 安裝 npm install -g typescript npm install --save-dev typescript
🔄 更新 npm install -g typescript(覆蓋安裝) npm update typescriptnpm install typescript@latest --save-dev
❌ 卸載 npm uninstall -g typescript npm uninstall typescript
🔍 檢查版本 tsc --version(全局) npx tsc --version(本地,無則 fallback 全局)
🔧 執行方式 tsc(執行全局) npx tsc(優先執行本地)
安裝路徑 npm root -g(如:Roaming\npm) ./node_modules/typescript
使用時機 快速測試、非專案用途 專案開發,版本可控
配置檔案 無自動生成 搭配 tsconfig.json 一起使用

🚀 為何推薦使用局部 + npx tsc

雖然全局安裝後可直接執行 tsc,但這會造成以下風險:

  • 無法保證與其他專案使用相同版本;

  • 不同人開發可能出現版本差異導致錯誤;

  • 環境無法還原(例如 CI/CD)。

所以最佳實務是:

🔒 「專案內局部安裝 TypeScript + 使用 npx tsc 編譯」


⚙️ tsc vs npx tsc 差異解釋

指令 說明
tsc 執行全局安裝的 TypeScript 編譯器。與當前專案無關
npx tsc 會先查找當前專案 node_modules/.bin/tsc,無則 fallback 到全局版本

🔍 可能出現的迷思

❓「我沒裝全局也能直接打 tsc?」
✅ 可能是因為:

  • 你的某個工具或 shell(如 VSCode、某些腳手架)幫你加了 node_modules/.bin 到 PATH;

  • 你實際上裝了全局版本但忘了。

👉 檢查用:

where tsc      # Windows
which tsc      # macOS / Linux

📌 如何確認 npx 實際用的是誰

想知道 npx tsc 執行的到底是哪個版本,可以用這招:

npx --no-install tsc --version

這會:

  • 只使用本地已安裝的 tsc

  • 若本地沒安裝,會報錯,不會 fallback 到全局(可用來驗證)。


🧪 總結與建議實務流程

操作目標 推薦做法
建立 TypeScript 專案 npm install --save-dev typescriptnpx tsc --init
編譯 TypeScript 專案 npx tsc
檢查版本(不受全局干擾) npx tsc --version
快速測試 TS 功能 安裝全局版本 + 用 tsc
移除 TypeScript(乾淨) npm uninstall -g typescript 和/或 npm uninstall typescript

🧰 Bonus:快速列出全局與局部的 tsc 路徑與版本

# Windows PowerShell 版本
Write-Host "Global tsc:"; where tsc
Write-Host "Local tsc (if any):"; if (Test-Path ".\node_modules\.bin\tsc") { .\node_modules\.bin\tsc --version }

# Unix/macOS 版本
echo "Global tsc:"; which tsc
echo "Local tsc (if any):"; [ -x "./node_modules/.bin/tsc" ] && ./node_modules/.bin/tsc --version

如果你覺得這篇實用,別忘了把它加入書籤,或轉發給還在糾結 tscnpx tsc 的夥伴 😄

返回目錄

This article was last edited at