前面講完了 TypeScript,今天就來建立一個整合 TypeScript 的 Express 專案。
Express Generator TypeScript 是一個應用程式產生器,結合了 Express 框架與 TypeScript。
express-generator
的功能市面上雖有類似工具(如 express-generator-ts
),但存在以下問題:
因應單頁應用程式(SPA)的普及,本工具:
index.html
所需的基本配置內建所有開發所需工具:
已預先設定路徑別名,無需額外安裝套件:
tsconfig-paths
module-alias
tsconfig.json
中的 paths
preload.js
中的 _moduleAliases
參考 express-generator-typescript 官方文件
npm install -g express-generator-typescript
npx express-generator-typescript "專案名稱"
cd "專案名稱" && npm run dev
注意事項: 因作業系統差異,可能無法順利執行。建議先安裝 cross-env
:
cross-env 是什麼?
一個跨平台的 Node.js 工具,用於在 npm script 中設定環境變數(如NODE_ENV=production
)。
讓 Windows (CMD/PowerShell) 與 Unix-like 系統 (macOS、Linux、WSL) 都能使用同一行指令成功執行,無需為不同作業系統維護多份腳本。
安裝 cross-env:
npm install --save-dev cross-env
修改 package.json
:
{
"scripts": {
"build": "ts-node ./scripts/build.ts",
"clean-install": "rm -rf ./node_modules && rm -r package-lock.json && npm i",
"dev": "cross-env NODE_ENV=development ts-node ./src",
"dev:hot": "nodemon --exec \"npm run dev\" --watch ./src --ext .ts",
"lint": "eslint . --ext .ts",
"lint:fix": "eslint . --ext .ts --fix",
"start": "cross-env NODE_ENV=production node -r ./config.js ./dist",
"test": "cross-env NODE_ENV=test vitest",
"type-check": "tsc --noEmit"
}
}
執行以下指令應該就能順利運行:
npm run dev:hot
開啟瀏覽器訪問 http://localhost:3000/users
,可以看到專案預設的畫面:
初期目標是建立註冊登入系統,技術堆疊規劃如下:
根據 MVC 架構,整理專案資料夾結構:
express-gen-ts/
├── app.ts # 主應用程式進入點
├── config/
│ └── database.ts # TypeORM 資料庫配置
├── controllers/
│ ├── auth.ts # 認證控制器
│ └── user.ts # 用戶控制器
├── models/
│ ├── user.ts # 用戶模型 (TypeORM Entity)
│ └── index.ts
├── routes/
│ └── auth.ts # 認證路由
├── middlewares/ # 中介軟體
├── utils/ # 工具函數
├── types/ # TypeScript 類型定義
└── .env.example # 環境變數範例