Frontend Weekly 2025-06-06
Rolldown-Viteの技術プレビュー公開、Vitest 3.2のリリース、Astro 5.9.0の新機能、ESLint 9.28.0の改善、Jest 30のリリースについて。
Rolldown-Vite技術プレビュー公開
日付:2025年5月30日
Rustベースの次世代バンドラーRolldownを搭載したViteの技術プレビュー版が公開。rolldown-vite
パッケージとして提供され、既存のViteプロジェクトでvite
パッケージの代わりに使用可能。本番ビルド時間が3倍から16倍の高速化、メモリ使用量も最大100倍削減を実現。
{
"dependencies": {
"vite": "npm:rolldown-vite@latest"
}
}
esbuild
がオプショナル依存となり、内部の変換や最適化はOxcで処理。VitePressやメタフレームワークではoverrides
を使用してvite
パッケージをrolldown-vite
に置き換え可能。
Vitest 3.2リリース
日付:2025年6月2日
Vitest 3.2がリリース。Browser ModeとTypeScriptサポートの改善に焦点を当て、新しいメソッドや設定オプションを追加。workspace
設定が非推奨となり、代わりにprojects
オプションの使用を推奨。
import { defineConfig } from "vitest/config";
export default defineConfig({
test: {
projects: [
{ test: { name: "Unit" } },
{ test: { name: "Integration" } },
],
},
});
主な新機能として、テストにカスタムメッセージや添付ファイルを追加できるAnnotation API、test.extend
フィクスチャのスコープ指定(file
またはworker
)、プロジェクト名のカスタムカラー設定、カスタムブラウザロケーターAPIの追加など。
test('hello world', async ({ annotate }) => {
// テストにアノテーションを付与できる
await annotate('this is my test')
if (condition) {
await annotate('this should\'ve errored', 'error')
}
const file = createTestSpecificFile()
await annotate('creates a file', { body: file })
})
出展:Vitest 3.2
Astro 5.9.0リリース
日付:2025年6月5日
Astro 5.9.0がリリース。実験的なContent Security Policy(CSP)サポートの追加、コンテンツローダーでのMarkdownレンダラーの提供、アダプターの警告/エラー抑制オプションの追加など。
// astro.config.mjs
import { defineConfig } from 'astro/config';
export default defineConfig({
experimental: {
csp: true,
},
});
CSPはXSS攻撃からの保護など、リソースのダウンロードと実行を細かく制御できる重要な機能。Astroの処理済みスクリプトやスタイルのデフォルトのセキュリティを強化し、コンテンツタイプの追加設定も可能。静的ページ、動的ページ、SPAなど、すべてのAstroレンダリング環境で動作。
出展:Astro 5.9.0
ESLint 9.28.0リリース
日付:2025年5月30日
ESLint 9.28.0がリリース。バルクサプレッション機能の改善として--pass-on-unpruned-suppressions
CLIオプションを追加。未使用のサプレッションをエラーとして報告せず、終了コードにも影響を与えないように。
# 未使用のサプレッションを無視
eslint --pass-on-unpruned-suppressions .
また、5つのコアルールにTypeScript構文サポートを追加:
func-style
: TypeScript固有のオプションallowTypeAnnotation
を追加し、オーバーロードされた関数宣言を無視no-magic-numbers
:ignoreEnums
、ignoreNumericLiteralTypes
、ignoreReadonlyClassProperties
、ignoreTypeIndexes
オプションを追加no-shadow
:ignoreTypeValueShadow
とignoreFunctionTypeParameterNameValueShadow
オプションを追加no-use-before-define
:enums
、typedefs
、ignoreTypeReferences
オプションを追加prefer-arrow-callback
: TypeScriptサポートを追加
Jest 30リリース
日付:2025年6月4日
Jest 30がリリース。大幅なパフォーマンス向上とメモリ使用量削減を実現。あるTypeScriptアプリケーションでサーバーテストが37%高速化(1350秒→850秒)、メモリ使用量が77%削減(7.8GB→1.8GB)を記録。
Node.js 14、16、19、21のサポートを終了し、TypeScript最低要件を5.4に引き上げ。jest-environment-jsdom
をjsdom 21から26にアップグレード。.mts
と.cts
ファイルをデフォルトサポート。
新機能としてexpect.arrayOf
非対称マッチャー、JavaScriptのusing
キーワードサポート、jest.advanceTimersToNextFrame()
によるrequestAnimationFrameテスト支援、設定可能なテストリトライ機能を追加。
// 配列要素の型チェック
expect(someArray).toEqual(expect.arrayOf(expect.any(Number)));
// リソース管理構文
test('logs a warning', () => {
using spy = jest.spyOn(console, 'warn');
doSomeThingWarnWorthy();
expect(spy).toHaveBeenCalled();
});
Globals cleanup機能により、テストファイル間でのメモリリークを防止。globalsCleanup: 'on'
設定でメモリ使用量とパフォーマンスの大幅改善が可能。
出展:Jest 30: Faster, Leaner, Better
Storybook 9リリース
日付:2025年6月3日
Storybook 9リリース。Interaction、Accessibility、Visual、Coverageテストをワンクリックで実行できる統合テストウィジェットを搭載し、依存関係構造の簡素化によりStorybook 8と比較して48%の軽量化を実現。Vitestとの統合によるブラウザベースのテスト環境、ストーリーをtagでフィルタリング・整理する機能なども追加。
破壊的な変更として、@storybook/addon-actions
や@storybook/test
を含む多くのパッケージの統廃合などが行われた。移行する際はマイグレーションガイドの確認が必要。
出展:Storybook 9