はじめに

このブログの依存パッケージを、pnpmで更新しました。 前回の更新から5日後の作業です。

今回はpnpm outdatedで更新できるパッケージを確認し、 pnpm update --latestで更新しました。 ただし、すべてを無条件に最新版へ上げるのではなく、 型チェックの互換性も確かめています。

更新したパッケージ

次の6つを更新しました。

パッケージ 更新前 更新後
@astrojs/mdx 8.0.3 8.1.0
astro 7.3.8 7.4.0
cssnano 9.8.0 9.9.0
postcss 8.5.30 8.5.31
sass 1.105.1 1.105.2
wrangler 4.151.0 4.151.1

pnpm update --latestは、package.jsonのバージョン指定と pnpm-lock.yamlを一緒に更新します。 そのため、依存の指定だけが新しくなり、インストール時に異なる版が 選ばれる状態を避けられます。

TypeScript 7は見送る

pnpm outdatedでは、TypeScript 7.0.2も最新版として表示されました。 いったん更新してpnpm checkを実行したところ、 astro checkがTypeScript 7に対応していないため失敗しました。

現在使っている@astrojs/checkのpeer dependencyも、 TypeScript 5または6を対象にしています。 この状態でTypeScript 7を採用すると、 プロジェクトの型チェックを通せません。

そこでTypeScriptは6.0.3のままにしました。 pnpm outdatedには引き続きTypeScript 7が表示されますが、 チェックツールが対応するまで更新を保留します。

更新後の確認

更新後にテスト、型チェック、ビルドを実行しました。

  • pnpm test:221件すべて成功
  • pnpm check:エラーなし
  • pnpm build:172ページを生成して成功
  • pnpm peers check:peer dependencyの問題なし

型チェックでは、Astroのコンテンツスキーマで使っているzに 非推奨の案内が出ています。 エラーではありませんが、別途対応を検討します。

おわりに

今回の更新では、Astroを7.4.0に上げ、 関連するMDX連携やビルドツールも更新できました。 最新版が公開されていても、開発ツールの対応状況を確認し、 プロジェクトのチェックを維持できる版を選ぶことが大切です。

依存パッケージの更新後は、ロックファイルだけでなく、 テスト、型チェック、実際のビルドまで通ることを確かめています。