プロジェクトにZukeをセットアップする
ZukeはビルドをDeno上で実行されるTypeScriptクラスとして定義します。各ターゲットはクラスのフィールドです。ターゲット間の参照は(文字列ではなく)this.<フィールド>で行います。パッケージはnpmではなくJSR(jsr:@zuke/...)からインポートします。
クイックパス: zuke setup
@zuke/cliツールがすべてをスキャフォールディングします。一度インストールしたら、ターゲットプロジェクトでsetupを実行します:
deno install -A -g -n zuke jsr:@zuke/cli # 一度だけ、グローバルに
zuke setup # プロジェクトルートで
./zuke # ビルドを実行
グローバルインストールしない場合も、同じウィザードを直接実行できます:
deno run -A jsr:@zuke/cli setup
setupのフラグ:--dir <path>、--name <ClassName>、--force(既存ファイルを上書き)、--yes(非対話モード)、--launcher-name <name>(zuke/ディレクトリが既に存在する場合にランチャーを別の名前で書き出す — ディレクトリの衝突があった場合、静かにスキップする代わりに実行可能なエラーで失敗するようになりました)。
Nodeリポジトリの@types/nodeノイズなしで@zuke/*パッケージのAPIを確認するには、zuke doc <package>を実行します(例:zuke doc core) — 隔離されたディレクトリでdeno docを実行します。
既存プロジェクトの移行: zuke import
プロジェクトに既にpackage.jsonのscriptsやMakefileがある場合は、setupよりもzuke importを優先します — それらを読み取り、タスクごとにターゲットを持つzuke.tsを生成します。白紙のビルドではなく、動作する開始点を提供します:
zuke import # 自動検出: package.json、次にMakefile
zuke import --from makefile # またはソースを指定(package.json | makefile)
各スクリプト/ターゲットはtarget()になります。コマンドはCmdTasks.exec(...)にマッピングされます — これはプレースホルダーであり、最終的なものではありません。受け入れる前に、パッケージカタログ(llms.txtの## Packagesリスト、またはzuke-write-buildのチートシートの表)でそのコマンドに一致する@zuke/<tool>ラッパーを確認し、プレースホルダーをそれに置き換えてください — 型付けされたラッパーがあるツールに対してCmdTasks.execをそのまま残すのはバグであり、ショートカットではありません。&&チェーンは順次ステップに、run/前提条件の委譲は.dependsOn(...)に変換され、パイプ、リダイレクト、環境変数代入などシェル固有すぎて変換できないものは// TODOの後ろに保持され、ファイルがコンパイル可能な状態を保ちます。setupと同様にランチャーとdeno.jsonをスキャフォールドし、同じ--dir、--name、--force、--yesフラグを受け付けます。その後、zuke-write-buildスキルを使用して、残っている生成されたCmdTasks.exec呼び出しを型付けされた*Tasksラッパーに置き換えてください。
zuke setupが書き出すもの
zuke.ts— サンプルターゲットとdefaultを持つスタータービルドクラス。./zuke+./zuke.ps1— プロジェクトを見つけてPATH上のDenoでzuke.tsを実行するランチャー。Denoがない場合は、公式のインストールドキュメントを指し示して終了します。未検証のコードをダウンロードして実行するインストールスクリプトをシェルにパイプすることはありません。deno.lockが存在する場合は--frozenを渡すため、初回実行でロックファイルが書き込まれ、以降の実行で検証されます。deno.json—zukeタスクを追加するためにマージされ、fmt/lint/testがなければ追加されます。マージはオール・オア・ナッシングです。zukeタスクが既に宣言されている場合はファイルは完全にそのままにされ、解析できないファイルは通知とともにスキップされます。zuke.json—{ "name": "..." }。リポジトリルートを示します。.gitignore—.zuke/を無視するように作成または追記されます(キャッシュと永続的な実行状態はそこにあります)。既に対象がカバーされている場合は変更されません。
ビルドの実行
./zuke # デフォルトターゲットを実行 (Windows: .\zuke.ps1)
./zuke <target> # 特定のターゲットを実行
./zuke --list # すべてのターゲットを一覧表示
./zuke --list --json # ビルドサーフェス全体(コマンド、フラグ、ターゲット)をJSONで表示
./zuke <target> --dry-run # 計画を表示して実行しない
CLIは自己記述的です。./zuke --helpは使用法の文法とビルドの実際のターゲットおよびパラメータを表示するため、エージェントは推測ではなく実際のコマンドサーフェスを発見できます。AIクライアントが型付けされた呼び出しでビルドを操作できるようにするには、zuke mcpでModel Context Protocolサーバーを起動します(claude mcp add zuke -- deno run -A zuke.ts mcpで登録。--allow-runを追加すると、エージェントがターゲットを検査するだけでなく実行できるようになります)。
Denoが既にインストールされている場合は、deno task zuke <target>やdeno run -A zuke.ts <target>も使用できます。-Aフラグは権限を付与します。ターゲットは通常プロセスを実行したりファイルに触れたりするためです。これらはランチャーと完全に同等ではありません。スキャフォールドされたzukeタスクは意図的に--frozenを省略しているため、古くなったロックファイルを修復できる可能性があります。./zukeはそのようなロックファイルで失敗します。
手動セットアップ(CLIなし)
プロジェクトルートにzuke.tsを作成し、Buildを拡張し、target()でターゲットを宣言し、最後にawait run(MyBuild)を呼び出します:
import { Build, run, target } from "jsr:@zuke/core";
import { DenoTasks } from "jsr:@zuke/deno";
class CI extends Build {
lint = target().executes(() => DenoTasks.lint());
test = target().dependsOn(this.lint)
.executes(() => DenoTasks.test((s) => s.allowAll()));
default = target().dependsOn(this.test).executes(() => {});
}
await run(CI);
deno run -A zuke.ts testで実行します。(./zukeランチャー体験が必要な場合は、zuke setupを推奨します。ランチャースクリプトを自動的に配置します。)
正確なAPIを見つける — 決して推測しない
すべての外部ツールには型付けされた*Tasksラッパーがあります。Deno.Commandや手作りのシェルにフォールバックしないでください。 まず、ラッパーが存在することを確認します。llms.txtの## Packagesカタログまたはzuke-write-buildのチートシートの表がその問いに答える唯一の方法です。パッケージごとのdeno docは対象となる名前が必要なため、ラッパーが存在するかどうかを明らかにすることはできません。パッケージ名がわかったら、正確なシグネチャを取得します:
- コマンドライン上の単一パッケージ:
deno doc jsr:@zuke/<package>。コンシューマリポジトリではこちらを推奨します。プロジェクトが実際にインストールしているバージョンを解決するため、そのバージョンにないAPIを説明することはありません。 - すべてのパッケージの型付けされたサーフェス全体は**
llms-full.txt**にあります(llms.txtによってインデックス化されています) — Zukeリポジトリ自体のルート、またはコンシューマリポジトリからは https://raw.githubusercontent.com/zuke-build/zuke/master/llms-full.txt(インデックス:https://raw.githubusercontent.com/zuke-build/zuke/master/llms.txt)で利用できます。どちらもmasterを追跡するため、マージされたがまだリリースされていないシンボルを文書化している可能性があります。存在するものを見つけるために使用し、その後deno docでシグネチャを確認してください。
プロジェクトがスキャフォールドされたら、zuke-write-buildスキルを使用してターゲットを追加および編集します。