Python、JavaScript、TypeScript、または .NET で azd hooks を記述する

Azure Developer CLI (azd) フック システムは、Bash と PowerShell に加えて、 Python、 JavaScript、 TypeScript、 および .NET をサポートしています。 azd では、ファイル拡張子から言語が自動的に検出され、依存関係が管理され、追加の構成なしでスクリプトが実行されます。

フックを使用すると、プロビジョニング前、デプロイ後など、 azd ライフサイクルの重要なポイントでカスタム ロジックを実行できます。 使用可能なフック イベントや構成オプションなど、フックに関する一般的な情報については、「 コマンドとイベント フックを使用してワークフローをカスタマイズする」を参照してください。

前提条件

言語検出

azure.yamlのスクリプト ファイルにフックをポイントし、azdファイル拡張子から言語を推測します。 拡張機能があいまいまたは不足している場合は、 kind フィールドを使用して言語を明示的に指定します。

hooks:
  preprovision:
    run: ./hooks/setup.py
    kind: python    # explicit — overrides extension inference

Pythonのフック

Python フックを記述するには、 .py ファイルを作成し、 azure.yamlで参照します。 スクリプトまたは親ディレクトリと同じディレクトリに requirements.txt または pyproject.toml を配置します。 azd スクリプトの場所からディレクトリ ツリーをウォークアップして、最も近いプロジェクト ファイルを見つけ、仮想環境を作成し、依存関係をインストールして、スクリプトを実行します。

ディレクトリ構造の例

hooks/
├── setup.py
└── requirements.txt

構成例

hooks:
  preprovision:
    run: ./hooks/setup.py

Python 固有の構成

既定の仮想環境名をオーバーライドするには、 config ブロックを使用します。

hooks:
  preprovision:
    run: ./hooks/setup.py
    config:
      virtualEnvName: .venv   # override default naming

JavaScript と TypeScript のフック

JavaScript または TypeScript フックを記述するには、 .js または .ts ファイルを作成し、 azure.yamlで参照します。 スクリプトまたは親ディレクトリと同じディレクトリに package.json を配置します。 azd は npm install (または config ブロックで指定されたパッケージ マネージャー) を実行し、スクリプトを実行します。 TypeScript スクリプトは、コンパイル 手順やnpx tsx必要なく、tsconfig.json経由で実行されます。

ディレクトリ構造の例

hooks/
├── seed.ts
└── package.json

構成例

hooks:
  postdeploy:
    run: ./hooks/seed.ts

JavaScript と TypeScript の構成

優先パッケージ マネージャーを指定するには、 config ブロックを使用します。

hooks:
  postdeploy:
    run: ./hooks/seed.ts
    config:
      packageManager: pnpm    # npm | pnpm | yarn

.NET フック

.NET フックでは、次の 2 つのモードがサポートされています。

  • プロジェクト モード: スクリプトまたは親ディレクトリと同じディレクトリに .csproj、 .fsproj、または .vbproj が存在する場合、 azd は dotnet restore 実行され、自動的に dotnet build されます。
  • 単一ファイル モード: .NET 10 以降では、スタンドアロン .cs ファイルはプロジェクト ファイルなしで dotnet run script.cs 経由で直接実行されます。

ディレクトリ構造の例

hooks/
├── migrate.cs
└── migrate.csproj   # optional — omit for single-file mode on .NET 10+

構成例

hooks:
  postprovision:
    run: ./hooks/migrate.cs

.NET 固有の構成

config ブロックを使用して、ビルド構成とターゲット フレームワークを指定します。

hooks:
  postprovision:
    run: ./hooks/migrate.cs
    config:
      configuration: Release  # Debug | Release
      framework: net10.0      # target framework

作業ディレクトリをオーバーライドする

dir フィールドを使用して、フックの作業ディレクトリを設定します。 この構成は、プロジェクト ルートがスクリプトの場所と異なる場合に便利です。

hooks:
  preprovision:
    run: main.py
    dir: hooks/preprovision

言語と形式の組み合わせ

同じ azure.yaml ファイル内のフックごとに異なる言語を使用します。 プラットフォーム固有のオーバーライドと複数言語フックを組み合わせることもできます。

hooks:
  preprovision:
    run: ./hooks/setup.py

  postdeploy:
    run: ./hooks/seed.ts

  postprovision:
    run: ./hooks/migrate.cs

  predeploy:
    windows:
      run: ./hooks/build.ps1
    posix:
      run: ./hooks/build.sh

ヘルプを要求する

Azure Developer CLI のバグの報告、ヘルプの要求、または新機能の提案の方法については、トラブルシューティングとサポートページを参照してください。