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が作成されています。

refactor: use emit from swc instead of tsc (#15118)

現在、Denoは以下のような基準でtscswcを使い分けています。

  • 型チェックが必要なときは、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して使用することができます。


ax

zxに影響を受けたスクリプティング用モジュール

deno taskコマンドの内部でも使用されているdeno_task_shellを使うことで、移植性の向上が図られているのが特徴のようです。


https://github.com/dsherret/ax