Deno v2.5 向けの機能の追加について
Deno v2.5 向けに直近でマージされた内容について紹介します (⚠️まだ正式にはリリースされていないため、今後、APIの使い方に変更が発生する可能性があります)
Deno.bundle()
APIが追加
deno bundle
コマンドの機能をプログラムから動的に利用するために、Deno.bundle()
というAPIが追加されています。
Deno.bundle()
を利用するためには--unstable-bundle
によって明示的に有効化が必要です:
const result = await Deno.bundle({
entrypoints: ["./mod.ts"],
platform: "deno",
});
console.assert(result.success);
const [outputFile] = result.outputFiles;
const bundledCode = outputFile.text();
console.assert(typeof bundledCode === "string");
outputPath
やoutputDir
オプションを指定することで、バンドル結果がファイルシステムへ書き込まれます (--allow-write
の指定は不要なようです):
const result = await Deno.bundle({
entrypoints: ["./mod.ts"],
platform: "browser",
minify: true,
sourcemap: "external",
outputDir: "dist",
});
console.assert(result.success);
まだマージはされていませんが、現在、プラグイン (plugins
オプション) のサポートに関する実装も進められているようです:
deno.json
でのパーミッションセットの定義
deno.json
でパーミッションセットの定義をサポートする機能がマージされています (#30330):
{
"permissions": {
"default": {
"net": true
},
"server": {
"net": true,
"read": ["data.txt"]
}
}
}
定義したパーミッションセットは--permission-set
で適用することが可能です:
# (1) `permissions.default`を適用します
$ deno --permission-set main.js
# (2) `--permission-set`は`-P`の短縮形式です
$ deno -P main.js
# (3) `permissions.server`を適用します
$ deno --permission-set=server main.js
また、deno bench
/deno compile
/deno test
の各コマンド向け専用のパーミッションセットを定義することも可能で、deno.json
の対応するセクション配下のpermissions
で定義できるようです (以前はdeno.json
のpermissions.{compile,bench,test}
を特別扱いする想定で実装されていました):
{
"test": {
"permissions": {
"read": ["data.txt"]
}
}
}
# `test.permissions`を適用します
$ deno test --permission-set main.js
Deno.test
へのbefore*
/after*
フックのサポート
先週に紹介したDeno.test
へのbefore*
/after*
フックをサポートするPRがマージされています (#30504)
例えば、Deno.test.beforeEach()
とDeno.test.afterEach()
を使うことで、該当のテストモジュール内における各テストケースの実行前後に特定の処理を実行することができます:
Deno.test.beforeEach(() => setup());
Deno.test.afterEach(() => teardown());
Deno.test("doSomethingAsync", async () => {
await doSomethingAsync();
// ...
});
Deno.ChildProcess.{stdout,stderr}
へのResponse
ライクな問い合わせメソッドの追加
先週に紹介したDeno.ChildProcess
にResponse
オブジェクトライクな問い合わせメソッドを追加するPRがマージされています (#30552):
const command = new Deno.Command(Deno.execPath(), {
args: ["json_reference"],
stdout: "piped",
}).spawn();
const json = await command.stdout.json();
deno_std
のリリース
deno_std
のリリースが実施されています (release-2025.09.04)
@std/net@1.0.6
@std/net@1.0.6がリリースされています。
@std/net/unstable-ip
- 新規APIの追加
matchSubnets()
/matchIPv4Subnet()
/matchIPv6Subnet()
が追加されています (#6786)
特定のアドレスがCIDR表記で指定されたサブネットにマッチするかどうかを検証できます。
@std/streams@1.0.12
@std/streams@1.0.12がリリースされています。
@std/streams/unstable-abort-stream
の非推奨化
AbortStream
が非推奨化されています (#6799)
ReadableStream#pipeThrough
のsignal
オプションによって代用可能であることが理由のようです。
@std/toml@1.0.10
@std/toml@1.0.10がリリースされています。
@std/toml/parse
のバグ修正
parse()
でネストされたテーブルの配列が適切に解析されるよう修正されています (#6794)
Fresh 2.0 Graduates to Beta, Adds Vite Support
Fresh 2.0 Graduates to Beta, Adds Vite Supportという記事がDenoの公式ブログで公開されています。
この記事ではFresh v2の betaバージョンとViteプラグイン (@fresh/plugin-vite
)が正式にアナウンスされています。