dfx generate
サポートされているプログラミング言語用の Canister 型宣言を生成するには、 dfx generate コマンドを使用します。 dfx generate は、現在、4つの言語( Motoko、Candid、JavaScript、TypeScript )をサポートしています。
このコマンドを使うと、プロジェクトの dfx.json 設定ファイルで定義されているすべての Canister または特定の Canister の型宣言を生成することができます。
このコマンドはプロジェクトのディレクトリ構造内からのみ実行出来ることに注意してください。 例えば、プロジェクト名が hello_world の場合、現在の作業ディレクトリは hello_world のトップレベルのプロジェクトディレクトリかそのサブディレクトリのいずれかである必要があります。
dfx generate コマンドは、dfx.json 設定ファイル内、 Canister の declarations セクション下の設定を探しにいきます。
基本的な利用法
dfx generate [canister_name]
フラグ
dfx generate コマンドでは、以下のオプションフラグを使用することができます。
| フラグ | 説明 |
|---|---|
-h, --help | 利用情報を表示します。 |
-V, --version | バージョン情報を表示します。 |
引数
dfx generate コマンドには以下の引数を指定することができます。
| 引数 | 説明 |
|---|---|
canister_name | 型宣言を生成するための Canister の名前を指定します。この Canister 名はプロジェクトの dfx.json 設定ファイルの canisters セクションで設定した名前と少なくとも1つは一致している必要があります。この引数を指定しない場合、dfx generate は dfx.json で宣言されたすべての Canister に対して型宣言を生成します。 |
設定
dfx generate の動作は dfx.json 設定ファイルによって制御されます。 dfx.json → canisters → <canister_name> の下に、 declarations セクションを追加することができます。 このセクションでは、以下のフィールドを指定することができます。
| フィールド | 説明 |
|---|---|
output | Canister の宣言を配置するディレクトリで、デフォルトは src/declarations/<canister_name> です。 |
bindings | 型宣言を生成するための言語のリストで、オプションは "js", "ts", "did", "mo " です。デフォルトは ["js", "ts", "did"] です。 |
env_override | src/dfx/assets/language_bindings/canister.js テンプレート内の process.env.{canister_name_uppercase}_CANISTER_ID を置き換えるための文字列です。 |
dfx generate からの出力は以下の通りです。
| 言語 | ファイル |
|---|---|
JavaScript(js) | index.js と <canister_name>.did.js |
TypeScript(ts) | <canister_name>.did.ts |
Candid(did) | <canister_name>.did |
Motoko(mo) | <canister_name>.mo |
例
dfx generate の出力例は こちら です。
ファイルシステム上のプログラムのファイル名とパスは設定ファイル dfx.json で指定された情報と一致している必要があることに注意してください。
この例では、hello_world Canister そのものは Motoko で書かれています。declarations セクションでは、4つの言語の型宣言が生成、保存される src/declarations/ が指定されています。
dfx generate hello_world
dfx.json には Canister が一つしかないので、引数なしで dfx generate を呼び出すと、上記のコマンドと同じ効果が得られます。 もし、dfx.json に複数の Canister が定義されていた場合、定義されているすべての Canister の型宣言を生成することになります。
dfx generate