Denoのnpm workspacesサポートについて
Deno本体にnpm workspacesのサポートを追加するPRがマージされています。おそらくDeno v1.45.0あたりでリリースされる可能性がありそうです。
feat: npm workspace and better Deno workspace support (#24334)
Denoがpackage.jsonのworkspacesフィールドを認識してくれるようです。
現状では、各ワークスペースの依存関係はプロジェクトのルートディレクトリ直下のnode_modulesディレクトリにまとめてインストールされるようです。今後、この挙動は改善が検討されているようです。
また、以下のようなワイルドカードによる指定についてもまだサポートはされておらず、今後、対応が検討されているようです (#24420)
{
"workspaces": ["packages/*"]
}
Denoのワークスペース機能への変更
この対応に合わせて、Denoのワークスペース機能にも変更が加わっており、deno.jsonのworkspacesキーがworkspaceにリネームされています。
また、このdeno.jsonのworkspaceには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の以下のオプションが削除されています。
legacyfilenamelistener
TypeとSchema型も非公開になりました。parse()のschemaオプションには文字列を渡せるのでそちらへの移行が推奨されます。
また、parseAll()のiterator引数が削除されています。
リネーム
DumpOptionsがStringifyOptionsにリネームされています。
バグ修正
!!pairsで空のペアがうまく取り扱われない問題が修正されています。
また、<<がうまく動作しない問題も修正されています。
chore: run test in Node.js (denoland/deno_std#5258)
@deno/shim-denoを使って、deno_stdをNode.jsでテストするための仕組みが導入されています。
現状では、@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, ブラウザーなどの複数の環境をサポートすることなどが特徴のようです。