Frontend Weekly 2024-10-11
Deno v2.0、Tauri 2.0、npmのdevEnginesフィールドのサポートなどについて
Deno v2.0
Deno v2がリリースされた。
windowオブジェクトの削除
ブラウザ互換を目的としてグローバルに追加されたが混乱の元になっていたため削除された。 現在はglobalThisの利用を推奨している。
processオブジェクトのグローバルへの追加
Node.js互換を目的として、グローバルに追加された。
今までnode:process
からのインポートする必要があった。
deno add
のプレフィックス指定
deno add
でパッケージをインストールする際に、JSRとNPMどちらのレジストリを利用するかjsr:
またはnpm:
のプレフィックスの指定が必須になった。省略した場合、JSRにあればjsr:
が提案され、NPMにしかなければnpm:
が提案される。
$ deno add @hono/hono
error: @hono/hono is missing a prefix. Did you mean `deno add jsr:@hono/hono`?
また、npm:
を指定し、package.json
が存在する場合、deno.json
ではなくpackage.json
に依存関係が追加されるようになった。
deno remove
の追加
依存関係を削除するdeno remove
コマンドが追加された。
プレフィックスの指定は不要。package.json
がある場合、package.json
から削除される。
deno install --entrypoint
の追加
エントリーポイントとして指定したファイルで使われているモジュール全てをインストール出来るdeno install --entrypoint
が追加された。
その他
他にimport assertion
やdeno bundle
、deno vendor
など非推奨であった機能の廃止、--unstable
や--lock-write
などのCLIフラグの非推奨化、既存の機能の改善や、Node.jsとの互換性強化などが行われている。
Denoの高速化については、公式の発表を見るとBunより速いように見えるが、現状個人で検証している方のデータを参照および自身で軽く試してところ、Bunより高速ということはないように思う。
Tauri 2.0
Tauri 2.0がリリースされた。
https://v2.tauri.app/blog/tauri-20/
Tauriは、Electronの代替を目指すRust製のフレームワークである。
モバイルのサポート
以前はTauri Mobileに分かれていたが統合され、デスクトップアプリケーションに加えて、iOSとAndroidに対応したモバイルアプリケーションの提供が可能になった。モバイルデバイスおよびエミュレータでのHMRもサポートしている。
ESLint now officially supports linting of JSON and Markdown
ESLintがJSONとMarkdownを公式にサポートしたことを改めて紹介している。
@eslint/json
と@eslint/markdown
の利用方法に加えて、カスタムルールの作成についても言及している。
https://eslint.org/blog/2024/10/eslint-json-markdown-support/
公式がサポートしているルールはあまり多くないが、@eslint/json
はjsoncとjson5に対応している。
また@eslint/markdown
ではCommonmarkフォーマットとGFM(GitHub-Flavored Markdown)フォーマットを区別して対応をしている。
npm v10.9.0 devEngines
npm v10.9.0でdevEngines
フィールドが追加された。
https://github.com/npm/cli/releases/tag/v10.9.0
devEngines
を利用することで、開発時のランタイムとパッケージマネージャを制御することが出来る。
https://docs.npmjs.com/cli/v10/configuring-npm/package-json#devengines
devEngines
は次のように利用する。
{
"devEngines": {
"runtime": {
"name": "node",
"onFail": "error"
},
"packageManager": {
"name": "npm",
"onFail": "error"
}
}
}
これは、packageManager
フィールドについての議論を元に提案された仕様を元に実装されている。