隨著專案越來越大,你會發現前台元件愈來愈多、重複的代碼也愈來愈難維護。
今天,我們要利用 Cursor 的 AI 能力,讓它幫我們自動分析專案中的 UI 元件,
然後一步步拆解、封裝,建立一個屬於自己的 可重用 UI Library。
這不只是「程式碼整理」,而是讓 Cursor 成為你團隊中的「UI 架構師」。
打開 Cursor,選擇你專案的 /components
目錄,並輸入以下提示詞:
🧠 Prompt:
「請幫我分析目前專案中出現頻率最高、可共用的前端元件,
並列出它們的用途與相似度,建議我應該先抽出哪幾個 UI 元件。」
Cursor 會自動掃描並列出建議清單,例如:
Button
:用於多種操作按鈕Card
:資訊區塊、文章預覽Tag
:標籤樣式重複度高Modal
:不同頁面有相似彈窗結構這時我們就能依據 Cursor 的分析結果,挑選最值得模組化的元件。
接著,在 Cursor 中輸入:
🧠 Prompt:
「幫我建立一個
packages/ui-library
資料夾,並將常用 UI 元件封裝成獨立模組,導出於 index.ts,
每個元件都需有明確的 props 類型與 story demo。」
Cursor 會直接幫你:
packages/ui-library
/components
下的重複元件移入 Libraryindex.ts
匯出入口Cursor 甚至會自動重構 CSS、引用樣式檔、並修正 import 路徑。
接著,我們可以讓 Cursor 幫忙建立一個簡單的主題系統。
在對話中輸入:
🧠 Prompt:
「請幫我在
ui-library
中加入主題支援(light / dark mode),並讓每個元件可透過 context 自動切換樣式。」
Cursor 會生成像這樣的程式碼:
export const ThemeContext = createContext({ mode: "light" })
export const useTheme = () => useContext(ThemeContext)
export const ThemeProvider = ({ mode, children }: { mode: string; children: ReactNode }) => {
return (
<ThemeContext.Provider value={{ mode }}>
<div className={mode === "dark" ? "dark" : "light"}>{children}</div>
</ThemeContext.Provider>
)
}
它甚至會自動在每個元件中套入條件樣式控制(如 className={theme === 'dark' ? ...}
)。
AI 不只會幫你封裝元件,也能幫你自動建立 demo 與測試環境。
你可以說:
🧠 Prompt:
「幫我在
/ui-library/stories
中建立每個元件的 Storybook 示例與 Jest 測試範例。」
Cursor 會:
這讓 UI Library 更容易被團隊採用與維護。
最後一步,我們可以讓 Cursor 幫我們生成完整的打包設定。
🧠 Prompt:
「幫我設定 tsup 打包配置,將 ui-library 輸出為可被其他專案安裝的 npm 套件。」
Cursor 會建立以下檔案:
{
"name": "@synvize/ui-library",
"version": "1.0.0",
"main": "dist/index.js",
"types": "dist/index.d.ts",
"scripts": {
"build": "tsup src/index.tsx --format esm,cjs --dts"
}
}
完成後,只要在主專案中執行:
pnpm link ../packages/ui-library
即可直接使用你自己的 Library!
接下來,你可以讓 Cursor 幫你:
這時候的 Cursor,不只是「寫程式的 AI」,
而是你團隊的 Design System 守護者。
任務 | 狀態 |
---|---|
分析重複元件 | ✅ |
建立 Library 架構 | ✅ |
加入主題系統 | ✅ |
自動產生 Storybook 與測試 | ✅ |
打包成獨立 UI Library | ✅ |
我們今天讓 Cursor 幫你完成了一件許多團隊都覺得「麻煩但必要」的任務——
UI 套件化與模組封裝。