O hirunewani blog

Frontend Weekly 2025-06-06

Created at

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に置き換え可能。

出展:Announcing 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 APItest.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-suppressionsCLIオプションを追加。未使用のサプレッションをエラーとして報告せず、終了コードにも影響を与えないように。

# 未使用のサプレッションを無視
eslint --pass-on-unpruned-suppressions .

また、5つのコアルールにTypeScript構文サポートを追加:

  • func-style: TypeScript固有のオプションallowTypeAnnotationを追加し、オーバーロードされた関数宣言を無視
  • no-magic-numbers: ignoreEnumsignoreNumericLiteralTypesignoreReadonlyClassPropertiesignoreTypeIndexesオプションを追加
  • no-shadow: ignoreTypeValueShadowignoreFunctionTypeParameterNameValueShadowオプションを追加
  • no-use-before-define: enumstypedefsignoreTypeReferencesオプションを追加
  • prefer-arrow-callback: TypeScriptサポートを追加

出展:ESLint 9.28.0 released

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