dfx build(ビルド)

Internet Computer にデプロイできるようにプログラムを WebAssembly モジュールにコンパイルするには dfx build コマンドを使用します。 このコマンドはプロジェクトの dfx.json 設定ファイルや特定の Canister に定義されているすべてのプログラムをコンパイルするために使用することができます。

このコマンドはプロジェクトのディレクトリ構造内からのみ実行できることに注意してください。 例えばプロジェクト名が hello_world の場合、現在の作業ディレクトリは hello_world のトップレベルのプロジェクトディレクトリかそのサブディレクトリのいずれかでなければなりません。

dfx build コマンドは設定ファイル dfx.jsoncanisters セクションで設定された情報を元に、コンパイルするソースコードを探します。

基本的な利用法

dfx build [flag] [option] [--all | canister_name]

フラグ

dfx build コマンドでは、以下のオプションフラグを使用することができます。

Flag(フラグ) 説明

--check

Internet Computer プラットフォームに接続せずにプログラムのコンパイルをテストします。一時的なハードコードされたローカル定義の Canister id を使用して Canister を構築します。

-h, --help

利用情報を表示します。

-V, --version

バージョン情報を表示します。

オプション

dfx build コマンドには以下のオプションを指定することができます。

Option(オプション) 説明

--network <network>

接続したいネットワークのエイリアスまたは URL を指定します。このオプションを使用すると dfx.json 設定ファイルで指定されたネットワークを上書きします。

引数

dfx build コマンドには以下の引数を指定することができます。

Argument(引数) 説明

--all

プロジェクトの dfx.json ファイルで設定されたすべての Canister をビルドします。

canister_name

ビルドしたい Canister の名前を指定します。 --all オプションをもし使用しない場合、引数なしの dfx build を使用するか、引数に Canister 名を指定します( Canister 名はプロジェクトの dfx.json 設定ファイルの canisters セクションで設定した名前と少なくともひとつは一致しなければなりません)。

dfx build コマンドを使うと dfx.json 設定ファイルの canisters キーで指定したプログラムからひとつまたは複数の WebAssembly モジュールをビルドすることができます。 例えば、dfx.json 設定ファイルに hello_world Canister と hello_world_assets Canister がひとつずつ定義されている場合、 dfx build を実行すると二つの WebAssembly モジュールがコンパイルされます:

{
  "canisters": {
    "hello_world": {
      "main": "src/hello_world/main.mo",
      "type": "motoko"
    },
    "hello_world_assets": {
      "dependencies": [
        "hello_world"
      ],
      "frontend": {
        "entrypoint": "src/hello_world_assets/public/index.js"
      },
      "source": [
        "src/hello_world_assets/assets",
        "dist/hello_world_assets/"
      ],
      "type": "assets"
    }
  },
  "defaults": {
    "build": {
      "packtool": ""
    }
  },

  "dfx": "0.9.3",
  "networks": {
    "local": {
      "bind": "127.0.0.1:8000",
      "type": "ephemeral"
    },
    "ic": {
      "providers": [
        "https://gw.dfinity.network"
      ],
      "type": "persistent"
    }
  },
  "version": 1
}

ファイルシステム上のプログラムのファイル名とパスは、dfx.json 設定ファイルで指定された情報と一致する必要があることに注意してください。

この例では、 hello_world Canister にメインプログラムのコードが hello_world_assets Canister にフロントエンドのコードとアセットが格納されています。 もし、dfx.json ファイルで定義された hello_world_assets Canister はそのままにして、バックエンドのプログラムだけをビルドしたい場合は、以下のコマンドを実行すれば可能です:

dfx build hello_world

特定の Canister をビルドすることは dfx.json ファイルに複数の Canister が定義されていて、Canister に対する操作を個別にテストおよびデバッグしたい場合に便利です。

Internet Computer プラットフォームやローカルの Canister 実行環境に接続せずに Canister がコンパイルされるかどうかをテストするには、以下のコマンドを実行します:

dfx build --check