From 57e4f29e7e673d77dbabc8c6849bcd850ddab4cc Mon Sep 17 00:00:00 2001 From: Kato Hiroki Date: Wed, 17 Dec 2025 09:36:29 +0000 Subject: [PATCH] build(deps-dev): Bump pnpm from 10.25.0 to 10.26.0 (#2967) --- .../bump-pnpm-from-v10.25-to-v10.26/plan.md | 189 ++++++++++++++++++ package.json | 4 +- pnpm-lock.yaml | 10 +- 3 files changed, 196 insertions(+), 7 deletions(-) create mode 100644 docs/dev-notes/2025-12-17/bump-pnpm-from-v10.25-to-v10.26/plan.md diff --git a/docs/dev-notes/2025-12-17/bump-pnpm-from-v10.25-to-v10.26/plan.md b/docs/dev-notes/2025-12-17/bump-pnpm-from-v10.25-to-v10.26/plan.md new file mode 100644 index 000000000..f8e746520 --- /dev/null +++ b/docs/dev-notes/2025-12-17/bump-pnpm-from-v10.25-to-v10.26/plan.md @@ -0,0 +1,189 @@ +# pnpm 10.25 → 10.26 アップデート計画 + +## 調査期間 + +- 2025-12-17 + +## 概要 + +pnpm 10.26リリースの主要な変更を調査し、本プロジェクトへの影響範囲を確認。 + +## Semi-breaking変更(2件) + +### 1. Git-hosted依存関係のprepareスクリプト実行制限 + +- **PR**: [#10288](https://github.com/pnpm/pnpm/pull/10288) +- **変更内容**: Git URLから取得した依存関係(`git+ssh://`など)は、`onlyBuiltDependencies`に明示的に登録されない限り、prepareスクリプト実行がブロックされる +- **本プロジェクトへの影響**: ✅ **なし** + - 理由: package.jsonにgit+で始まる依存関係がない + - onlyBuiltDependencies登録者: `@prisma/client`, `@prisma/engines`, `esbuild`, `prisma`, `puppeteer`(すべてNPMレジストリパッケージ) + +### 2. HTTP tarball依存関係のintegrity hash検証 + +- **PR**: [#10287](https://github.com/pnpm/pnpm/pull/10287) +- **変更内容**: HTTPタイプのURL(例: `https://example.com/package.tgz`)から取得した依存関係について、integrity hashが生成・lockfileに保存され、後続インストール時にサーバーからの改ざんコンテンツ配信を防止 +- **本プロジェクトへの影響**: ✅ **なし** + - 理由: package.jsonに`https://`で直接tgzファイルを指すURL依存関係がない + +## 主要な機能追加 + +### 1. blockExoticSubdeps設定 + +- **PR**: [#10265](https://github.com/pnpm/pnpm/pull/10265) +- **機能**: トランザクティブ依存関係内のexotic protocol(git+ssh等のURL)解決を禁止できる新オプション +- **用途**: サプライチェーンセキュリティ向上 +- **本プロジェクトでの必要性**: 現在不要(exotic protocolの依存関係がないため) + +### 2. allowBuilds設定 + +- **PR**: [#10311](https://github.com/pnpm/pnpm/pull/10311) +- **機能**: `onlyBuiltDependencies`と`ignoredBuiltDependencies`の機能を統一した新オプション +- **形式**: パッケージマッチャーをキーに、true/falseでスクリプト実行を許可/禁止 + ```yaml + allowBuilds: + esbuild: true + core-js: false + ``` +- **互換性**: 既存の`onlyBuiltDependencies`設定は継続して機能(後方互換性あり) + +### 3. packコマンドに--dry-runフラグ追加 + +- **PR**: [#10301](https://github.com/pnpm/pnpm/issues/10301) +- **機能**: パッケージングを実行せず検証のみ行うオプション + +## 影響範囲分析 + +### 現在の設定 + +```yaml +# pnpm-workspace.yaml +onlyBuiltDependencies: + - '@prisma/client' + - '@prisma/engines' + - esbuild + - prisma + - puppeteer + +# package.json +'packageManager': 'pnpm@10.22.0' +``` + +### 影響を受けるコンポーネント + +- ✅ **なし** - Semi-breaking変更は本プロジェクトに影響しない + +## アップデート手順 + +### ステップ1: バージョンアップ + +1. `package.json`の`packageManager`フィールドを更新 + - 現在: `pnpm@10.22.0` + - 新規: `pnpm@10.26.0` + +2. `pnpm install`を実行して依存関係を再解決 + +### ステップ2: lockfileの確認 + +- `pnpm-lock.yaml`を確認して、integrity hashが正しく記録されているか確認 +- 特に重要: HTTP URLから取得されたパッケージがある場合、integrity fieldが追加されているか + +### ステップ3: 動作検証 + +#### ビルド・実行テスト + +```bash +pnpm install +pnpm build +pnpm dev +``` + +#### ユニットテスト + +```bash +pnpm test:unit +``` + +#### 統合テスト + +```bash +pnpm test:integration +``` + +#### lint・format確認 + +```bash +pnpm lint +pnpm format +``` + +### ステップ4: Prismaスキーマ確認 + +- `postinstall`スクリプトで`prisma generate`が実行されることを確認 +- `@prisma/client`のビルドが正常に完了していることを確認 + +## テスト項目 + +| 項目 | テスト内容 | 期待結果 | +| ---------------- | ------------------------------ | --------------------------------------- | +| インストール | `pnpm install`実行 | 依存関係が正常にインストールされる | +| ビルド | `pnpm build`実行 | ビルド成功、成果物が生成される | +| 開発サーバー起動 | `pnpm dev`実行 | 開発サーバーが正常に起動 | +| ユニットテスト | `pnpm test:unit`実行 | すべてのテストがパスする | +| 統合テスト | `pnpm test:integration`実行 | すべてのテストがパスする | +| Prisma | `pnpm db:studio`実行 | Prisma Studioが起動し、DBにアクセス可能 | +| Lint/Format | `pnpm lint`と`pnpm format`実行 | エラーがなく、形式が統一される | + +## 追加確認事項 + +### package.json依存関係の詳細確認 + +- ✅ Git URLベースの依存関係: **なし** +- ✅ HTTP tarball URLベースの依存関係: **なし** +- ✅ exotic protocol依存関係: **なし** + +### pnpm設定の確認 + +- ✅ `blockExoticSubdeps`設定: **不要**(exoticプロトコルの依存関係がないため) +- ✅ `allowBuilds`設定への移行: **不要**(既存の`onlyBuiltDependencies`で問題ない) + +## 結論 + +**ステータス**: ✅ **安全にアップデート可能** + +理由: + +1. Semi-breaking変更(2件)は本プロジェクトに影響しない + - Git-hosted依存関係がない + - HTTP tarball URL依存関係がない +2. 既存の設定(`onlyBuiltDependencies`)は継続して機能 +3. 新機能は本プロジェクト運用上、現在は不要 + +## 実装予定 + +- [x] `package.json`の`packageManager`フィールドを`pnpm@10.26.0`に更新 +- [x] `pnpm install`実行 +- [x] lockfile確認 +- [x] テスト実行(ビルド・ユニット・統合) +- [ ] PR作成・レビュー + +## 実行結果 + +### 実行内容 + +1. **package.json更新**: `pnpm@10.22.0` → `10.26.0` (packageManagerフィールド)、`pnpm@10.25.0` → `10.26.0` (devDependencies) +2. **pnpm install**: 成功 - postinstallスクリプトでprisma generateを実行 +3. **pnpm build**: 成功 - SSR/CSR両環境でビルド完了 +4. **pnpm dev**: 成功 - vite dev サーバー起動確認 +5. **pnpm test:unit**: 全テストパス (1745テスト中1744合格、1スキップ) +6. **pnpm lint**: 警告のみで合格 (38個のsvelteコンポーネント警告は既存) +7. **pnpm format**: フォーマット確認完了(変更なし) +8. **Prismaスキーマ**: 正常生成確認 - `prisma/.fabbrica/index.ts` 更新 (2025-12-17 09:32) + +### 結論 + +**✅ アップデート完了・動作確認OK** + +- Semi-breaking変更の影響なし(Git/HTTP URL依存関係なし) +- 既存設定(onlyBuiltDependencies)で継続動作 +- 新機能(blockExoticSubdeps、allowBuilds)は現在不要 +- 全テスト・ビルドプロセス正常 diff --git a/package.json b/package.json index 1bcb06bcb..b13bfd908 100644 --- a/package.json +++ b/package.json @@ -53,7 +53,7 @@ "jsdom": "27.3.0", "lint-staged": "16.2.7", "nock": "14.0.10", - "pnpm": "10.25.0", + "pnpm": "10.26.0", "prettier": "3.7.4", "prettier-plugin-svelte": "3.4.1", "prettier-plugin-tailwindcss": "0.6.14", @@ -96,7 +96,7 @@ "vercel": "50.0.1", "xss": "1.0.15" }, - "packageManager": "pnpm@10.22.0", + "packageManager": "pnpm@10.26.0", "engines": { "node": ">=20.0.0" } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 46464c3ae..e0fdacc67 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -145,8 +145,8 @@ importers: specifier: 14.0.10 version: 14.0.10 pnpm: - specifier: 10.25.0 - version: 10.25.0 + specifier: 10.26.0 + version: 10.26.0 prettier: specifier: 3.7.4 version: 3.7.4 @@ -4231,8 +4231,8 @@ packages: engines: {node: '>=18'} hasBin: true - pnpm@10.25.0: - resolution: {integrity: sha512-XoJjkCevN8+DIGG8xtY5whljRIjg8rrr54UCink957Ul/80/f/V09emGBlTgmP6FK6isXdXO/hdn0joCCpL1AQ==} + pnpm@10.26.0: + resolution: {integrity: sha512-Oz9scl6+cSUGwKsa1BM8+GsfS2h+/85iqbOLTXLjlUJC5kMZD8UfoWQpScc19APevUT1yw7dZXq+Y6i2p+HkAg==} engines: {node: '>=18.12'} hasBin: true @@ -9489,7 +9489,7 @@ snapshots: optionalDependencies: fsevents: 2.3.2 - pnpm@10.25.0: {} + pnpm@10.26.0: {} points-on-curve@0.2.0: {}