Core · リファレンス

ディレクトリとファイルの規約

概要は プロジェクトの構成 を参照してください。このリファレンスでは、パスと役割、保守のルールを対応付けます。ファイル名は規約を示す例です。任意のディレクトリは、テンプレートと機能に合わせて調整してください。

アプリのディレクトリ

ディレクトリ構成
my-app/
├── .agents/
│   ├── rules/                    # プロジェクトが所有するルール
│   └── skills/                   # 依存関係から同期したスキル(生成)
├── cli/
│   ├── commands/                 # アプリのコマンド(任意)
│   └── plugins.ts                # CLI のプラグインの登録
├── client/
│   ├── pages/                    # 業務のページ
│   ├── layouts/                  # ページのレイアウト
│   ├── components/               # UI コンポーネント
│   ├── hooks/                    # 共有の操作と状態のロジック
│   ├── locales/                  # 翻訳
│   ├── theme/                    # テーマとスタイル
│   ├── routes.ts                 # ルート、メニュー、ナビゲーション
│   ├── plugins.ts                # Client のプラグインの登録
│   └── runtime.ts                # Client の組み立て
├── database/
│   └── main/
│       ├── migrations/           # スキーマとメタデータの変更
│       ├── seeds/                # 初期データ
│       ├── metadata/             # 外部の接続のメタデータ(任意)
│       └── collections/          # 解決済みのモデルのスナップショット(生成)
├── packages/                     # workspace のパッケージ(任意)
├── public/                       # 静的アセット
├── server/
│   ├── routes/                   # HTTP のルートと index.ts での登録
│   ├── services/                 # 業務の実装(任意)
│   ├── providers/                # サービスの登録とライフサイクル
│   ├── config/                   # 既定値、検証、環境変数の対応付け
│   ├── plugins.ts                # Server のプラグインの登録
│   └── runtime.ts                # Server の組み立て
├── tests/                        # テスト、フィクスチャー、ヘルパー
├── storage/                      # 実行時のデータ(生成)
├── dist/                         # ビルドの出力(生成)
├── node_modules/                 # インストール済みの依存関係(生成)
├── AGENTS.md                     # プロジェクトのガイダンスの入口
├── config.example.yml            # 設定の例
├── config.yml                    # ローカル / デプロイの設定
├── components.json               # shadcn の設定
├── package.json                  # スクリプト、依存関係、アプリのメタデータ
├── pnpm-lock.yaml                # 解決済みの依存関係のバージョン
└── pnpm-workspace.yaml           # workspace のパッケージのディレクトリ

サービスのディレクトリ、コマンド、ローカルのパッケージ、外部のデータベースのメタデータは、必要なときだけ作成します。空のディレクトリは不要です。テンプレートのレイアウト、テーマ、実行時の入口はアプリが所有するソースです。アップグレードの際も、業務のためのカスタマイズを保ってください。

実装と登録

内容実装組み込み
ページclient/pages/client/routes.ts
コンポーネントと Hooksclient/components/、client/hooks/ページ、レイアウト、コンポーネントからインポートする
HTTP の APIserver/routes/server/routes/index.ts と実行時のルートの宣言
業務のサービス任意のクライアント / サーバーの services/ ディレクトリそれぞれの側の ServiceProvider と provider のインデックス
実行時の設定server/config/<section>.tsserver/config/index.ts
アプリのコマンドcli/commands/app 名前空間のもとで、ファイルのパスによって読み込まれる
プラグインインストールしたパッケージか packages/app-plugin-<name>/client/plugins.ts、server/plugins.ts、cli/plugins.ts のうち、実際に提供される入口

runtime.ts がランタイムを組み立てます。テンプレートがすでに集約の入口をつないでいる場合、業務のコードを追加するには通常その入口を更新するだけで済みます。依存関係のインストールとプラグインの登録は別の作業です。プラグインを管理する を参照してください。

データベースのリソース

アプリは、リソースを接続ごとに database/<connection>/ に整理します。すべてのリソースが main に属するわけではありません。

  • migrations/ は実行可能な変更の履歴です。実行済みのマイグレーションは保ち、その後のスキーマの変更には新しいマイグレーションを追加します。
  • seeds/ は初期データを管理します。必須のデータとサンプルを区別してください。
  • metadata/ には、外部のデータベースのタイトル、説明、リレーションをソース管理で保持できます。
  • collections/ は生成される確認用のスナップショットで、マイグレーションの入力ではありません。編集せず、pnpm nocobase collections generate で再生成してください。

プラグインの database/migrations/ と database/seeds/ は、その宣言を通じて提供されるリソースです。パスと接続の所有については データベースのリソースとマイグレーション を参照してください。

ローカルプラグイン、共有パッケージ、UI アセット

ディレクトリ構成
packages/
├── app-plugin-orders/            # 実行時のプラグイン
│   ├── client/
│   │   ├── components/
│   │   ├── react-providers/      # React の Context の組み込み
│   │   ├── providers/            # Client の ServiceProvider
│   │   ├── plugin.ts
│   │   └── index.ts              # 公開の Client の入口
│   ├── server/
│   │   ├── services/
│   │   ├── providers/            # Server の ServiceProvider
│   │   ├── tokens.ts             # 公開のサービスの取り決め
│   │   ├── plugin.ts
│   │   └── index.ts              # 公開の Server の入口
│   ├── cli/
│   ├── database/
│   ├── skills/
│   ├── tests/
│   ├── AGENTS.md
│   └── package.json
├── orders-ui/                    # 独立した UI Registry のパッケージ
│   ├── registry/
│   ├── registry.json
│   ├── public/r/                 # ビルドしたアイテムの JSON(生成)
│   └── package.json
└── shared-domain/                # 内部の共有コード(任意)
    └── package.json

プラグインは、必要に応じて Client、Server、CLI、データベース、スキルを提供します。すべてのディレクトリが必須なわけではありません。プラグインの構成 を参照してください。

アプリとプラグインは、shadcn のプリミティブを使い、モジュール化された画面には NocoBase UI Library を参照しながら、フロントエンドのコンポーネントを自由に整理できます。エージェント向けに編集可能なソースを配布する場合は、アセットを独立した Registry のパッケージで管理します。一緒に配布するファイル間の相対インポートは、インストール先でも有効である必要があります。プラグインの機能には、隣のプラグインの非公開の実装への相対インポートではなく、公開のパッケージの入口か、利用側が渡すデータを使ってください。

エージェント向けガイダンスの管理

パス対象と保守
アプリの AGENTS.md と .agents/rules/現在のアプリを保守するエージェント向け。アプリが保守する
プラグインの AGENTS.mdプラグインのソースを保守するエージェント向け。プラグインが保守する
プラグインの skills/<name>/SKILL.mdアプリでそのプラグインを使うエージェント向け。プラグインと一緒に配布される
アプリの .agents/skills/依存関係から同期したコピー。元のパッケージを更新してから、もう一度同期する

pnpm nocobase skills sync は、依存関係が提供するガイダンスを更新します。プラグインのスキル を参照してください。

生成されるファイルと設定

  • dist/:再現可能なアプリのビルドの出力です。直接保守せず、そのソースを修正してください。
  • node_modules/:インストールされた依存関係です。パッケージマネージャーとロックファイルで更新します。
  • storage/:データベース、アップロードされたファイル、そのほかの業務データを含むことがあります。生成されるからといって、捨ててよいわけではありません。
  • config.example.yml:実際の認証情報を含まない、コミットする設定の例です。
  • config.yml:環境ごとの設定です。実際のキーやパスワードはソース管理に入れないでください。
  • pnpm-lock.yaml:インストールを再現するため、ロックファイルはコミットします。

このリファレンスは、Core 015404ecd0db のテンプレートとプラグインの宣言、および検証した beta.83 の既定のアプリに基づいています。設定リファレンス と Core のパッケージ一覧 を参照してください。

NocoBase ドキュメントアシスタント

NocoBase について何を知りたいですか?

質問は個別に回答され、過去の質問や回答は参照されません。必要な背景をすべて含めてください。