JSer.info #664 - Rollup 4.0.0がリリースされました。
Node.js 14/16のサポート終了、Acornの代わりにSWCをパーサに使うように変更されています。
SWC利用に伴うオプションの削除や非推奨なオプションの削除などが含まれています。
Viteの現在と今後についてがViteConfで発表されています。
ViteはDevビルドにesbuild、ProdビルドにRollupを使うためビルド結果に差異が出やすいなどの問題があります。
そのため、Rollup互換を意識したRolldownというBundlerをRustで開発するという話。
よく似た話としてwebpack互換のRust実装として開発しているRspackがあります。
ViteではRspackチームと協力して進める予定で、RolldownはRollup互換を目的にして開発していくそうです。
esbuild/webpack/Rollup/Parcelなどの現在のbundlerのアーキテクチャや拡張性などについてはRspackの開発チームがまとめた次の記事が詳しくまとまっています。
pnpm v8.9.0がリリースされました。
pnpm v8.9.0では、キャッシュ(Store)からパッケージをコピーする際にclonefile/reflinksを使うことでインストール速度の改善されています。
macOSのAPFSやWindowsのDev Driveといったファイルシステムでは、Copy on Writeの仕組みがサポートされています。
pnpm v8.9.0では、これらのファイルシステムを利用している場合にキャッシュからのインストール速度が改善されています。
JSer.infoをサポートするには
- 😘 知り合いにJSer.infoをおすすめする
- ❤️ GitHub Sponsorsで@azuのスポンサーになる
- 🐦 X(Twitter)で@jser_infoをフォローする
JSer.info Sponsors
JSer.info SponsorsはGitHub SponsorsとしてJSer.infoを支援してくれている方々です。
ヘッドライン
Announcing TypeScript 5.3 Beta - TypeScript
devblogs.microsoft.com/typescript/announcing-typescript-5-3-beta/
TypeScript 5.3 betaリリース。
Stage 3のImport Attributesをサポート、resolution-mode
を///
コメントで指定できるように。
switch(true)
でのNarrowingをサポート、[Symbol.hasInstance]
とinsteanceof
を使ったNarrowingをサポート。
パッケージ内のbundleファイルの重複を避けることで、パッケージサイズの改善など。
Release v4.0.0 · rollup/rollup
github.com/rollup/rollup/releases/tag/v4.0.0
Rollup v4.0.0リリース。
Node.js 14/16のサポート終了、パーサにAcornの代わりにSWCを使うように変更。
非推奨なオプションの削除など
Chrome 119 beta - Chrome for Developers
developer.chrome.com/en/blog/chrome-119-beta/
Chroem 119 betaリリース。
WebSQLの削除、SVGUseElement
でのData URLのサポート削除、非標準なshadowroot
属性の削除。
CSSでは、:user-valid
/:user-invalid
の擬似クラスをサポート。
CookieのExpiresの最大値を400日にする変更を過去分に対しても反映。
Origin Trialとしてwindow.open()
にfullscreen
パラメータを追加など
Release v8.9.0 · pnpm/pnpm
github.com/pnpm/pnpm/releases/tag/v8.9.0
pnpm v8.9.0リリース。
JSONでinstallation scriptsを許可するパッケージを指定できるpnpm.onlyBuiltDependenciesFile
オプションの追加。
キャッシュからコピー時にreflinksを使うことでインストール速度の改善など。
Release v1.8.0 - Bifröst · solidjs/solid
github.com/solidjs/solid/releases/tag/v1.8.0
Solid v1.8.0リリース。
Streaming Serialization/Hydrationの改善。
<!--#-->
というコメントは、NginxなどのServer Side Includesで使われている構文で衝突していたため、<!--$-->
に変更された。
Japa
Node.js向けのテストフレームワーク。
Unit Testの機能に加え、プラグインとしてAPIのモック機能、Playwrightを使ったブラウザテスト、TypeScriptの型定義のテスト、Snapshot Testingなどの機能を持つ
アーティクル
Next.js 13 vs Remix: An In-depth case study
prateeksurana.me/blog/nextjs-13-vs-remix-an-in-depth-case-study/
Remix v2とNext.jsで同じアプリケーションを作りながら違いについて見ていく記事。
ルーティングとファイル構造、データの取得、ストリーミング、データの更新、エラー処理、キャッシュなどについて
A comprehensive guide to the dangers of Regular Expressions in JavaScript | Sonar
www.sonarsource.com/blog/vulnerable-regular-expressions-javascript/
正規表現のバックトラッキングの問題について
The Hidden Performance Cost of NodeJS and GraphQL
www.softwareatscale.dev/p/the-hidden-performance-cost-of-nodejs
GraphQLでresolverの処理が増えるほどパフォーマンスが悪くなった原因を調査した記事。
resolver内でPromiseの多用とasync_hooks
の利用がオーバーヘッドと関連しているという話。
スライド、動画関係
ViteConf
viteconf.org/23/replay/welcome
ViteConfの動画一覧
State of Vite (ViteConf 2023) - Google スライド
docs.google.com/presentation/d/1oZnjsPBnb3OB2HxU88vYkZLa54GV-xNKrF8XkOIqLAU/mobilepresent#slide=id.p
Viteの現在と今後について。
ViteはDevビルドにesbuild、ProdビルドにRollupを使うためビルド結果に差異が出やすいなどの問題がある。
そのため、Rollup互換を意識したRolldownというBundlerをRustで開発するという話。
Rspackチームと協力して進める予定で、
Rspackはwebpack互換であり、RolldownはRollup互換を目的にしている。
- Design Trade-offs in Bundler: The Rationale Behind Creating Rspack · web-infra-dev/wg · Discussion #1
- rolldown-rs
- Why Vite | Vite
ソフトウェア、ツール、ライブラリ関係
nksaraf/vinxi: The JavaScript Server SDK
Bun.App
をインスパイアしたサーバメタフレームワーク。
ルーターを定義しパスごとにstatic/build/nodeなどのモードとハンドラーを定義し、定義に従ってビルドやサーバをビルドする。
BundlerにVite、サーバにNitroを使い、特定のUIフレームワークに依存しない仕組みを作ること目的にしている。
arktypeio/arktype: TypeScript's 1:1 validator, optimized from editor to runtime
TypeScriptの型定義の構文をスキーマのDSLとして利用するバリデーションライブラリ。
スキーマの型として文字列を渡し、文字列の中にあるキーワードや演算子をパースして、型として解釈してくれる。