Deno v1.23.3
Deno v1.23.3がリリースされました。
このリリースでは、deno test
などの引数にfile:
形式でディレクトリを指定すると、エラーが発生する問題が修正されています。
# v1.23.2まではエラー
$ deno test file:///home/foo/sample/tests
また、Denoの内部で使用されているTypeScriptがv4.7.4へアップデートされています。
その他には、いくつかのパフォーマンスチューニングなどが実施されています。
https://github.com/denoland/deno/releases/tag/v1.23.3
deno_std v0.147.0
deno_std v0.147.0がリリースされました。
dotenv
dotenv
モジュールで、変数の展開がサポートされました。
例えば、以下のような内容で.env
ファイルが定義されていたとします。
HOST=localhost
URL=http://${HOST}:${PORT:-3000}
このファイルをdotenv
モジュールで読み込むと、以下のように評価されます。
{ HOST: "localhost", URL: "http://localhost:3000" }
その他には、stringify()
関数が追加されています。
import { stringify } from "https://deno.land/std@0.147.0/dotenv/mod.ts";
stringify({
PORT: "3000",
HOST: "localhost",
LOG_LEVEL: "debug"
});
// PORT=3000
// HOST=localhost
// LOG_LEVEL=debug
http
oak_commonsのHTTPエラーとコンテントネゴシエーション用のモジュールがdeno_std/http
に取り込まれました。
http/negotiation
import { accepts } from "https://deno.land/std@0.147.0/http/negotiation.ts";
const req = new Request("https://github.com", {
headers: {
accept: "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"
}
});
accepts(req); // => [ "text/html", "application/xhtml+xml", "application/xml", "*/*" ]
http/http_errors
import { errors, isHttpError } from "https://deno.land/std@0.147.0/http/http_errors.ts";
const error = new errors.NotFound();
isHttpError(error); // => true
error.status; // => 404
testing/snapshot
createAssertSnapshot
が実装されました。
assertSnapshot
に毎回同じオプションを指定しているようなケースで使用すると便利そうです。
import { createAssertSnapshot } from "https://deno.land/std@0.147.0/testing/snapshot.ts";
const assertSnapshot = createAssertSnapshot({
dir: "testdata",
});
Deno.test(async function testDoSomething(t) {
await assertSnapshot(t, doSomething());
});
https://github.com/denoland/deno_std/releases/tag/0.147.0
use emit from swc instead of tsc
Deno本体で、今までtsc
を使用してトランスパイルが行われていた箇所をswcで置き換えるためのPRが作成されています。
現在、Denoは以下のような基準でtsc
とswc
を使い分けています。
- 型チェックが必要なときは、
tsc
を使用して型チェックとトランスパイルを行う - 型チェックが必要ないときは、
swc
を使用してトランスパイルを行う
上記のPRでは、tsc
は型チェックのみで使用し、トランスパイルはswc
のみで行うように実装が修正されています。
また、型チェックの実行結果をSQLiteにキャッシュする機能も追加されているようです。
このPRはまだドラフトの状態であり、正式にDeno本体に取り込まれるかどうかはまだ不明な段階です。
https://github.com/denoland/deno/pull/15118
HonoがDenoをサポート
Cloudflare WorkersやCompute@Edgeなど向けのWebフレームワークであるHonoでDenoがサポートされました。
deno.land/xからimport
して使用することができます。
- https://github.com/honojs/hono/releases/tag/v1.6.0
- CloudflareでもFastlyでもVercelでもDenoでもBunでもService Workerでも動く
ax
zxに影響を受けたスクリプティング用モジュール
deno task
コマンドの内部でも使用されているdeno_task_shellを使うことで、移植性の向上が図られているのが特徴のようです。