144 lines
3.2 KiB
Markdown
144 lines
3.2 KiB
Markdown
# Setup TypeScript
|
|
|
|
TypeScript プロジェクトの初期セットアップを支援してください。
|
|
以下の条件に従い、品質を担保するために必要なセットアップを設計し、ユーザに確認・合意しながら進めてください。
|
|
|
|
# 要件
|
|
|
|
- TypeScript プロジェクトにおいて、形式的に担保可能な品質管理のセットアップを行いたい。
|
|
- 下記のものは提案に含め、ユーザの希望があればそちらを優先する
|
|
|
|
## typecheck
|
|
|
|
- 型チェックを実行するコマンドを用意
|
|
- `bun run typecheck`
|
|
- 最も厳しい tsconfig の定義
|
|
|
|
```tsconfig.json
|
|
{
|
|
"compilerOptions": {
|
|
"strict": true,
|
|
"allowUnusedLabels": false,
|
|
"allowUnreachableCode": false,
|
|
"exactOptionalPropertyTypes": true,
|
|
"noFallthroughCasesInSwitch": true,
|
|
"noImplicitOverride": true,
|
|
"noImplicitReturns": true,
|
|
"noPropertyAccessFromIndexSignature": true,
|
|
"noUncheckedIndexedAccess": true,
|
|
"noUnusedLocals": true,
|
|
"noUnusedParameters": true,
|
|
|
|
"isolatedModules": true,
|
|
|
|
"checkJs": true,
|
|
|
|
"esModuleInterop": true,
|
|
"skipLibCheck": true
|
|
},
|
|
}
|
|
```
|
|
|
|
## test
|
|
|
|
- vitest などのテストフレームワークを導入する
|
|
- テストを実行するコマンドを用意
|
|
|
|
```package.json
|
|
"scripts": {
|
|
"test": "vitest"
|
|
}
|
|
```
|
|
|
|
## lint
|
|
|
|
- 厳しめの ESLint 設定を定義
|
|
- チェックと修正を同時にできるコマンドを用意
|
|
|
|
```package.json
|
|
"scripts": {
|
|
"lint": "eslint . --fix"
|
|
}
|
|
```
|
|
|
|
## format
|
|
|
|
- prettier のルールを定義
|
|
- チェックと修正を同時にできるコマンドを用意
|
|
|
|
```package.json
|
|
"scripts": {
|
|
"format": "prettier --write ."
|
|
}
|
|
```
|
|
|
|
## MCP
|
|
|
|
- 必要であれば MCP を導入する
|
|
- .mcp.json を用意する
|
|
|
|
## Claude Code Hooks
|
|
|
|
```.claude/settings.json
|
|
{
|
|
"hooks": {
|
|
"PostToolUse": [
|
|
{
|
|
"matcher": "Write|Edit|MultiEdit",
|
|
"hooks": [
|
|
{
|
|
"type": "command",
|
|
"command": "bun run typecheck"
|
|
}
|
|
]
|
|
}
|
|
]
|
|
}
|
|
}
|
|
```
|
|
|
|
## ci
|
|
|
|
- CI 設定を提案する
|
|
- 基本的に github actions を使う
|
|
|
|
# 進め方
|
|
|
|
1. 上記の要件を加味して、構成案をユーザに提案し、合意を取ること。
|
|
|
|
2. 合意が取れたら、セットアップ用のコマンド一覧を提示する。
|
|
bun を使っている場合の例:
|
|
|
|
- `bun run typecheck`
|
|
- `bun run lint`
|
|
- `bun run format`
|
|
- `bun run test`
|
|
|
|
3. 上記のコマンドを実行できるように実装を進める
|
|
|
|
- 必要なパッケージをインストール
|
|
- 設定ファイルを作成
|
|
- tsconfig.json
|
|
- .eslintrc.js
|
|
- vitest.config.ts
|
|
- .prettierrc
|
|
- ci.yml
|
|
- etc.
|
|
|
|
- package.json の scripts にコマンドを追加
|
|
下記は例である。使用しているツールによってコマンドが異なる。
|
|
|
|
```package.json
|
|
"scripts": {
|
|
"typecheck": "tsc --noEmit",
|
|
"lint": "eslint . --ext .ts,.tsx --fix",
|
|
"format": "prettier --write .",
|
|
"test": "vitest",
|
|
"check": "bun run typecheck && bun run lint && bun run format && bun run test"
|
|
}
|
|
```
|
|
|
|
- 実行できることを確認する
|
|
|
|
4. もしユーザーが一部の設定をカスタマイズしたい場合は、その意図を確認し、最適な代替案を提案すること。
|