Fork me on GitHub

2023-10-10のJS: Rollup 4.0.0、Viteの今後(Rustify Vite)、pnpm v8.9.0

Edit on GitHub 編集履歴を見る

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 Sponsors

JSer.info SponsorsGitHub SponsorsとしてJSer.infoを支援してくれている方々です。


ヘッドライン


Announcing TypeScript 5.3 Beta - TypeScript

devblogs.microsoft.com/typescript/announcing-typescript-5-3-beta/

TypeScript ReleaseNote

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 ReleaseNote

Rollup v4.0.0リリース。
Node.js 14/16のサポート終了、パーサにAcornの代わりにSWCを使うように変更。
非推奨なオプションの削除など


Chrome 119 beta - Chrome for Developers

developer.chrome.com/en/blog/chrome-119-beta/

Chrome ReleaseNote

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 ReleaseNote

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 JavaScript library ReleaseNote

Solid v1.8.0リリース。
Streaming Serialization/Hydrationの改善。
<!--#-->というコメントは、NginxなどのServer Side Includesで使われている構文で衝突していたため、<!--$-->に変更された。


Japa

japa.dev/docs/introduction

JavaScript nodejs testing library Tools

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/

React Remix Next.js article

Remix v2とNext.jsで同じアプリケーションを作りながら違いについて見ていく記事。
ルーティングとファイル構造、データの取得、ストリーミング、データの更新、エラー処理、キャッシュなどについて


A comprehensive guide to the dangers of Regular Expressions in JavaScript | Sonar

www.sonarsource.com/blog/vulnerable-regular-expressions-javascript/

JavaScript RegExp article

正規表現のバックトラッキングの問題について


The Hidden Performance Cost of NodeJS and GraphQL

www.softwareatscale.dev/p/the-hidden-performance-cost-of-nodejs

nodejs Promises performance article

GraphQLでresolverの処理が増えるほどパフォーマンスが悪くなった原因を調査した記事。
resolver内でPromiseの多用とasync_hooksの利用がオーバーヘッドと関連しているという話。


スライド、動画関係


ViteConf

viteconf.org/23/replay/welcome

vite Conference video

ViteConfの動画一覧


State of Vite (ViteConf 2023) - Google スライド

docs.google.com/presentation/d/1oZnjsPBnb3OB2HxU88vYkZLa54GV-xNKrF8XkOIqLAU/mobilepresent#slide=id.p

vite slide Rust rollup bundler

Viteの現在と今後について。
ViteはDevビルドにesbuild、ProdビルドにRollupを使うためビルド結果に差異が出やすいなどの問題がある。
そのため、Rollup互換を意識したRolldownというBundlerをRustで開発するという話。
Rspackチームと協力して進める予定で、
Rspackはwebpack互換であり、RolldownはRollup互換を目的にしている。


ソフトウェア、ツール、ライブラリ関係


nksaraf/vinxi: The JavaScript Server SDK

github.com/nksaraf/vinxi

vite server library

Bun.Appをインスパイアしたサーバメタフレームワーク。
ルーターを定義しパスごとにstatic/build/nodeなどのモードとハンドラーを定義し、定義に従ってビルドやサーバをビルドする。
BundlerにVite、サーバにNitroを使い、特定のUIフレームワークに依存しない仕組みを作ること目的にしている。


arktypeio/arktype: TypeScript's 1:1 validator, optimized from editor to runtime

github.com/arktypeio/arktype

TypeScript library

TypeScriptの型定義の構文をスキーマのDSLとして利用するバリデーションライブラリ。
スキーマの型として文字列を渡し、文字列の中にあるキーワードや演算子をパースして、型として解釈してくれる。


この記事へ修正リクエストをする
JSer.info Slackに参加する