2024/11/11〜2024/11/17の最新情報

Denoの直近の変更について 先週は特にDenoのリリースは行われていないため、直近でDenoのmainブランチにマージされている変更についていくつか紹介します。 deno task - オブジェクト形式でのタスクの定義がサポート deno.jsonでのタスクの定義においてオブジェクト形式がサポートされています。(おそらくdeno taskにおける依存関係の定義のサポートに向けた対応と思われます) { "tasks": { "test": { "command": "deno test --allow-read=. --doc", "description": "Run tests" } } } descriptionフィールドで指定した内容は、引数なしでdeno taskコマンドを実行した際のコメントとして表示されます: $ deno task Available tasks: - test // Run tests deno test --allow-read=. --doc このdescriptionフィールドの追加に伴い、引数なしでdeno taskコマンドを実行した際のdeno.jsoncで各タスクに記述されたコメントを認識してくれる機能が廃止されています: { "tasks": { // このコメントは引数なしでdeno taskを実行した際に表示されません "test": "deno test --allow-read=. --doc" } } feat(task): support object notation, remove support for JSDocs #26886 --unstable-detect-cjsの安定化 --unstable-detect-cjsが安定化されています。--unstable-detect-cjsを指定しなくても、package....

November 17, 2024

2024/11/04〜2024/11/10の最新情報

Deno v2.0.5 Deno v2.0.5がリリースされています。 Workspaces メンバーのワイルドカード形式での指定がサポート ワークスペースのメンバーの指定でワイルドカード形式がサポートされています: { "workspace": [ "./packages/*" ] } fix(workspace): support wildcard packages #26568 deno add/deno install package.jsonを更新する際の振る舞いの変更 Deno v2.0.0-rc.2では、package.jsonが存在する状態でdeno add/deno installによってnpmパッケージを追加しようとした場合、deno.jsonではなく常にpackage.jsonが更新されるよう挙動が変更されました。 Deno v2.0.5ではこの挙動が微調整され、deno.jsonとpackage.jsonの両方が検出された場合、package.jsonの配置場所がdeno.jsonよりも現在のパスに近いときだけpackage.jsonにnpmパッケージ(npm:)が追加されるよう変更されています。 fix(add): only add npm deps to package.json if it’s at least as close as deno.json #26683 deno fmt YAMLでのdeno-fmt-ignore-fileディレクティブのサポート # deno-fmt-ignore-fileから始まるYAMLファイルはdeno fmtコマンドによるフォーマット対象から除外されるように挙動が変更されています。 fix(fmt): ignore file directive for YAML files #26717 deno coverage コメントの集計対象からの除外 コメントの行がdeno coverageコマンドによる集計対象から除外されるよう振る舞いが改善されています。...

November 10, 2024

2024/10/28〜2024/11/03の最新情報

Deno v2.0.4 Deno v2.0.4がリリースされています。 deno lsp typescript.preferences.preferTypeOnlyAutoImports deno lspの設定項目としてtypescript.preferences.preferTypeOnlyAutoImportsがサポートされています。このオプションにtrueを設定すると、TypeScriptの型がAuto importされる際にimport typeが挿入されるようです。 このオプションに合わせて、以前に導入されたAuto importに関する振る舞いがデフォルトで無効化されているため、以前の振る舞いに戻したい場合は、typescript.preferences.preferTypeOnlyAutoImportsにtrueを設定する必要があります。 feat(lsp): “typescript.preferences.preferTypeOnlyAutoImports” setting #26546 (Windows) deno upgradeでのdeno lspの自動停止 Winodwsでdeno upgradeを実行した際に、実行中のdeno lspを自動で停止する機能が導入されています。 fix(upgrade): stop running deno lsp processes on windows before attempting to replace executable #26542 deno compile リダイレクトに関する取り扱いの修正 リダイレクトが発生するサードパーティモジュール(例: https://deno.land/std/http/mod.tsなど)に依存している場合、deno compileで生成した実行可能ファイルでエラーが発生する問題が修正されています。 fix(compile): regression handling redirects #26586 deno check compilerOptions.jsxImportSourceに関する修正 ソースコード中でJSXが使用されていない場合、compilerOptions.jsxImportSourceが解決されないよう挙動が改善されています。 fix(check): ignore resolving jsxImportSource when jsx is not used in graph #26548 deno add/deno install \r\nの取り扱いの修正 deno....

November 3, 2024

2024/10/21〜2024/10/27の最新情報

Deno v2.0.3 Deno v2.0.3がリリースされました。 deno lsp Interactive Inlay Hints for Types Interactive Inlay Hints for Typesが実装されています。Inlay Hintsの内容をクリックすることで、その定義元へジャンプできるようです。 feat(lsp): interactive inlay hints #26382 import-map-remap quickfix type imports (import type)に対してもimport-map-remap quickfixが利用できるよう改善されています。 fix(lsp): import-map-remap quickfix for type imports #26454 deno compile Node-APIのサポート deno compileで生成されたバイナリでNode-APIがサポートされています。 feat: support node-api in denort #26389 deno check --frozenのサポート deno checkコマンドで--frozenオプションの指定がサポートされています。 fix(check): support --frozen on deno check #26479 deno fmt --extの挙動の変更 deno fmtに--extオプションを指定した際に、引数でのファイルの指定が必須に変更されています。...

October 27, 2024

2024/10/14〜2024/10/20の最新情報

Deno v2.0.1/v2.0.2 Denoのv2.0.1とv2.0.2がリリースされています: v2.0.1 v2.0.2 Node.js互換性の改善 CommonJSサポートの改善やWrangler/SvelteKit/Next.jsなどに関するサポートの改善が行われています。 --unstable-detect-cjs --unstable-detect-cjsという新しいオプションが追加されています (deno.jsonで"unstable": ["detect-cjs"]を指定して有効化することも可能です) このオプションを指定すると、package.jsonで"type": commonjsが指定されたパッケージの.jsファイルが.cjsファイル(CommonJS形式)として認識されます。 feat(unstable): --unstable-detect-cjs for respecting explicit "type": "commonjs" #26149 node:net: Socket#setNoDelayが実装 新規APIとしてSocket#setNoDelayが実装されました。 このAPIによってnode-postgresなどのパフォーマンスの改善が期待されるようです。 fix(ext/node): implement TCP.setNoDelay #26263 node:child_process: fork()での--no-warningsのサポート fork()のexecArgvオプションでNode.jsの--no-warningsがサポートされています (Denoの--quietオプションにマッピングされます) Wranglerを動作させるための対応のようです。 fix(child_process): map node --no-warnings flag to --quiet #26288 node:dns: lookup()の互換性の改善 lookup()でlocalhostを解決する際の振る舞いがNode.jsと一致するよう挙動が改善されています。 fix(ext/node): fix dns.lookup result ordering #26264 node:process (Windows) 未サポートのシグナルの取り扱いの変更 Windowsにおいて未サポートのシグナルに対して警告を発するのではなく、単純に無視されるように振る舞いが変更されています。パッケージによっては多くの警告が出てしまうこともあったようです。 fix: don’t warn on ignored signals on windows #26332 process....

October 20, 2024

2024/10/07〜2024/10/13の最新情報

Deno v2がリリース Deno v2が正式にリリースされました。公式ブログとYoutubeでアナウンスが行われています: https://deno.com/blog/v2.0 https://www.youtube.com/watch?v=d35SlRgVxT8 新しい発表について 大きな点として、LTSリリースチャネルが発表されています。Deno v2.1からLTSチャネル向けにリリースから6ヶ月間の間は、重要度の高いバグ修正などがバックポートされ続ける想定のようです。 また、Webサイトだけ先に公開されていたDeno for Enterpriseについても正式に発表されました。 周辺ライブラリでの対応 Oakではすでに対応が行われており、v17.1.0にてすでにDeno v2サポートがリリースされています: Release v17.1.0 Honoについてもまだリリースはされていなさそうですが、早速、Deno v2の対応が入れられています (ci: use Deno v2 #3506) 各種パッケージマネージャーを抽象化してくれるni.zshでも、Deno v2のリリースに合わせて、Denoのサポートが導入されたようです (v1.3.0) deno_stdのリリース deno_stdがリリースされています。 @std/cbor 新規パッケージとして@std/cborが追加されています。CBORの実装が提供されます。 @std/collections@1.0.8 @std/collections@1.0.8がリリースされています。 Iterableのサポート @std/collections@1.0.7に続けて、以下のAPIでもIterableオブジェクトのサポートが追加されています: takeLastWhile (@std/collections/unstable-take-last-while) dropWhile (@std/collections/unstable-drop-while) intersect (@std/collections/unstable-intersect) dropLastWhile (@std/collections/unstable-drop-last-while) @std/async@1.0.6 @std/async@1.0.6がリリースされています。 @std/async/unstable-mux-async-iteratorが追加 @std/async/unstable-mux-async-iteratorではMuxAsyncIteratorが提供されており、振る舞いとしては既存の@std/async/mux-async-iteratorにおける同名APIと同じですが、コンストラクタ引数に複数のAsyncIterableを可変長引数として渡すことができる点が異なります。 @std/streams@1.0.7 @std/streams@1.0.7がリリースされています。 @std/streams/unstable-to-byte-stream toByteStream (@std/streams/unstable-to-byte-stream)が追加されています。ReadableStream<Uint8Array>をreadable byte streamへ変換してくれます。 @std/io@0.225.0 @std/io@0.225.0がリリースされています。 非推奨APIの削除 非推奨化された以下のAPIが削除されています。APIによっては@std/streamsに対応するものがあるため、そちらへの移行が推奨されます。 削除対象 移行先 補足 StringReader Buffer....

October 13, 2024

2024/09/23〜2024/09/29の最新情報

Deno v2.0.0-rc.5/v2.0.0-rc.6/v2.0.0-rc.7がリリース Denoのv2.0.0rc.5〜v2.0.0 rc.7がリリースされています: v2.0.0-rc.4からv2.0.0-rc.5までの差分 v2.0.0-rc.5からv2.0.0-rc.6までの差分 v2.0.0-rc.6からv2.0.0-rc.7までの差分 --allow-importの導入 --allow-importという新しいパーミッションフラグが導入されています (短縮形式は-I) Deno v2からリモートモジュールの読み込みを許可するホストに制限がかかるようです。必要に応じて--allow-importにリモートモジュールの読み込みを許可するホストを指定する必要があります。 ただし、デフォルトで以下のホストからのモジュールのimportが許可されるようなので、基本的なケースにおいては今まで通り利用できると思われます: deno.land jsr.io esm.sh raw.githubusercontent.com 例えば、unpkg.comからモジュールをimportしようとすると、上記のいずれのホストにも当てはまらないため、権限が要求されます: import ky from "https://unpkg.com/ky@1.7.2"; const res = await ky.get("https://api.github.com/repos/uki00a/deno-weekly").json(); この場合、以下のように権限が求められます: $ deno run --allow-net main.js ┏ ⚠️ Deno requests import access to "unpkg.com:443". ┠─ Requested by `import()` API. ┠─ Learn more at: https://docs.deno.com/go/--allow-import ┠─ Run again with --allow-import to bypass this prompt. ┗ Allow? [y/n/A] (y = yes, allow; n = no, deny; A = allow all import permissions) > --allow-importによってunpkg....

September 29, 2024

2024/09/09〜2024/09/15の最新情報

Deno v2.0.0-rc.2 Deno v2.0.0-rc.2がリリースされています。 どの変更内容がv2.0.0-rc.2に入っているかは不明なため、Deno v2.0.0-rc.1からの差分を参考に直近の変更内容についてまとめます (差分) 破壊的変更 Deno.errors.NotCapableの導入 Deno.errors.NotCapableという新しいエラーが追加されています。 今までは、OSによる権限エラーとDenoによる権限エラー(--allow-*の指定漏れ)の両方がDeno.errors.PermissionDeniedによって表現されていました。 これからはOSによる権限エラーはDeno.errors.PermissionDenied、Denoによる権限エラーはDeno.errors.NotCapableによって表現されます。 feat(cli): use NotCapable error for permission errors #25431 deno.json deno.jsonから下記フィールドが削除されています: lint.files fmt.files test.files bench.files 今後はlint.excludeやfmt.includeなどへの移行が推奨されます。 --unstableの削除 すべてのunstable APIを有効化する--unstableオプションが削除されています。 今後は--unstable-*やdeno.jsonのunstableフィールドへの移行が推奨されます。 非推奨化されていたDeno APIの削除 非推奨化されていた以下のAPIが削除されています (移行先についてはDeno 1.x to 2.x Migration Guideで解説されています): Deno.serveHttp関連の型定義 Deno.Buffer Deno.FsFile.prototype.constructor (Deno.FsFileの直接のインスタンス生成が禁止されます) 下記のridプロパティに関する型定義 Deno.stdin Deno.stdout Deno.stderr 下記オブジェクトのridプロパティ Deno.TlsConn Deno.Conn Deno.TcpConn Deno.UnixConn Deno.Listener Deno.FsFile Deno.fdatasync(Sync) Deno.Reader(Sync) Deno.Writer(Sync) Deno....

September 15, 2024

2024/09/02〜2024/09/08の最新情報

Deno v2.0.0-rc.1 Deno v2.0.0-rc.1がリリースされています。 どの変更内容がv2.0.0-rc.1に入っているかは不明なため、Deno v2.0.0-rc.0からの差分を参考に直近の変更内容についてまとめます (差分) deno lint jsr関連のlintルールの実行について deno.jsonでnameとexportsが定義されていればjsr関連のlintルールが実行されるように挙動が変更されています (今まではnameとexportsに加えてversionの3つのフィールドが定義されている必要がありました) fix(lint): support linting jsr pkg without version field #25230 deno lsp HTML/CSS/Yamlファイルのフォーマット deno lspでHTML/CSS/Yamlファイルのフォーマットがサポートされています。 feat(lsp): html/css/yaml file formatting #25353 deno add パッケージのサブパスの指定がサポート # 例: 以下の場合、`@std/dotenv`が追加されます $ deno add @std/dotenv/load feat(add): strip package subpath when adding a package #25419 deno install --entrypointがサポート このオプションが指定された場合、指定されたファイルの依存関係がダウンロードされます (deno cacheと同じように振る舞います) $ deno install --entrypoint main.ts feat(install): deno install with entrypoint #25411 TypeScript useUnknownInCatchVariablesがデフォルトで有効化 TypeScriptのuseUnknownInCatchVariablesがデフォルトで有効化されています。...

September 8, 2024

2024/08/26〜2024/09/01の最新情報

Deno v2.0.0-rc.0 Deno v2.0.0-rc.0がリリースされています。 アップデートについて 今回、GitHub Releaseは作成されていないようなので、deno upgradeによってアップデートする必要がありそうです。RCバージョンへのアップデートはDeno v1.46でサポートが入っているため、それ以前のバージョンをお使いの場合は、一度、v1.46を経由してからアップデートする必要がありそうです。 $ deno upgrade 2.0.0-rc.0 もし現在のDenoの実行可能ファイルを上書きしたくない場合は、--outputオプションを使えば回避できます: # `./deno-2.0.0-rc.0`に保存します $ deno upgrade --output deno-2.0.0-rc.0 2.0.0-rc.0 直近の変更点について コミットログを参考に、v2.0.0-rc.0に入っている可能性がありそうな内容について紹介します ⚠️ここで書いている内容には推測も含まれています。もし機能が入っていなそうでしたら、すみません🙏 DENO_FUTURE=1設定時の振る舞いのデフォルト化 DENO_FUTURE=1を設定した際の振る舞いがデフォルト化されたようです。 BREAKING: DENO_FUTURE=1 by default, or welcome to Deno 2.0 (#25213) 具体的には、以下のような変更がデフォルトで適用されます: Deno.*配下の非推奨APIが削除されます window変数が削除されます FFIやWebGPU APIなどが--unstable-*なしでも有効化されます Import Assertionが無効化されます package.jsonがあればBYONMがデフォルトで有効化されます --node-modulesオプション Deno v2 向けに--node-modulesというフラグが追加されています。 ⚠️上記のコミットログ内に含まれているため紹介しますが、試したところうまく動いていないようにも見えるので、もしかしたらこの変更はまだv2.0.0-rc.0には入っていない可能性もあるかもしれません🙏 feat(config): Node modules option for 2.0 (#25299) 以下の3種類のモードが指定できるようです: モード 説明 備考 local-auto おそらく、Denoがnode_modules/を作成してくれるモード local-manual おそらく、BYONMが有効化されます v2ではpackage....

September 1, 2024