Deno v1.38.5

Deno v1.38.5がリリースされました。

Deno.Kvwatch()メソッドが実装されています。引数として監視したいキーの一覧を指定すると、戻り値として返却されたReadableStream<Deno.KvEntryMaybe<T>[]>からそれらのキーに関する変更が通知されます。

const kv = await Deno.openKv(":memory:");
const watcher = kv.watch(
  [
    ["users", 1],
    ["users", 2]
  ]
);

(async () => {
  for await (const entries of watcher) {
    // 変更があった際は通知されます。
    console.info(entries);
  }
})();

await kv.set(["users", 1], "foo");
await kv.set(["users", 2], "bar");
await kv.set(["users", 3], "baz");

--unstable-sloppy-importsの実装について

まだリリースはされていませんが、Deno本体に--unstable-sloppy-importsというオプションを導入するPRがマージされています。

feat(unstable): ability to resolve specifiers with no extension, specifiers for a directory, and TS files from JS extensions #21464

この機能を有効化すると、以下のようなモジュールの読み込み方法が有効化されます。

拡張子なしでのモジュールのimport

// Denoがサポートする拡張子(ts, js, tsx, mjsなど)のファイルの探索を試みます。
// もしそれらの拡張子のファイルが見つかれば、それが読み込まれるようです。
import { add } from "./add";

ディレクトリを指定したimport

// 対象のディレクトリから`index.${Denoがサポートする拡張子}`を名前に持つファイルの探索を試みます。
import { foo } from "./path/to/dir";

TypeScriptモジュールの.js拡張子でのimport

// add.tsがあれば、それが読み込まれます。
import { add } from "./add.js";

この機能は以下のいずれかの方法で有効化できるようです。

  • --unstable-sloppy-importsオプションを指定する
  • deno.jsonunstable: ["sloppy-imports"]を設定する
  • DENO_UNSTABLE_SLOPPY_IMPORTS環境変数を設定する

この機能は既存のNode.jsプロジェクトをDenoで動かしやすくすることを目的としているようで、それ以外のケースにおいては、基本的に有効化することは推奨はされないようです。そのため、この機能を有効化した上で上記のいずれかの方法によるimportが検出された場合は、警告が出力されるようです。

fresh v1.6.1

fresh v1.6.1がリリースされています。

Tailwind CSSプラグインの改善

fresh v1.6で追加されたTailwind CSSプラグインに関する変更が実施されています。

その他

  • ctx.dataの非推奨化が解除されています。(意図せずして非推奨化されていたようです)
  • v1.6.0で行われたルーティングの実装に関するURLPatternからRegExpへの移行がrevertされたようです。(代わりにDeno本体でURLPatternのパフォーマンスチューニングが実施されているようです)

deployctl v1.9.0

deployctl v1.9.0がリリースされています。

deno.json(c)による設定のサポート

deno.json(c)deployフィールドを定義しておくと、deployctlがそこから設定を読み込んでくれるようになりました。

deployフィールドには以下の項目を設定できるようです。

  • project
  • entrypoint
  • include
  • exclude

deployctl deployの実行後にdeno.json(c)が存在しなければ、deployctlが自動でdeno.jsonにこれらの設定を書き込んでくれるようです。

deployctl deployコマンドの改善

--project--entrypointオプションが省略された際のプロジェクト名やエントリポイントの推論がサポートされています。

プロジェクト名はGitリポジトリやディレクトリ名などから推論されるようです。また、もしmain.tsindex.tsなどの名前のファイルが見つかれば、それがエントリポイントとして取り扱われるようです。


インタラクティブな認可フローのサポート

deployctlの実行時に--tokenオプションなどでアクセストークンが指定されなかった際は、インタラクティブな認可フローを実行してトークンが発行されるようになりました。

発行されたトークンはmacOSではkeychainパッケージを使用して保存されるようです。

GitHubアクションの改善

deployctlのGitHubアクションでinclude/excludeオプションがサポートされています。


https://github.com/denoland/deployctl/blob/1.9.0/action.yml#L19-L24

denokv v0.6.0

denokv v0.6.0がリリースされています。

@deno/kvパッケージがnpmレジストリに公開されています。

このパッケージを使用することで、Node.jsからDeno KVのKV Connectプロトコルを実装したサーバーやSQLiteバックエンドなどへ接続できるようです。

また、Deno CLIの実装とは異なる独自のインメモリ実装なども提供されているようです。(implementation: "in-memory")

lume v2

lume v2がリリースされています。

UnoCSSプラグインやsharpベースの画像変換プラグインの追加、デフォルトのテンプレートエンジンがNunjucksからVentoへ移行、APIやCLIオプションの整理などが行われているようです。

以下のページでマイグレーションガイドが公開されています。