EmDash CMS 專案啟動與目錄結構

從空儲存庫開始新 EmDash 專案的實務架構指南,目錄配置可從概念驗證平滑擴展到生產環境。

本指南適用對象

當你從空儲存庫開始,且希望目錄結構能支援:

  • 每日編輯內容變更
  • 不破壞 CMS 假設的前台迭代
  • 之後從本機開發遷移到 Cloudflare

請使用本指南。

目標不是做出最聰明的資料夾樹,而是降低長期維護成本。

先決定執行環境

在建立檔案前,先決定未來 30 到 90 天要優化哪種執行環境:

  • Node.js + SQLite:最快本機上手、營運複雜度最低
  • Cloudflare Workers + D1 + R2:生產 SSR、受管儲存,與 EmDash 外掛模型整合較緊密

若團隊仍在驗證內容策略,先從 Node.js 開始,並從第一天起保留 Cloudflare 友善的命名。這可避免過早鎖定平台,又讓遷移路徑直觀。

建議的基準目錄結構

your-emdash-site/
├── src/
│   ├── components/            # Reusable UI pieces only
│   ├── layouts/               # Shared page shells
│   ├── pages/                 # Astro routes
│   ├── lib/                   # Domain logic and integrations
│   ├── styles/                # Global and shared style tokens
│   └── live.config.ts         # Live content collection mapping
├── seed/                      # Seed data for bootstrap/demo
├── public/                    # Static assets (favicons, static images)
├── docs/                      # Product docs and editorial content (MDX)
├── astro.config.mjs
├── package.json
├── tsconfig.json
└── emdash-env.d.ts

若現有專案已使用 utils/ 而非 lib/,暫時保留。僅在能落實清楚責任歸屬時再更名。

目錄責任歸屬

結構只有在責任明確時才有效:

  • src/components:僅呈現;不直接呼叫資料庫或儲存
  • src/layouts:共用框架(head、導覽框、頁尾殼層)
  • src/pages:路由組合與呈現用的資料接線
  • src/lib:商業規則、資料轉接器與平台膠水程式
  • seed:新環境可重現的基準內容

此分割可避免最常見的漂移:工具程式默默變成商業邏輯。

避免返工的啟動路徑

生產專案請依此順序:

  1. 以官方鷹架建立
  2. 選一種模板(blog、marketing 或 portfolio)
  3. 保留產生慣例,除非與明確團隊標準衝突
  4. 一次只加一種結構自訂

為何順序重要:多數上線延遲不是缺功能,而是早期結構分歧,日後破壞文件、腳本與上手流程。

建議的啟動指令

# Scaffold a new Emdash CMS project
npm create emdash@latest my-emdash-site
cd my-emdash-site

# Install and start local development
npm install
npm run dev

應避免的常見反模式

1)未決定內容模型就先寫路由

在集合與分類形狀未定前就建頁面路由,會導致昂貴重寫。

2)把部署議題混進 UI 資料夾

不要把部署專用腳本與設定輔助放在 componentspages。平台議題留在設定檔與 src/lib

3)無邊界的 utils 資料夾

若什麼都丟進 utils,可發現性會崩潰。寧可在 src/lib 用具名領域,例如 src/lib/contentsrc/lib/mediasrc/lib/auth

初始專案設定的完成定義

僅當下列檢查皆通過,才視為啟動完成:

  • 本機開發伺服器不需手動補丁即可執行
  • 一條範例內容流程端到端可用
  • 可在全新環境匯入 seed 資料
  • CI 建置通過,無環境專屬 hack
  • 新貢獻者能在十分鐘內理解儲存庫導覽

接下來做什麼

結構穩定後:

  1. 在儲存庫中記錄執行環境選擇與遷移準則
  2. 在內容量成長前定義內容類型命名慣例
  3. 為所選平台實作部署實務手冊

目錄結構是架構,不是門面。早點定錨可省下數週。