logologo
スタート
マニュアル
開発
プラグイン
API
English
简体中文
日本語
한국어
Deutsch
Français
Español
Português
Русский
Italiano
Türkçe
Українська
Tiếng Việt
Bahasa Indonesia
ไทย
Polski
Nederlands
Čeština
العربية
עברית
हिन्दी
Svenska
スタート
マニュアル
開発
プラグイン
API
logologo

クイックスタート

プラグイン開発概要
最初のプラグインを作成
プロジェクトディレクトリ構造

サーバーサイド開発

概要
プラグイン
コレクション
データベース操作
データソース管理
リソース管理
ACL権限制御
ミドルウェア
キャッシュ
イベント
リクエストコンテキスト
マイグレーション
ロガー
I18n 国際化
コマンド
定時タスク管理
テスト

クライアントサイド開発

概要
プラグイン
コンテキスト
ルーター
ACL権限制御
データソース管理
リソース
リクエスト
スタイルとテーマ
ロガー
I18n 国際化
テスト

その他

プラグインアップグレードガイド
言語一覧
依存関係の管理
ビルド
Previous Page言語一覧
Next Pageビルド
TIP

このドキュメントはAIによって翻訳されました。不正確な情報については、英語版をご参照ください

#依存関係の管理

NocoBase のプラグイン開発では、依存関係はプラグイン固有の依存関係とグローバルな依存関係の2種類に分けられます。

  • グローバルな依存関係: @nocobase/server と @nocobase/client によって提供されるため、プラグインで個別にバンドルする必要はありません。
  • プラグイン固有の依存関係: プラグイン独自の依存関係(サーバーサイドの依存関係を含む)は、プラグインの成果物にバンドルされます。

#開発原則

プラグイン固有の依存関係はプラグインの成果物(サーバーの依存関係は dist/node_modules)にバンドルされるため、プラグイン開発時には、すべての依存関係を dependencies ではなく devDependencies に宣言することをおすすめします。これにより、開発環境と本番環境での差異を防ぐことができます。

プラグインが以下の依存関係をインストールする必要がある場合は、バージョン番号がグローバルな依存関係の @nocobase/server および @nocobase/client と一致していることを確認してください。一致しない場合、ランタイムで競合が発生する可能性があります。

#グローバルな依存関係

以下の依存関係はNocoBaseによって提供されるため、プラグインでバンドルする必要はありません。もし必要であれば、フレームワークのバージョンと一致させる必要があります。

// NocoBase コア
'@nocobase/acl',
'@nocobase/actions',
'@nocobase/auth',
'@nocobase/cache',
'@nocobase/client',
'@nocobase/database',
'@nocobase/evaluators',
'@nocobase/logger',
'@nocobase/resourcer',
'@nocobase/sdk',
'@nocobase/server',
'@nocobase/test',
'@nocobase/utils',

// @nocobase/auth
'jsonwebtoken',

// @nocobase/cache
'cache-manager',
'cache-manager-fs-hash',

// @nocobase/database
'sequelize',
'umzug',
'async-mutex',

// @nocobase/evaluators
'@formulajs/formulajs',
'mathjs',

// @nocobase/logger
'winston',
'winston-daily-rotate-file',

// Koa エコシステム
'koa',
'@koa/cors',
'@koa/router',
'multer',
'@koa/multer',
'koa-bodyparser',
'koa-static',
'koa-send',

// React エコシステム
'react',
'react-dom',
'react/jsx-runtime',

// React Router
'react-router',
'react-router-dom',

// Ant Design
'antd',
'antd-style',
'@ant-design/icons',
'@ant-design/cssinjs',

// i18n
'i18next',
'react-i18next',

// dnd-kit
'@dnd-kit/accessibility',
'@dnd-kit/core',
'@dnd-kit/modifiers',
'@dnd-kit/sortable',
'@dnd-kit/utilities',

// Formily
'@formily/antd-v5',
'@formily/core',
'@formily/react',
'@formily/json-schema',
'@formily/path',
'@formily/validator',
'@formily/shared',
'@formily/reactive',
'@formily/reactive-react',

// 共通ユーティリティ
'dayjs',
'mysql2',
'pg',
'pg-hstore',
'supertest',
'axios',
'@emotion/css',
'ahooks',
'lodash',

#開発の推奨事項

  1. 依存関係の一貫性を保つ
    グローバルな依存関係に既に存在するパッケージを使用する必要がある場合は、異なるバージョンをインストールせず、グローバルな依存関係を直接使用してください。

  2. バンドルサイズを最小限に抑える
    一般的なUIライブラリ(antdなど)、ユーティリティライブラリ(lodashなど)、データベースドライバー(pg、mysql2など)については、グローバルに提供されているバージョンに依存し、重複したバンドルを避けるべきです。

  3. デバッグ環境と本番環境の一貫性
    devDependencies を使用することで、開発環境と最終的な成果物の一貫性を保ち、dependencies や peerDependencies の不適切な設定による環境の差異を防ぐことができます。