Skip to content

コマンド一覧 ​

pnpm コマンドはすべてリポジトリのルートで実行します。

引数の前の -- について

Castor 独自のスクリプト(scaffold、verify、seed:rbac、seed:demo、openapi:*)では、引数の前の -- はあってもなくてもかまいません。pnpm db:generate の後ろには -- を書かないでください。 引数がそのまま drizzle-kit に渡されますが、drizzle-kit は -- を認識しないためです。

開発 ​

コマンド説明
pnpm installすべての依存関係をインストール
pnpm devバックエンド(5001)とフロントエンド(5173)を同時に起動
pnpm dev:apiバックエンドだけを起動(tsx watch によるホットリロード)
pnpm dev:webフロントエンドだけを起動(Vite)
pnpm --filter @castorjs/api worker独立した定期タスクのスケジューラープロセスを起動
pnpm buildすべてのアプリケーションをビルド:フロントエンド(Vite)、バックエンド(tsup)、MCP Server
pnpm --filter @castorjs/web previewフロントエンドのビルド成果物をプレビュー

品質チェック ​

コマンド説明
pnpm typecheckTypeScript の型チェック(apps/api、apps/mcp、テストを含む apps/web)
pnpm testすべてのテストを実行(バックエンドにはテスト用データベース castor_kit_test が必要)
pnpm --filter @castorjs/api testバックエンドのテストだけを実行
pnpm --filter @castorjs/web testフロントエンドのテストだけを実行
pnpm --filter @castorjs/web test:watchフロントエンドのテストをウォッチモードで実行
pnpm --filter @castorjs/mcp testMCP Server のテストだけを実行
pnpm lintバックエンドとフロントエンドの ESLint
pnpm --filter @castorjs/web lintフロントエンドの ESLint だけを実行
node apps/web/scripts/i18n-scan.mjs [ディレクトリ]未翻訳の文言をスキャン。ディレクトリは apps/web からの相対パスで、省略すると src 全体をスキャン

データベース ​

コマンド説明
pnpm db:generate --name <説明>テーブル定義からマイグレーション SQL を apps/api/drizzle/ に生成
pnpm db:migrateマイグレーションを適用
psql -d <データベース名> -c '\d <テーブル名>'テーブル構造が実際に DB に反映されたことを確認
pnpm setup-onceマイグレーション + RBAC の増分同期 + AI SQL 用読み取り専用アカウント(DEMO_MODE が有効でリセットの時期が来ていれば、デモデータのリセットも)。advisory lock 付きで、繰り返し実行可能。Docker イメージは起動のたびに実行します
pnpm --filter @castorjs/api init-ro-roleAI SQL 用の読み取り専用アカウント castor_kit_ro だけを作成(POSTGRES_RO_PASSWORD が必要)
pnpm demo:reset公開デモのデータを今すぐ復元。先にデモデータのテーブルとログをすべて空にするので、データを残したいデータベースでは実行しないでください

RBAC ​

コマンド説明
pnpm seed:rbac -- --incrementalメニューと権限の増分同期:code で upsert し、削除はしない
pnpm seed:rbac -- --incremental --reset-admin-passwordあわせて admin アカウントのパスワードを ADMIN_PASSWORD に設定し直す
docker compose --env-file .env.production exec app node dist/reset-admin-password.jsDocker でのデプロイで admin のパスワードを ADMIN_PASSWORD に設定し直す(管理者パスワードのリセット を参照)
pnpm seed:rbac全件再構築:ユーザー、ロール、メニューとその関連付けを空にしてから書き込み直す。空のデータベースの初期化専用
pnpm seed:demoデータ権限を試すためのサンプル部署・ロール(部門主管 / 一般社員)・ユーザーを登録。何度実行しても安全。本番環境では --force が必要。--password <パスワード> でサンプルユーザーのパスワードを指定(デフォルトは demo123456 または DEMO_USER_PASSWORD)、--reset-passwords で既存のサンプルユーザーにも適用

コード生成と検証ゲート ​

コマンド説明
pnpm scaffold -- --spec <ファイル>JSON の spec からモジュールを生成(形式は docs/spec.schema.json、例は docs/examples/specs/):バックエンドのモジュール、フロントエンドのページと API ファイル、API テスト、OpenAPI のエントリー、マイグレーション。spec に menu があれば、メニューとボタン権限も seed-rbac.ts に追加
pnpm scaffold -- --spec <ファイル> --validate-onlyspec をチェックし、生成される内容を表示するだけ。ファイルは書き込まず、問題があれば 1 で終了
pnpm scaffold -- --name <name> --domain <admin|component_center> --fields "<フィールド:型,...>"spec なしでモジュールを生成(生成物は同じだが、中国語の表示名、制約、メニューはなし)
pnpm scaffold -- ... --dry-run生成される内容を表示するだけで、ファイルは書き込まない
pnpm scaffold -- ... --skip-migrationコードは生成するが、マイグレーションは生成しない
pnpm scaffold -- ... --data-scope生成したモジュールをデータ権限で絞り込む(dept_id / created_by を追加)
pnpm verify -- --module <name>すべての検証ゲートのチェックを実行
pnpm verify -- --module <name> --skip-buildフロントエンドのビルドをスキップ
pnpm verify -- --module <name> --json構造化 JSON を出力
pnpm verify -- --module <name> --skip-frontend-tests --skip-api-testsフロントエンドとバックエンドのテストをスキップ
pnpm verify -- --module <name> --skip-dbデータベースに接続しない(migration_applied をスキップ)
pnpm verify -- --module <name> --run-rbac-syncRBAC の増分同期を追加で 1 回実行
pnpm verify -- --module <name> --strict-docsドキュメントのパスチェックが失敗したときにブロック
pnpm verify -- --module <name> --database-url <url>マイグレーションの状態チェックに使うデータベースを指定

--skip-* はデバッグ用です。これでチェックを飛ばした実行は、飛ばした項目を表示し「納品可能」とは報告しません(--json では complete: false)。納品前にはこれらを付けずにもう一度実行してください。

scaffold と verify はどちらも -h / --help で使い方を表示できます。引数の説明は AI 駆動開発 を参照してください。

OpenAPI ​

コマンド説明
pnpm openapi:generateドキュメントのないルート + メソッドに骨格を追加(docs/apifox-full.openapi.json に書き戻し)し、OpenAPI の規約をチェックして、フロントエンドの API 型 apps/web/src/shared/api/openapi.d.ts を再生成
pnpm openapi:generate -- --dry-runチェックのみで、書き戻さない(API 型も再生成しない)
pnpm openapi:generate -- --strict規約に合わない API と理由を一覧表示し、あれば 0 以外で終了
pnpm openapi:apifoxApifox にプッシュ(APIFOX_PROJECT_ID、APIFOX_ACCESS_TOKEN が必要)
pnpm --filter @castorjs/web api:typesOpenAPI ドキュメントから openapi.d.ts だけを再生成(--check を付けると、古い場合に 1 で終了)

MCP Server ​

コマンド説明
pnpm mcpMCP Server を起動(stdio)
pnpm --filter @castorjs/mcp buildapps/mcp/dist/ にビルド

フロントエンドのコンポーネント ​

コマンド説明
apps/web/scripts/shadcn-add.sh <コンポーネント>ローカルの registry 中継経由で npx shadcn@latest add を実行
apps/web/scripts/shadcn-add.sh --view <コンポーネント>registry の内容を表示するだけで、ファイルは書き込まない

Docker ​

リポジトリのルートで実行します。compose コマンドには --env-file .env.production を付ける必要があります。

コマンド説明
bash scripts/setup.sh対話式のウィザード:.env.production を生成し、ビルドして起動
docker compose --env-file .env.production up -d --buildイメージをビルドして起動(コードの更新後も同じコマンドを使う)
docker compose --env-file .env.production logs -f appアプリケーションのログを表示
docker compose --env-file .env.production psサービスの状態を表示
docker compose --env-file .env.production downサービスを停止し、データボリュームは保持

ドキュメントサイト ​

ドキュメントサイト website/ は独立した npm プロジェクトで、pnpm ワークスペースには含まれていません。

コマンド説明
npm --prefix website installドキュメントサイトの依存関係をインストール
npm --prefix website run devドキュメントサイトをローカルでプレビュー
npm --prefix website run buildドキュメントサイトをビルド(リンク切れがあると失敗)
npm --prefix website run screenshots起動中のアプリからランディングページと README のスクリーンショットを撮り直す(先に pnpm dev を実行。admin のパスワードを尋ねられます)
npm --prefix website run ogダッシュボードのスクリーンショットからソーシャルプレビュー画像(website/public/og.png と .github/assets/social-preview.png)を生成

main にマージされると、.github/workflows/docs.yml がサイトを GitHub Pages に公開します。

Released under the MIT License.