2022/12/05〜2022/12/12の最新情報

今週のDenoに関するアップデート 今週はDenoのリリースが行われていないため、次のv1.29でリリース予定と思われる変更点についていくつか紹介します。 deno.json(c)でdeno benchコマンドの設定がサポート deno.json(c)にbenchフィールドが追加されており、filesフィールドによってベンチマーク対象のファイルを設定できます。 { "bench": { "files": { "include": ["./benchmark"] } } } https://github.com/denoland/deno/pull/16608 deno.json(c)でのロックファイルのサポート deno.json(c)のlockオプションでロックファイルに関する設定を変更できるようになりました。 lock: falseを指定すると、ロックファイルの適用が無効化されます。(--no-lockと同様の挙動) { "lock": false } またlockオプションにロックファイルのパスを指定することもできます。 { "lock": "./lock.json" } https://github.com/denoland/deno/pull/16781 deno initコマンドでdeno.jsoncの生成がサポート deno initコマンドでdeno.jsoncが生成されるようになりました。 https://github.com/denoland/deno/pull/16389 https://github.com/denoland/deno/pull/17002 Deno名前空間からspawn/spawnSync/spawnChildが削除 Deno v1.28.0でDeno.Commandが実装されたため、Deno.spawnなどのAPIが削除されました。 https://github.com/denoland/deno/pull/16893 Deno.TcpConnのsetNoDelayとsetKeepAliveが安定化 Deno v1.19で実装されたDeno.TcpConnのsetNoDelayとsetKeepAliveメソッドが安定化されています。 今後は--unstableなしで利用できるようになりそうです。 https://github.com/denoland/deno/pull/17003 Ultra v2 Ultraのv2がリリースされています。 Honoとの統合やTwind/react-query/react-router/react-helmetのサポートなどの様々な改善が実施されています。 以下の記事ではUltra v2の概要や使い方などについて解説されています。 Building Fullstack React Apps with Ultra https://github....

December 11, 2022

2022/09/12〜2022/09/18の最新情報

Deno v1.25.3 Deno v1.25.3がリリースされました。 npmパッケージサポートの改善 esm形式のモジュールからcjs形式のモジュールをimportする際の挙動のNode.jsとの互換性が向上しています。 deno run --unstable npm:<package>@version/subpathで.js形式または拡張子なしのファイルを実行できるようになりました。 typescript/tscを実行できない問題があったようです。 パッケージのサブパスにpackage.jsonがあれば、その定義内容を元にエントリポイントが解決されるようになりました。 --unstableが指定されたときは、NODE_DEBUGとNODE_OPTIONS環境変数に対して--allow-envのチェックがスキップされるように変更されました。 Flash(Deno.serve)の改善 同時に一つのリクエストしか処理できなかった問題が解消されています。 https://github.com/denoland/deno/releases/tag/v1.25.3 deno_std v0.156.0 deno_std v0.156.0がリリースされました。 std/node Deno本体のnpmパッケージサポートの改善に合わせて、バグ修正などが実施されています。 今回のリリースによってcpy-cliなどが動かせるようになったようです。 変更点: fs: ReadStreamとWriteStreamがnewなしで作成できるようになりました。 process: "FOO" in process.envなどでprocess.envを利用した際に、全パーミッションが要求される問題が解消されています。(内部的にDeno.env.toObject()が使用されないように修正されています) process: process.execPathが書き込み可能なプロパティに変更されました。(pnpmなどの書き込みを行うパッケージが存在したため) std/fs すでにシンボリックリンクが存在する場合にensureSymlinkが失敗しないように改善されています。 std/http/file_server serveFileにディレクトリのパスが指定された場合、404エラーが返却されるように修正されました。 (今までは200が返却されるものの、ボディを読もうとするとエラーが発生していたようです) https://github.com/denoland/deno_std/releases/tag/0.156.0 Mongooseサポートに向けたunstable APIの安定化について Mongooseのサポートに向けて、下記のAPIの安定化が検討されています。 Deno.consoleSize() Deno.hostname() Deno.osRelease() Deno.consoleSize()とDeno.hostname()についてはすでにPRが作成されており、次のv1.26あたりで安定化される可能性がありそうです。 Ultra v2.0.0-beta.6 Island Architectureのサポートなどが追加されています。 /examples/with-islands https://github.com/exhibitionist-digital/ultra/releases/tag/v2.0.0-beta.6 deno-sqlite v3.5.0 PreparedQueryに.first()と.firstEntry()が追加されています。 その影響で既存の.one()と.oneEntry()は非推奨化されています。 const query = db....

September 18, 2022

2021/08/22〜2022/08/28の最新情報

Deno v1.25.0 Deno v1.25.0がリリースされました。 以下の記事に変更点をまとめたため、詳しくはそちらを参照いただければと思います。 Deno v1.25 deno_std v0.153.0 deno_std v0.153.0がリリースされました。 std/encoding/csv: parse()が同期的に動作するように (破壊的変更) parse()の引数からBufReaderが削除されています これに伴い、parse()の戻り値がstring[][] | Record<string, unknown>[]に変更されています。 import { parse } from "https://deno.land/std@0.153.0/encoding/csv.ts"; const records = parse(`id,name 1,foo 2,bar`); console.log(records); // Output: [ [ "id", "name" ], [ "1", "foo" ], [ "2", "bar" ] ] std/http/cookie_mapモジュールが追加 MapライクなAPIをベースにCookieを管理するためのユーティリティモジュールが追加されました。 CookieMapはリクエスト及びレスポンスに関するCookieの管理に利用することができます。 import { CookieMap, mergeHeaders } from "https://deno.land/std@0.153.0/http/cookie_map.ts"; const req = new Request("http://localhost:3000", { headers: { cookie: "foo=bar; hoge=piyo;" }, }); const cookies = new CookieMap(req); cookies....

August 28, 2022

2021/04/18〜2022/04/24の最新情報

Deno v1.21 Deno v1.21がリリースされました。 個別に記事を書いたので、詳しくはそちらを参照いただければと思います。 Deno v1.21 deno_std v0.136.0 deno_std v0.136.0がリリースされました。 testing/snapshot スナップショットテストを行うためのモジュールが追加されました。 このモジュールではassertSnapshotという関数が公開されており、__snapshots__ディレクトリに保存されたスナップショットと第2引数で指定された値を比較し、マッチしなかった場合、エラーが発生します。 スナップショットを読み込む必要があるため、利用には--allow-readパーミッションが必要になります。 import { assertSnapshot } from "https://deno.land/std@0.136.0/testing/snapshot.ts" Deno.test("doSomething", async (t) => { const result = doSomething(); await assertSnapshot(t, result); }); スナップショットを更新したいときは、テストを実行する際に--updateを指定する必要があります。 この場合、スナップショットを書き込むために、追加で--allow-writeが必要になります。 # スナップショットは__snapshots__に書き込まれます $ deno test --allow-read --allow-write tests/some_test.js -- --update testing/bdd itに渡すテスト関数がTestContextを受け取るように修正されています。 import { describe, it } from "https://deno.land/std@0.136.0/testing/bdd.ts" describe("sum", () => { it("should return sum of numbers", (t) => { assertEquals(sum(1, 2, 3), 6, t....

April 24, 2022

2021/04/04〜2022/04/10の最新情報

Deno v1.20.5 Deno v1.20.5がリリースされました。 deno lspの新機能 deno lspでTesting APIがサポートされています (https://code.visualstudio.com/api/extension-guides/testing) vscodeでTesting: Focus on Test Explorer Viewコマンドを実行すると、テストファイルに含まれるテストケースの一覧を表示できます。 Deno.Listenerにrefとunrefメソッドが追加 (unstable) unref()が呼ばれたListenerはプロセスの終了をブロックしなくなります (タイマにDeno.unrefTimerを呼んだときと同様の挙動をします) 後述するdeno_std/node/netでのServer.ref()の実装で利用されています。 バグ修正 SubtleCrypto.exportKey()でextractable: falseに設定されたキーをエクスポートできてしまう問題が修正されました (https://github.com/denoland/deno/issues/14215) --compatを指定してdeno installを実行した際に、--compatフラグが維持されない問題が修正されました。 https://github.com/denoland/deno/releases/tag/v1.20.5 deno_std v0.134.0 deno_std v0.134.0がリリースされました。 encoding/csvやnodeモジュールへの機能の追加が行われています。 encoding/csv CSVStreamが追加されました。 import { CSVStream } from "https://deno.land/std@0.134.0/encoding/csv/stream.ts"; const file = await Deno.open("path/to/data.csv"); const stream = file.readable .pipeThrough(new TextDecoderStream()) .pipeThrough(new CSVStream()); for await (const record of stream) { console.log(record); } node child_process: ChildProcess....

April 10, 2022

2021/08/30〜2021/09/05の最新情報

Aleph.js v0.3.0-beta.9 Aleph.jsのv0.3.0-beta.9がリリースされました。 主な変更点として、サーバから返却されるCache-Controlの値がpublic, max-age=0, must-revalidateに変更されています。 また、このリリースに合わせてWindi CSS向けのプラグインが公開されています (https://github.com/ije/aleph-plugin-windicss) https://github.com/alephjs/aleph.js/releases/tag/v0.3.0-beta.9 https://github.com/ije/aleph-plugin-windicss Deno Deploy Beta2 Deno DeployのBeta2がリリースされました。 変更点: Deno.readFileによって、デプロイに紐づくGitHubリポジトリ内のファイルの読み込みがサポートされました Deno.listenとDeno.serveHttpがサポートされました インスタンスがクラッシュした際のデバッグを容易にするため、クラッシュレポートが追加されました https://deno.com/blog/deploy-beta2 Deno Deploy Beta 2が来たぞ deployctl v0.4.0 Deno Deployのコマンドラインツールであるdeployctlのv0.4.0がリリースされました。 このリリースでは、コマンドの実行時に新バージョンを通知する機能が実装されています。 また、現時点では、このバージョンをインストールする際に--unstableが必要になります。 https://github.com/denoland/deployctl/releases/tag/0.4.0 Ultra UltraというDeno+ReactベースのWebフレームワークが公開されました。 まだメジャーリリースはされていませんが、以下のような特徴があるようです。 ReactDOM.renderToReadableStreamベースのSSR Viteなどと同様のオンデマンドでのコード変換 (SWCやesbuildがベース) SWR向けのキャッシュプロパイダを提供 /examplesディレクトリに使用例があるため、もし興味がありましたら見てみるとよいかもしれません。 https://github.com/exhibitionist-digital/ultra

September 5, 2021