Denoのnpm workspacesサポートについて

Deno本体にnpm workspacesのサポートを追加するPRがマージされています。おそらくDeno v1.45.0あたりでリリースされる可能性がありそうです。

feat: npm workspace and better Deno workspace support (#24334)

Denoがpackage.jsonworkspacesフィールドを認識してくれるようです。

現状では、各ワークスペースの依存関係はプロジェクトのルートディレクトリ直下のnode_modulesディレクトリにまとめてインストールされるようです。今後、この挙動は改善が検討されているようです。

また、以下のようなワイルドカードによる指定についてもまだサポートはされておらず、今後、対応が検討されているようです (#24420)

{
  "workspaces": ["packages/*"]
}

Denoのワークスペース機能への変更

この対応に合わせて、Denoのワークスペース機能にも変更が加わっており、deno.jsonworkspacesキーがworkspaceにリネームされています。

また、このdeno.jsonworkspaceにはpackage.jsonを含むディレクトリをワークスペースのメンバーとして指定できるように改善されています。(今まではdeno.jsonを含むディレクトリのみがワークスペースのメンバーとしてサポートされていました)

deno_stdのリリース

deno_stdのリリースが行われています。

@std/crypto@1.0.0

@std/crypto@1.0.0がリリースされました。

@std/assert@1.0.0-rc.3

@std/assert@1.0.0-rc.3がリリースされています。

各ファイルの名前からassert_のプレフィックスが削除されています。例として、@std/assert/assert_equals@std/assert/equalsに、@std/assert/assert_rejects@std/assert/rejectsへリネームされています。

@std/csv@1.0.0-rc.1

@std/csv@1.0.0-rc.1がリリースされています。

各ファイルの名前からcsv_プレフィックスが削除されています。例えば、@std/csv/csv_parse_stream@std/csv/parse_stream@std/csv/csv_stringify_stream@std/csv/stringify_streamにリネームされています。

また、ReadOptionsが非公開APIに変更されています。

@std/expect@1.0.0-rc.1

@std/expect@1.0.0-rc.1がリリースされています。

Immutable.jsのオブジェクトに関するサポートが削除されています。

また、expect().toHaveBeenNthCalledWith()0以下の数値が指定された際に、例外が発生するように挙動が修正されています。

@std/json@1.0.0-rc.2

@std/json@1.0.0-rc.2がリリースされています。

各ファイル名からjson_プレフィックスが削除されています。例えば、@std/json/json_parse_stream@std/json/parse_stream@std/json/json_stringify_stream@std/json/stringify_streamにリネームされています。

@std/semver@1.0.0-rc.1

@std/semver@1.0.0-rc.1がリリースされています。

非推奨化されていた以下のAPIが削除されています。

  • rangeMax() (greaterThanRange()への移行が推奨)
  • rangeMin() (lessThanRange()への移行が推奨)
  • testRange() (satisfies()への移行が推奨)

また、SEMVER_SPEC_VERSION定数が削除されており、@std/semver/constantsも非公開モジュールに変更されています。

@std/yaml@1.0.0-rc.1

@std/yaml@1.0.0-rc.1がリリースされています。

APIの削除

parse()APIの以下のオプションが削除されています。

  • legacy
  • filename
  • listener

TypeSchema型も非公開になりました。parse()schemaオプションには文字列を渡せるのでそちらへの移行が推奨されます。

また、parseAll()iterator引数が削除されています。

リネーム

DumpOptionsStringifyOptionsにリネームされています。

バグ修正

!!pairsで空のペアがうまく取り扱われない問題が修正されています。

また、<<がうまく動作しない問題も修正されています。

chore: run test in Node.js (denoland/deno_std#5258)

@deno/shim-denoを使って、deno_stdをNode.jsでテストするための仕組みが導入されています。

chore: run test in Node.js (denoland/deno_std#5258)

現状では、@std/collectionsのみがテストされているようです。この仕組みで動作が確認されているパッケージについては、Node.jsからもJSRを経由することで比較的安定して利用できそうです。

@std/fsをNode.jsでも動作させたいという要望があるようで、それに向けた対応のようです (suggestion(fs): make std/fs Node-compatible (denoland/deno_std#4313))

LogTape

@logtape/logtapeというロギングライブラリが公開されています。

外部への依存関係を持たないことや、DenoやNode.js, Bun, ブラウザーなどの複数の環境をサポートすることなどが特徴のようです。