Clone 下來跑不起來?讓 AI 幫你搞定開發環境

🌏 Read English Version


README 說的都是騙人的

接手一個新專案。

打開 README,寫著:

npm install
npm run dev

看起來很簡單。

執行 npm install,報錯。Node 版本不對。

好,裝 nvm,切版本,再跑一次。

這次 install 過了,但 npm run dev 失敗。缺少環境變數。

README 沒寫要設什麼環境變數。

.env.example,有 20 個變數。哪些必填?哪些可以空?不知道。

隨便填了幾個,再跑一次。

這次起來了,但連不上資料庫。

問同事:「這個專案怎麼跑?」

同事說:「我的可以跑啊,你是不是少裝什麼?」

花了半天,終於跑起來。

這個場景,你經歷過幾次?


為什麼用 Claude Code CLI

市面上 AI 工具很多,為什麼我選 Claude Code CLI 來處理開發環境?

1. 可以讀整個專案

它不是只能看你貼給它的片段。它可以直接讀 package.jsondocker-compose.yml.env.example,理解整個專案的結構。

2. 可以直接執行指令

不用複製貼上。它可以直接在你的終端機跑 npm installchmod 600docker-compose up

3. 連續對話,記住 context

不像 ChatGPT 要一直重複貼背景。它記得你剛才遇到什麼錯誤、試過什麼方法、專案結構是什麼。

4. 可以修改檔案

不只給建議,它可以直接幫你改 package.json、寫 .env、更新 README.md

這些特性加起來,讓它特別適合處理「讓專案跑起來」這類需要來回 debug 的任務。


判斷框架:什麼時候讓 AI 接手

不是所有事都該丟給 AI。這是我的判斷框架:

✅ 完全交給 AI

環境設定 – Node 版本切換 – 依賴安裝 – 環境變數設定 – Docker 設定

依賴升級 – 升級 package 版本 – 解決 dependency 衝突 – 處理 deprecated warning

安全修正npm audit fix – 升級有漏洞的依賴 – 修復安全性問題

這些是規則明確、有標準答案的任務。AI 做得比人快,而且不會漏。

🤝 人機協作

升級後的程式碼修改 – API 變了,要改呼叫方式 – 語法變了,要改寫法 – 行為變了,要調整邏輯

這類任務 AI 可以做,但你要驗證結果。讓 AI 改,你來看對不對。

❌ 人來決定

要不要升級 – 升級的風險和收益 – 時程壓力 – 團隊能力

業務邏輯 – 這個功能該不該保留 – 這個行為是 bug 還是 feature – 要不要趁機重構

這些需要業務 context,AI 看不到,你得自己判斷。


實際案例:三年前的 React 專案

團隊最近接手一個專案。

三年前建的,原作者已經離職。

技術棧: – React 16(現在都 18 了) – Node 14(現在都 20 了) – Webpack 4(一堆 deprecated warning) – 環境變數散落在各處 – npm audit 顯示 47 個漏洞

README 寫著:

npm install
npm start

實際執行:

npm install
npm ERR! ERESOLVE unable to resolve dependency tree
npm ERR! peer dep missing: react@^15.0.0

經典。


Step 1:讓 AI 診斷 + 規劃升級路徑

我打開 Claude Code,進入專案目錄:

cd legacy-react-project
claude

然後說:

「這是一個三年前的 React 專案,我要讓它在本機跑起來。先讀 package.json、package-lock.json 和 README,診斷一下現況,給我一個升級計畫。」

它讀完後回報:

專案診斷:
- React 16.8.0 → 建議升級到 16.14.0(同大版本,風險低)
- Node 要求 14.x,你目前是 20.x
- 47 個安全漏洞(12 個 high,3 個 critical)
- package-lock.json 是三年前的,建議刪除重建

建議升級路徑:
1. 先用 Node 14 跑起來(確認功能正常)
2. 修復安全漏洞
3. 再考慮要不要升級 React 大版本

要我開始執行嗎?

這個診斷和計畫,我自己整理至少要半小時。AI 兩分鐘就給我了。


Step 2:讓 AI 執行環境設定

我說:「好,先讓它用 Node 14 跑起來。」

AI 開始執行:

1. 切換 Node 版本...
   執行: nvm install 14 && nvm use 14
   ✓ Now using node v14.21.3

2. 刪除舊的 lock file...
   執行: rm package-lock.json node_modules -rf
   ✓ 已清除

3. 安裝依賴...
   執行: npm install --legacy-peer-deps
   ✓ 安裝完成(有 warning 但可忽略)

4. 掃描環境變數需求...
   找到以下需要設定的環境變數:
   - REACT_APP_API_URL(必填)
   - REACT_APP_ENV(建議:development)

   要我建立 .env 檔案嗎?

我說:「建立,API_URL 先用 http://localhost:3001」

執行: 建立 .env 檔案
✓ 已建立 .env

5. 啟動開發伺服器...
   執行: npm start
   ✓ 專案已在 http://localhost:3000 啟動

從 clone 到跑起來,10 分鐘。


Step 3:讓 AI 處理安全漏洞

跑起來後,我說:

「現在處理安全漏洞。先跑 npm audit 看看狀況,然後修復。」

執行: npm audit

發現 47 個漏洞:
- 3 critical(需要立即處理)
- 12 high
- 32 moderate

Critical 漏洞:
1. nth-check <2.0.1 - 正則表達式 DoS
2. postcss <8.4.31 - 解析器漏洞
3. webpack-dev-server <4.0.0 - 路徑遍歷

嘗試自動修復...
執行: npm audit fix

修復後剩餘 8 個漏洞(需要手動處理)

剩餘的漏洞需要升級大版本,可能會 break 現有程式碼:
- react-scripts 3.x → 5.x
- webpack 4.x → 5.x

要我升級並修復相關程式碼嗎?

我說:「升級 react-scripts,幫我修復因為升級而壞掉的程式碼。」

執行: npm install react-scripts@5 --legacy-peer-deps

升級完成,檢查是否有需要修改的程式碼...

發現 3 處需要修改:

1. src/setupProxy.js
   - 舊寫法:module.exports = function(app) { ... }
   - 新寫法:需要改成 ES module 格式

   修改中...
   ✓ 已修復

2. src/index.js
   - ReactDOM.render 在 React 18 已 deprecated
   - 但我們還在 React 16,這個可以保留

   略過(不影響)

3. webpack 設定
   - react-scripts 5.x 內建處理,不需要額外設定

   略過

執行: npm start
✓ 專案正常啟動

執行: npm audit
✓ 0 個漏洞

從 47 個漏洞到 0 個漏洞,AI 自己處理,包含程式碼修改。


Step 4:跑起來之後——功能壞了怎麼辦

很多人以為「跑起來」就結束了。

不是的。跑起來只是開始。

專案啟動後,我點了幾個頁面,發現登入頁面白屏。

我說:

「登入頁面白屏,幫我看一下 Console 有什麼錯誤。」

讀取瀏覽器 Console...

錯誤訊息:
TypeError: Cannot read property 'map' of undefined
    at UserList.js:23

分析中...

問題:API 回傳格式變了。
- 舊格式:直接回傳陣列 [user1, user2, ...]
- 新格式:包在物件裡 { data: [user1, user2, ...] }

程式碼預期陣列,但收到物件,所以 .map() 失敗。

要我修復嗎?

我說:「修,順便檢查有沒有其他地方也有這個問題。」

修改 src/components/UserList.js...
- 舊:users.map(user => ...)
- 新:users.data.map(user => ...)
✓ 已修復

掃描其他檔案...
發現 3 處相同 pattern:
- src/components/OrderList.js:45
- src/components/ProductGrid.js:78
- src/pages/Dashboard.js:123

修改中...
✓ 全部修復

執行: npm start
✓ 登入頁面正常顯示

一個問題,連帶發現 4 個。AI 一次處理完。


Step 5:測試全部 fail 怎麼辦

登入頁修好後,我想確認有沒有其他問題。

「跑一下測試看看。」

執行: npm test

結果:47 個測試,39 個失敗 ❌

分析失敗原因...

分類:
- 28 個:snapshot 過期(UI 有改動,需要更新 snapshot)
- 8 個:mock 的 API 格式不對(跟剛才的問題一樣)
- 3 個:看起來是真的 bug

建議處理順序:
1. 先更新 snapshot(自動,風險低)
2. 修復 mock 的 API 格式(我來改)
3. 最後 3 個需要你確認是不是預期行為

要我開始處理嗎?

我說:「前兩個你處理,第三個列出來給我看。」

1. 更新 snapshot...
   執行: npm test -- -u
   ✓ 28 個 snapshot 已更新

2. 修復 mock API 格式...
   修改 src/__mocks__/api.js
   - 舊:return [mockUser1, mockUser2]
   - 新:return { data: [mockUser1, mockUser2] }
   ✓ 8 個測試通過

3. 剩餘 3 個失敗的測試:

   a) test/auth.test.js:45 - "應該在 token 過期時自動登出"
      預期:導向登入頁
      實際:停在當前頁面
      → 可能是 token 過期處理的邏輯有問題

   b) test/cart.test.js:89 - "應該在庫存為 0 時禁用購買按鈕"
      預期:按鈕 disabled
      實際:按鈕可點擊
      → 可能是庫存檢查的時機不對

   c) test/checkout.test.js:156 - "應該在折扣碼無效時顯示錯誤"
      預期:顯示 "折扣碼無效"
      實際:顯示 "網路錯誤"
      → 可能是錯誤處理的邏輯有問題

這 3 個要我修,還是你要先看看?

我說:「這 3 個先放著,我等下確認一下是不是原本就有的 bug。先繼續。」

從 39 個失敗到 3 個,AI 處理了 36 個。剩下的是需要業務判斷的。


Step 6:讓 AI 補文件

最後,我說:

「根據剛才的過程,更新 README,讓下一個人可以在 10 分鐘內跑起來。」

它產出的 README:

## 環境需求

- Node.js 14.x(建議使用 nvm 管理)
- npm 6.x

## 快速開始

# 切換 Node 版本
nvm use 14

# 安裝依賴
npm install --legacy-peer-deps

# 設定環境變數
cp .env.example .env
# 編輯 .env,填入必要的值

# 啟動開發伺服器
npm start

## 環境變數說明

| 變數名稱 | 必填 | 說明 | 範例 |
|---------|------|------|------|
| REACT_APP_API_URL | 是 | 後端 API 位址 | http://localhost:3001 |
| REACT_APP_ENV | 否 | 環境標識 | development |

## 已知問題

1. 如果 npm install 報 peer dependency 錯誤,加上 --legacy-peer-deps
2. 必須使用 Node 14,Node 16+ 會有相容性問題

## 更新紀錄

- 2025-12-08:修復安全漏洞,升級 react-scripts 到 5.x

完整、清楚、下一個人可以直接用。


從救火到還債:這不只是讓專案跑起來

到這裡,你可能以為故事結束了。

專案跑起來了,測試修好了,文件更新了。收工。

但我沒有停在這裡。

我說:

「現在專案穩定了。幫我評估一下,如果要把 React 從 16 升級到 18,工作量大概多少?有什麼風險?」

掃描專案中...

評估報告:

升級範圍:
- React 16.14.0 → 18.2.0
- ReactDOM 16.14.0 → 18.2.0
- 相關依賴 12 個需要更新

需要修改的程式碼:
- src/index.js:ReactDOM.render → createRoot(必改)
- 17 個元件使用 componentWillMount(已 deprecated)
- 3 個地方使用 findDOMNode(React 18 不支援)
- 測試檔案需要更新 render 方式

預估工作量:
- 自動升級 + 修改:約 30 分鐘
- 手動驗證 + 測試:約 2 小時
- 總計:半天

風險評估:
- 低風險:大部分是語法更新,行為不變
- 中風險:findDOMNode 那 3 個地方需要重寫邏輯
- 高風險:無

建議:可以升級。要我開始嗎?

我說:「開始。」

30 分鐘後:

升級完成 ✓

變更摘要:
- React 16 → 18
- 更新 index.js 為 createRoot API
- 重寫 17 個 componentWillMount → useEffect
- 重構 3 個 findDOMNode 使用 useRef
- 更新所有測試的 render 方式
- 修復因升級產生的 2 個 lint 錯誤

執行: npm test
✓ 47 個測試全部通過

執行: npm run build
✓ Production build 成功

要我更新 README 的版本資訊嗎?

這才是 AI 的真正價值

回頭看這整個過程:

原本的目標:讓專案跑起來 實際完成的事: 1. 環境設定 ✓ 2. 依賴修復 ✓ 3. 安全漏洞清零 ✓ 4. 功能修復 ✓ 5. 測試修復 ✓ 6. React 升級(16 → 18)✓ 7. 文件更新 ✓

這些事情,如果用傳統方式做,可能需要一週。

用 AI,半天。

而且不是「勉強能跑」,是比原本更好

這就是從「救火」到「還債」的差別。


AI 完全接手的更多範例

上面的案例已經展示了 AI 可以做很多事。這裡再補充幾個常見場景:

場景 1:Docker 環境設定

你:「這個專案有 docker-compose.yml,幫我把整個環境跑起來。」

AI:
1. 讀取 docker-compose.yml...
2. 發現需要 .env 檔案,建立中...
3. 執行 docker-compose up -d
4. 等待服務啟動...
5. 檢查服務狀態...
   - postgres: running
   - redis: running
   - app: running
6. ✓ 所有服務已啟動,app 在 http://localhost:8080

場景 2:Python 專案環境

你:「這是一個 Python 專案,幫我設定 virtualenv 並安裝依賴。」

AI:
1. 檢查 Python 版本需求... 需要 3.9+
2. 建立 virtualenv...
   執行: python3 -m venv venv
3. 啟動 virtualenv...
   執行: source venv/bin/activate
4. 安裝依賴...
   執行: pip install -r requirements.txt
5. 發現缺少系統依賴 libpq-dev...
   執行: brew install postgresql(macOS)
6. 重新安裝...
   ✓ 依賴安裝完成

場景 3:修復 CI/CD 失敗

你:「GitHub Actions 失敗了,幫我看一下 log 然後修復。」

AI:
1. 讀取 .github/workflows/ci.yml...
2. 讀取失敗的 log...
   錯誤:Node 版本不符,CI 用 18,專案需要 14
3. 修改 workflow 檔案...
   將 node-version: 18 改為 node-version: 14
4. ✓ 已修復,要我 commit 並 push 嗎?

什麼時候不該讓 AI 接手

講完 AI 能做的,也要講它做不好的。

1. 需要權限的東西

  • 公司 VPN
  • 內部 npm registry
  • 需要申請的 API key、資料庫帳號

AI 不知道你公司的流程,這些你得自己處理。

2. 文件完全沒有

如果專案連 README 都沒有,package.json 也是亂寫的,AI 也只能猜。

這時候還是要問人。

3. 要不要升級的決策

AI 可以幫你升級,但「該不該升級」是你的決定。

  • 這個專案還會維護多久?
  • 升級的 ROI 值得嗎?
  • 團隊有時間處理升級後的問題嗎?

這些是業務決策,不是技術問題。

4. 業務邏輯的判斷

跑起來後,你發現一個奇怪的行為。這是 bug 還是 feature?

AI 不知道,因為它沒看過 PRD,沒聽過 PM 的說明,不知道三年前的需求背景。

這類問題,還是要問人。


延伸:本機環境也可以這樣搞

如果你連本機開發環境都還沒設好,AI 也能幫忙。

我換新電腦時,會說:

「我是一個全端工程師,主要用 Node.js 和 Python。幫我列出 macOS 上需要裝的工具,然後一個一個幫我裝。」

它會: 1. 裝 Homebrew 2. 裝 nvm、pyenv 3. 設定 Git(name、email、SSH key) 4. 裝 VS Code 並設定推薦 extension 5. 設定 shell(zsh、oh-my-zsh)

整個過程你只需要確認和輸入密碼。


延伸:部署環境也一樣

專案在本機跑起來後,部署環境也可以用同樣方法。

你:「這個專案要部署到 AWS,幫我寫 GitHub Actions 的 CI/CD pipeline。」

你:「幫我優化這個 Dockerfile,現在 build 要 5 分鐘太久了。」

你:「幫我設定 nginx reverse proxy,把 /api 導到後端服務。」

這類標準化的 DevOps 任務,AI 特別擅長。


省下的不只是時間

用 AI 建置開發環境,表面上是省時間。

但真正的價值是:

1. 一致性

AI 會照著標準流程走,不會因為「我的電腦比較特別」而產生差異。

2. 文件化

每次設定完都請 AI 更新文件,知識就不會只在某個人的腦袋裡。

3. 降低門檻

新人 onboard 從「問同事 + 踩坑半天」變成「跟 AI 對話 10 分鐘」。

4. 安全性

AI 會主動處理安全漏洞,不會因為「先跑起來再說」而忽略。

這才是 AI 的真正價值——不是取代你,而是把你從重複性的苦工中解放出來。


下次你 clone 一個專案

試試這個流程:

  1. 打開 Claude Code:claude
  2. 說:「讀這個專案,告訴我怎麼跑起來」
  3. 遇到錯誤,直接貼給它
  4. 讓它處理安全漏洞
  5. 最後請它更新 README

10 分鐘,搞定。

然後你就有時間做真正重要的事——寫 code,而不是 debug 環境。

Leave a Comment