Deno v1.31

Deno v1.31がリリースされています。

以下に内容をまとめたため、よろしければそちらを参照いただければと思います。

Deno v1.31.1

Deno v1.31.1がリリースされています。

package.jsonサポートに関する改善

以下のいずれかの手段によって、package.jsonの自動探索を無効化できるようになりました。

  • DENO_NO_PACKAGE_JSON環境変数に1を設定する
  • --no-configまたは--no-npmを指定する

また、package.jsonが見つかった際のnpmパッケージのダウンロードに関する挙動が改善されています。package.jsonで依存関係として指定されたいずれかのパッケージが利用されるタイミングまでnpmパッケージのダウンロードが遅延されます。

これにより、npmパッケージに依存しないスクリプトを実行する場合は、package.jsonがあってもnpmパッケージがダウンロードされなくなります。

その他には、package.jsonの以下のスキームから始まるspecifierが無視されるように修正されています。

  • workspace:
  • file:
  • git:
  • http:
  • https:

Deno.serve()でリモートアドレスの取得がサポート

Deno.serve()に渡したhandlerの第2引数にオプションが渡されるようになりました。remoteAddrプロパティ(Deno.NetAddr)からリモートアドレスが取得できます。

Deno.serve({
  handler: (req, { remoteAddr }) => {
    return Response.json(remoteAddr);
  },
});

その他のバグ修正

  • リモートモジュールからdata:URLをimportできなくなっていた問題が修正されています。
  • 静的に解析ができないdynamic importが複数同時に実行された際に、まれにDenoがパニックする問題が修正されています。
  • Import Mapsでローカルモジュールへのマッピングが定義されていた場合、リモートモジュールからそのローカルモジュールをimportできない問題が修正されています。

https://github.com/denoland/deno/releases/tag/v1.31.1

deno_std v0.178.0

deno_std v0.178.0がリリースされました。

std/nodeの削除

Deno v1.31でDeno本体にstd/nodeが組み込まれました。

その影響により、std/nodeが削除されています。

もし、今後もstd/nodeを利用したい場合は、バージョンを明示した上でimportをするとよさそうです。

import { EventEmitter } from "https://deno.land/std@0.177.0/node/events.ts";

std/http/file_server

Deno DeployでもETagが返却されるように挙動が改善されています。

Deno DeployではDENO_DEPLOYMENT_ID環境変数からETagが計算されます。

std/streams/delimiter_stream

DelimiterStreamdispositionオプションがサポートされました。

このオプションには"suffix"/"prefix"/"discard"のいずれかを指定でき、"suffix"または"prefix"を指定すると、デリミタがチャンクに保持されるようになります。(デフォルトは"discard")

例えば、"suffix"を指定すると、各チャンクの末尾にデリミタが付与されます。

std/crypto/timing_safe_equal

timingSafeEqualRangeErrorが発生することのある問題が修正されています。


https://github.com/denoland/deno_std/releases/tag/0.178.0

esm.sh v108

esm.shのv108がリリースされています。

Deno v1.31向けに?target=denonextがサポートされています。

これを指定することで、Node.jsの組み込みパッケージが https://deno.land/std/nodeではなくnode:経由で読み込まれるようになります。

将来的にDeno Deployでnode:がサポートされたら、この?target=denonextの挙動がデフォルトに変更される予定のようです。


https://github.com/ije/esm.sh/releases/tag/v108

FreshのTwind v1対応について

現在、Freshでは公式でTwindv0.16.17向けのプラグインが提供されています。

先週、以下のPRがFreshのmainブランチへマージされました。

feat: add twind v1 plugin #946

このPRでは、Twind v1向けのFreshプラグインが実装されています。

リリース時期などはまだ未定なものの、これが入れば、FreshからTwind v1が利用しやすくなりそうです。