generated at
Deno workspaces
はじめに
Denoにはワークスペース機能があります

使い方
プロジェクトのルートディレクトリにdeno.jsonを用意します
このdeno.json workspace.members にワークスペースのメンバーとして管理するパッケージのパスを指定します (Deno v2.0.5以降のバージョンではワイルドカード形式での指定も可能です: "workspace": ["./packages/*"] )
deno.json
{ "workspace": { "members": [ "./packages/backend", "./packages/frontend" ] } }
上記で宣言された ./packages/backend ./packages/frontend のぞれぞれのディレクトリにもdeno.jsonを配置します
packages/backend/deno.json
{ "name": "@my-sample-project/backend", "version": "0.0.1", "exports": { ".": "./src/index.ts" } }
上記のように各ワークスペースのメンバーのdeno.jsonには name , version , exports フィールドを宣言します

deno taskで各メンバーのタスクをまとめて実行したい場合、 --filter オプションを指定する必要があります (Deno v2.1)

ワークスペースを使うメリット
1. あるワークスペース内のメンバーから別のメンバーを参照できます
例えば、上記の場合、 ./packages/frontend からは ./packages/backend @my-sample-project/backend という名前で import できます (deno.json name で宣言された名前で参照できる)
2. ルートのdeno.jsonと各ワークスペースメンバーのdeno.jsonの両方でImport mapsを定義することができます
ルートのdeno.jsonで定義されたImport mapsの定義は、全ワークスペースメンバーからも共有されます
npmなどにおけるワークスペースと同様に、ルートのdeno.jsonでは各ワークスペースのメンバーで共有される依存関係を定義しておくこともできます
3. ルートディレクトリでdeno publishを実行すると、全てのワークスペースメンバーがまとめてJSRへ公開されます
4. npmパッケージをDenoのワークスペースのメンバーとしても扱うことができるようです
これについてはまだ試したことはないです..
5. v2.1.8以降のバージョンであれば、ワークスペースの各メンバーごとに compilerOptions を定義できます (fix(check): compiler options from workspace members #27785)

ツール

リンク

関連ページ