From 0fb53667c3e6d8e7953fad8ad1c7e7381151e47f Mon Sep 17 00:00:00 2001 From: Kato Hiroki Date: Tue, 16 Dec 2025 22:34:42 +0000 Subject: [PATCH 1/2] fix: Use pnpm exec instead of pnpm dlx (#2960) --- .../2025-12-17/use_pnpm_exec/plan.md | 141 ++++++++++++++++++ package.json | 5 +- pnpm-lock.yaml | 139 +++++++++-------- 3 files changed, 221 insertions(+), 64 deletions(-) create mode 100644 docs/dev-notes/2025-12-17/use_pnpm_exec/plan.md diff --git a/docs/dev-notes/2025-12-17/use_pnpm_exec/plan.md b/docs/dev-notes/2025-12-17/use_pnpm_exec/plan.md new file mode 100644 index 000000000..70e5b7f47 --- /dev/null +++ b/docs/dev-notes/2025-12-17/use_pnpm_exec/plan.md @@ -0,0 +1,141 @@ +# pnpm exec tsx を使用する決定 + +## 概要 + +Prisma seed スクリプト実行時に、従来の `pnpm dlx vite-node` から `pnpm exec tsx` への切り替えを実施しました。 + +## 背景:vite-node が非推奨となった理由 + +vite-node は本来、Nuxt 3 の SSR PoC として作成されました。その後、Vitest を実現させるための手段として機能していましたが、Vitest は Vite の公式なビルトイン Environment Module Runner に移行しました。 + +> "This project is firstly inspired by Nuxt 3's SSR implementation made by @pi0, as a PoC. Later, it made Vitest possible by providing the same pipeline as in Vite. It served the ecosystem well for a few years and later became a more generalized built-in solution as Vite Environment Module Runner. Vitest has migrated to the new official solution, which means vite-node has finished its mission. We will still keep it around for the ecosystem that built around it, but for new projects, please consider using the builtin Vite one instead." + +**出典:** [vite-node GitHub Repository](https://github.com/vitest-dev/vitest) + +## 検討した代替手段 + +### 1. Node.js ビルトイン TypeScript サポート(`--experimental-transform-types`) + +**要件への適合度:** + +- ✅ 高速に動作(ネイティブ処理) +- ✅ TypeScript をサポート +- ✅ サードパーティツール不要 + +**実装:** + +```json +"db:seed": "node --experimental-transform-types ./prisma/seed.ts" +``` + +**トラブル:** + +``` +Error [ERR_MODULE_NOT_FOUND]: Cannot find package '$lib' imported from /usr/src/app/src/lib/utils/contest.ts +``` + +Node.js v22.17.0 ではビルトイン TypeScript サポートは存在しますが、`vite.config.ts` で定義されたエイリアス(`$lib` など)を解決できません。 + +**出典:** [Node.js TypeScript Support Documentation](https://nodejs.org/api/typescript.html#type-stripping) + +### 2. tsx(選定)✅ + +**要件への適合度:** + +- ✅ 高速に動作(v24.0.0 以降の Node.js より高速) +- ✅ TypeScript をサポート +- ⚠️ サードパーティツール(ただし既に依存パッケージから利用可能) + +**実装:** + +```json +"db:seed": "pnpm exec tsx ./prisma/seed.ts" +``` + +**利点:** + +- Vite の設定(エイリアス、resolve 設定など)を活用可能 +- 既に `node_modules` 内に存在(peer dependency) +- 実行速度が高速 + +**出典:** [tsx GitHub Repository](https://tsx.is/) + +## 決定理由 + +以下の理由から `pnpm exec tsx` を選定: + +1. Vite のエイリアス設定と互換性がある +2. 既に依存パッケージから利用可能(追加インストール不要) +3. 実行速度が高速 +4. TypeScript サポートが完全 + +## Q&A + +### Q1: なぜ `pnpm exec` を使うのか(`pnpm dlx` との違い) + +**A:** `pnpm dlx` は毎回最新版をレジストリからダウンロードして実行するため、オーバーヘッドが大きいです。一方、`pnpm exec` は `node_modules/.bin/` にインストール済みのバージョンを実行するため、高速です。 + +```bash +# 毎回最新版をダウンロード(遅い) +pnpm dlx vite-node ./prisma/seed.ts + +# インストール済みバージョンを実行(高速) +pnpm exec tsx ./prisma/seed.ts +``` + +**出典:** [pnpm CLI Documentation](https://pnpm.io/cli/dlx) + +### Q2: tsx が既にインストール済みである理由 + +**A:** tsx は明示的にインストールしていないにもかかわらず、動作します。これは以下の依存パッケージが peer dependency として tsx を指定しているため: + +- `@mermaid-js/mermaid-cli` → `postcss-load-config` → `tsx 4.19.2 (peer)` +- `@testing-library/svelte` → `vite` → `tsx 4.19.2 (peer)` +- `vitest` → ... → `tsx 4.19.2 (peer)` + +pnpm は peer dependency を自動的にインストール・管理するため、明示的なインストールなしに利用可能です。 + +**出典:** [pnpm Peer Dependencies Resolution](https://pnpm.io/how-peers-are-resolved) + +### Q3: Node.js ネイティブの `--experimental-transform-types` ではダメな理由 + +**A:** Node.js ネイティブの TypeScript サポートは、型情報を削除するのみで、Vite のビルドツール機能(モジュール解決、エイリアス、ローダーなど)を提供しません。 + +本プロジェクトの `seed.ts` では以下が必要です: + +- **Vite のエイリアス:** `$lib` → `src/lib` +- **ディレクトリインポート:** `./.fabbrica` → `./.fabbrica/index.ts` +- **相対パス解決:** `../src/lib/types/task` + +Node.js 単体ではこれらを解決できないため、Vite 互換のツール(tsx など)が必要です。 + +**出典:** + +- [Node.js TypeScript Type Stripping](https://nodejs.org/api/typescript.html#type-stripping) +- [Vite Config Reference](https://vite.dev/config/) + +## 実装内容 + +### package.json の変更 + +```json +{ + "scripts": { + "db:seed": "pnpm exec tsx ./prisma/seed.ts" + } +} +``` + +### 実行方法 + +```bash +pnpm db:seed +``` + +## 参考資料 + +- vite-node: https://github.com/vitest-dev/vitest +- tsx: https://tsx.is/ +- pnpm CLI: https://pnpm.io/cli +- Node.js TypeScript: https://nodejs.org/api/typescript.html +- Vite Configuration: https://vite.dev/config/ diff --git a/package.json b/package.json index f215fd5c6..33192c56d 100644 --- a/package.json +++ b/package.json @@ -24,8 +24,8 @@ "test:integration": "playwright test", "test:unit": "vitest", "postinstall": "prisma generate", - "db:seed": "pnpm dlx vite-node ./prisma/seed.ts", - "db:studio": "pnpm dlx prisma studio", + "db:seed": "pnpm exec tsx ./prisma/seed.ts", + "db:studio": "pnpm exec prisma studio", "prepare": "husky", "coverage": "vitest run --coverage" }, @@ -65,6 +65,7 @@ "svelte-meta-tags": "4.5.0", "sveltekit-superforms": "2.27.4", "tslib": "2.8.1", + "tsx": "4.21.0", "typescript": "5.9.3", "vite": "7.3.0", "vitest": "4.0.15", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index a3da58abc..f002460c7 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -16,7 +16,7 @@ importers: version: 0.561.0(svelte@5.46.0) '@mermaid-js/mermaid-cli': specifier: 11.12.0 - version: 11.12.0(puppeteer@23.11.1(typescript@5.9.3))(tsx@4.19.2)(yaml@2.8.1) + version: 11.12.0(puppeteer@23.11.1(typescript@5.9.3))(tsx@4.21.0)(yaml@2.8.1) '@popperjs/core': specifier: 2.11.8 version: 2.11.8 @@ -25,7 +25,7 @@ importers: version: 5.22.0(prisma@5.22.0) '@testing-library/svelte': specifier: 5.2.9 - version: 5.2.9(svelte@5.46.0)(vite@7.3.0(@types/node@25.0.2)(jiti@1.21.7)(tsx@4.19.2)(yaml@2.8.1))(vitest@4.0.15) + version: 5.2.9(svelte@5.46.0)(vite@7.3.0(@types/node@25.0.2)(jiti@1.21.7)(tsx@4.21.0)(yaml@2.8.1))(vitest@4.0.15) '@types/jest': specifier: 30.0.0 version: 30.0.0 @@ -58,7 +58,7 @@ importers: version: 1.57.0 prisma-erd-generator: specifier: 2.4.2 - version: 2.4.2(@prisma/client@5.22.0(prisma@5.22.0))(puppeteer@23.11.1(typescript@5.9.3))(tsx@4.19.2)(yaml@2.8.1) + version: 2.4.2(@prisma/client@5.22.0(prisma@5.22.0))(puppeteer@23.11.1(typescript@5.9.3))(tsx@4.21.0)(yaml@2.8.1) svelte-eslint-parser: specifier: 1.4.1 version: 1.4.1(svelte@5.46.0) @@ -67,7 +67,7 @@ importers: version: 2.6.0 tailwindcss: specifier: 3.4.19 - version: 3.4.19(tsx@4.19.2)(yaml@2.8.1) + version: 3.4.19(tsx@4.21.0)(yaml@2.8.1) vercel: specifier: 50.0.1 version: 50.0.1(rollup@4.53.4)(typescript@5.9.3) @@ -89,16 +89,16 @@ importers: version: 2.3.3(@prisma/client@5.22.0(prisma@5.22.0))(magicast@0.3.5)(typescript@5.9.3) '@sveltejs/adapter-vercel': specifier: 6.2.0 - version: 6.2.0(@sveltejs/kit@2.43.8(@sveltejs/vite-plugin-svelte@6.2.1(svelte@5.46.0)(vite@7.3.0(@types/node@25.0.2)(jiti@1.21.7)(tsx@4.19.2)(yaml@2.8.1)))(svelte@5.46.0)(vite@7.3.0(@types/node@25.0.2)(jiti@1.21.7)(tsx@4.19.2)(yaml@2.8.1)))(rollup@4.53.4) + version: 6.2.0(@sveltejs/kit@2.43.8(@sveltejs/vite-plugin-svelte@6.2.1(svelte@5.46.0)(vite@7.3.0(@types/node@25.0.2)(jiti@1.21.7)(tsx@4.21.0)(yaml@2.8.1)))(svelte@5.46.0)(vite@7.3.0(@types/node@25.0.2)(jiti@1.21.7)(tsx@4.21.0)(yaml@2.8.1)))(rollup@4.53.4) '@sveltejs/kit': specifier: 2.43.8 - version: 2.43.8(@sveltejs/vite-plugin-svelte@6.2.1(svelte@5.46.0)(vite@7.3.0(@types/node@25.0.2)(jiti@1.21.7)(tsx@4.19.2)(yaml@2.8.1)))(svelte@5.46.0)(vite@7.3.0(@types/node@25.0.2)(jiti@1.21.7)(tsx@4.19.2)(yaml@2.8.1)) + version: 2.43.8(@sveltejs/vite-plugin-svelte@6.2.1(svelte@5.46.0)(vite@7.3.0(@types/node@25.0.2)(jiti@1.21.7)(tsx@4.21.0)(yaml@2.8.1)))(svelte@5.46.0)(vite@7.3.0(@types/node@25.0.2)(jiti@1.21.7)(tsx@4.21.0)(yaml@2.8.1)) '@sveltejs/vite-plugin-svelte': specifier: 6.2.1 - version: 6.2.1(svelte@5.46.0)(vite@7.3.0(@types/node@25.0.2)(jiti@1.21.7)(tsx@4.19.2)(yaml@2.8.1)) + version: 6.2.1(svelte@5.46.0)(vite@7.3.0(@types/node@25.0.2)(jiti@1.21.7)(tsx@4.21.0)(yaml@2.8.1)) '@tailwindcss/forms': specifier: 0.5.10 - version: 0.5.10(tailwindcss@3.4.19(tsx@4.19.2)(yaml@2.8.1)) + version: 0.5.10(tailwindcss@3.4.19(tsx@4.21.0)(yaml@2.8.1)) '@testing-library/jest-dom': specifier: 6.9.1 version: 6.9.1 @@ -167,7 +167,7 @@ importers: version: 5.46.0 svelte-5-ui-lib: specifier: 0.12.2 - version: 0.12.2(svelte@5.46.0)(tailwindcss@3.4.19(tsx@4.19.2)(yaml@2.8.1)) + version: 0.12.2(svelte@5.46.0)(tailwindcss@3.4.19(tsx@4.21.0)(yaml@2.8.1)) svelte-check: specifier: 4.3.4 version: 4.3.4(picomatch@4.0.3)(svelte@5.46.0)(typescript@5.9.3) @@ -176,19 +176,22 @@ importers: version: 4.5.0(svelte@5.46.0) sveltekit-superforms: specifier: 2.27.4 - version: 2.27.4(@sveltejs/kit@2.43.8(@sveltejs/vite-plugin-svelte@6.2.1(svelte@5.46.0)(vite@7.3.0(@types/node@25.0.2)(jiti@1.21.7)(tsx@4.19.2)(yaml@2.8.1)))(svelte@5.46.0)(vite@7.3.0(@types/node@25.0.2)(jiti@1.21.7)(tsx@4.19.2)(yaml@2.8.1)))(@types/json-schema@7.0.15)(esbuild@0.27.1)(svelte@5.46.0)(typescript@5.9.3) + version: 2.27.4(@sveltejs/kit@2.43.8(@sveltejs/vite-plugin-svelte@6.2.1(svelte@5.46.0)(vite@7.3.0(@types/node@25.0.2)(jiti@1.21.7)(tsx@4.21.0)(yaml@2.8.1)))(svelte@5.46.0)(vite@7.3.0(@types/node@25.0.2)(jiti@1.21.7)(tsx@4.21.0)(yaml@2.8.1)))(@types/json-schema@7.0.15)(esbuild@0.27.1)(svelte@5.46.0)(typescript@5.9.3) tslib: specifier: 2.8.1 version: 2.8.1 + tsx: + specifier: 4.21.0 + version: 4.21.0 typescript: specifier: 5.9.3 version: 5.9.3 vite: specifier: 7.3.0 - version: 7.3.0(@types/node@25.0.2)(jiti@1.21.7)(tsx@4.19.2)(yaml@2.8.1) + version: 7.3.0(@types/node@25.0.2)(jiti@1.21.7)(tsx@4.21.0)(yaml@2.8.1) vitest: specifier: 4.0.15 - version: 4.0.15(@edge-runtime/vm@3.2.0)(@types/node@25.0.2)(@vitest/ui@4.0.15)(jiti@1.21.7)(jsdom@26.1.0)(tsx@4.19.2)(yaml@2.8.1) + version: 4.0.15(@edge-runtime/vm@3.2.0)(@types/node@25.0.2)(@vitest/ui@4.0.15)(jiti@1.21.7)(jsdom@26.1.0)(tsx@4.21.0)(yaml@2.8.1) zod: specifier: 3.25.76 version: 3.25.76 @@ -5051,6 +5054,11 @@ packages: engines: {node: '>=18.0.0'} hasBin: true + tsx@4.21.0: + resolution: {integrity: sha512-5C1sg4USs1lfG0GFb2RLXsdpXqBSEhAaA/0kPL01wxzpMqLILNxIxIOKiILz+cdg/pLnOUxFYOR5yhHU666wbw==} + engines: {node: '>=18.0.0'} + hasBin: true + type-check@0.4.0: resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} engines: {node: '>= 0.8.0'} @@ -5970,9 +5978,9 @@ snapshots: react-dom: 19.2.0(react@19.2.0) use-sync-external-store: 1.6.0(react@19.2.0) - '@headlessui/tailwindcss@0.2.2(tailwindcss@3.4.19(tsx@4.19.2)(yaml@2.8.1))': + '@headlessui/tailwindcss@0.2.2(tailwindcss@3.4.19(tsx@4.21.0)(yaml@2.8.1))': dependencies: - tailwindcss: 3.4.19(tsx@4.19.2)(yaml@2.8.1) + tailwindcss: 3.4.19(tsx@4.21.0)(yaml@2.8.1) '@humanfs/core@0.19.1': {} @@ -6085,9 +6093,9 @@ snapshots: - encoding - supports-color - '@mermaid-js/mermaid-cli@11.12.0(puppeteer@23.11.1(typescript@5.9.3))(tsx@4.19.2)(yaml@2.8.1)': + '@mermaid-js/mermaid-cli@11.12.0(puppeteer@23.11.1(typescript@5.9.3))(tsx@4.21.0)(yaml@2.8.1)': dependencies: - '@mermaid-js/mermaid-zenuml': 0.2.2(mermaid@11.12.0)(tsx@4.19.2)(yaml@2.8.1) + '@mermaid-js/mermaid-zenuml': 0.2.2(mermaid@11.12.0)(tsx@4.21.0)(yaml@2.8.1) chalk: 5.6.2 commander: 14.0.2 import-meta-resolve: 4.2.0 @@ -6101,9 +6109,9 @@ snapshots: - tsx - yaml - '@mermaid-js/mermaid-zenuml@0.2.2(mermaid@11.12.0)(tsx@4.19.2)(yaml@2.8.1)': + '@mermaid-js/mermaid-zenuml@0.2.2(mermaid@11.12.0)(tsx@4.21.0)(yaml@2.8.1)': dependencies: - '@zenuml/core': 3.41.6(tsx@4.19.2)(yaml@2.8.1) + '@zenuml/core': 3.41.6(tsx@4.21.0)(yaml@2.8.1) mermaid: 11.12.0 transitivePeerDependencies: - '@babel/core' @@ -6558,9 +6566,9 @@ snapshots: dependencies: acorn: 8.15.0 - '@sveltejs/adapter-vercel@6.2.0(@sveltejs/kit@2.43.8(@sveltejs/vite-plugin-svelte@6.2.1(svelte@5.46.0)(vite@7.3.0(@types/node@25.0.2)(jiti@1.21.7)(tsx@4.19.2)(yaml@2.8.1)))(svelte@5.46.0)(vite@7.3.0(@types/node@25.0.2)(jiti@1.21.7)(tsx@4.19.2)(yaml@2.8.1)))(rollup@4.53.4)': + '@sveltejs/adapter-vercel@6.2.0(@sveltejs/kit@2.43.8(@sveltejs/vite-plugin-svelte@6.2.1(svelte@5.46.0)(vite@7.3.0(@types/node@25.0.2)(jiti@1.21.7)(tsx@4.21.0)(yaml@2.8.1)))(svelte@5.46.0)(vite@7.3.0(@types/node@25.0.2)(jiti@1.21.7)(tsx@4.21.0)(yaml@2.8.1)))(rollup@4.53.4)': dependencies: - '@sveltejs/kit': 2.43.8(@sveltejs/vite-plugin-svelte@6.2.1(svelte@5.46.0)(vite@7.3.0(@types/node@25.0.2)(jiti@1.21.7)(tsx@4.19.2)(yaml@2.8.1)))(svelte@5.46.0)(vite@7.3.0(@types/node@25.0.2)(jiti@1.21.7)(tsx@4.19.2)(yaml@2.8.1)) + '@sveltejs/kit': 2.43.8(@sveltejs/vite-plugin-svelte@6.2.1(svelte@5.46.0)(vite@7.3.0(@types/node@25.0.2)(jiti@1.21.7)(tsx@4.21.0)(yaml@2.8.1)))(svelte@5.46.0)(vite@7.3.0(@types/node@25.0.2)(jiti@1.21.7)(tsx@4.21.0)(yaml@2.8.1)) '@vercel/nft': 1.1.1(rollup@4.53.4) esbuild: 0.25.12 transitivePeerDependencies: @@ -6568,11 +6576,11 @@ snapshots: - rollup - supports-color - '@sveltejs/kit@2.43.8(@sveltejs/vite-plugin-svelte@6.2.1(svelte@5.46.0)(vite@7.3.0(@types/node@25.0.2)(jiti@1.21.7)(tsx@4.19.2)(yaml@2.8.1)))(svelte@5.46.0)(vite@7.3.0(@types/node@25.0.2)(jiti@1.21.7)(tsx@4.19.2)(yaml@2.8.1))': + '@sveltejs/kit@2.43.8(@sveltejs/vite-plugin-svelte@6.2.1(svelte@5.46.0)(vite@7.3.0(@types/node@25.0.2)(jiti@1.21.7)(tsx@4.21.0)(yaml@2.8.1)))(svelte@5.46.0)(vite@7.3.0(@types/node@25.0.2)(jiti@1.21.7)(tsx@4.21.0)(yaml@2.8.1))': dependencies: '@standard-schema/spec': 1.0.0 '@sveltejs/acorn-typescript': 1.0.6(acorn@8.15.0) - '@sveltejs/vite-plugin-svelte': 6.2.1(svelte@5.46.0)(vite@7.3.0(@types/node@25.0.2)(jiti@1.21.7)(tsx@4.19.2)(yaml@2.8.1)) + '@sveltejs/vite-plugin-svelte': 6.2.1(svelte@5.46.0)(vite@7.3.0(@types/node@25.0.2)(jiti@1.21.7)(tsx@4.21.0)(yaml@2.8.1)) '@types/cookie': 0.6.0 acorn: 8.15.0 cookie: 0.6.0 @@ -6585,26 +6593,26 @@ snapshots: set-cookie-parser: 2.7.1 sirv: 3.0.2 svelte: 5.46.0 - vite: 7.3.0(@types/node@25.0.2)(jiti@1.21.7)(tsx@4.19.2)(yaml@2.8.1) + vite: 7.3.0(@types/node@25.0.2)(jiti@1.21.7)(tsx@4.21.0)(yaml@2.8.1) - '@sveltejs/vite-plugin-svelte-inspector@5.0.1(@sveltejs/vite-plugin-svelte@6.2.1(svelte@5.46.0)(vite@7.3.0(@types/node@25.0.2)(jiti@1.21.7)(tsx@4.19.2)(yaml@2.8.1)))(svelte@5.46.0)(vite@7.3.0(@types/node@25.0.2)(jiti@1.21.7)(tsx@4.19.2)(yaml@2.8.1))': + '@sveltejs/vite-plugin-svelte-inspector@5.0.1(@sveltejs/vite-plugin-svelte@6.2.1(svelte@5.46.0)(vite@7.3.0(@types/node@25.0.2)(jiti@1.21.7)(tsx@4.21.0)(yaml@2.8.1)))(svelte@5.46.0)(vite@7.3.0(@types/node@25.0.2)(jiti@1.21.7)(tsx@4.21.0)(yaml@2.8.1))': dependencies: - '@sveltejs/vite-plugin-svelte': 6.2.1(svelte@5.46.0)(vite@7.3.0(@types/node@25.0.2)(jiti@1.21.7)(tsx@4.19.2)(yaml@2.8.1)) + '@sveltejs/vite-plugin-svelte': 6.2.1(svelte@5.46.0)(vite@7.3.0(@types/node@25.0.2)(jiti@1.21.7)(tsx@4.21.0)(yaml@2.8.1)) debug: 4.4.3 svelte: 5.46.0 - vite: 7.3.0(@types/node@25.0.2)(jiti@1.21.7)(tsx@4.19.2)(yaml@2.8.1) + vite: 7.3.0(@types/node@25.0.2)(jiti@1.21.7)(tsx@4.21.0)(yaml@2.8.1) transitivePeerDependencies: - supports-color - '@sveltejs/vite-plugin-svelte@6.2.1(svelte@5.46.0)(vite@7.3.0(@types/node@25.0.2)(jiti@1.21.7)(tsx@4.19.2)(yaml@2.8.1))': + '@sveltejs/vite-plugin-svelte@6.2.1(svelte@5.46.0)(vite@7.3.0(@types/node@25.0.2)(jiti@1.21.7)(tsx@4.21.0)(yaml@2.8.1))': dependencies: - '@sveltejs/vite-plugin-svelte-inspector': 5.0.1(@sveltejs/vite-plugin-svelte@6.2.1(svelte@5.46.0)(vite@7.3.0(@types/node@25.0.2)(jiti@1.21.7)(tsx@4.19.2)(yaml@2.8.1)))(svelte@5.46.0)(vite@7.3.0(@types/node@25.0.2)(jiti@1.21.7)(tsx@4.19.2)(yaml@2.8.1)) + '@sveltejs/vite-plugin-svelte-inspector': 5.0.1(@sveltejs/vite-plugin-svelte@6.2.1(svelte@5.46.0)(vite@7.3.0(@types/node@25.0.2)(jiti@1.21.7)(tsx@4.21.0)(yaml@2.8.1)))(svelte@5.46.0)(vite@7.3.0(@types/node@25.0.2)(jiti@1.21.7)(tsx@4.21.0)(yaml@2.8.1)) debug: 4.4.3 deepmerge: 4.3.1 magic-string: 0.30.21 svelte: 5.46.0 - vite: 7.3.0(@types/node@25.0.2)(jiti@1.21.7)(tsx@4.19.2)(yaml@2.8.1) - vitefu: 1.1.1(vite@7.3.0(@types/node@25.0.2)(jiti@1.21.7)(tsx@4.19.2)(yaml@2.8.1)) + vite: 7.3.0(@types/node@25.0.2)(jiti@1.21.7)(tsx@4.21.0)(yaml@2.8.1) + vitefu: 1.1.1(vite@7.3.0(@types/node@25.0.2)(jiti@1.21.7)(tsx@4.21.0)(yaml@2.8.1)) transitivePeerDependencies: - supports-color @@ -6612,10 +6620,10 @@ snapshots: dependencies: tslib: 2.8.1 - '@tailwindcss/forms@0.5.10(tailwindcss@3.4.19(tsx@4.19.2)(yaml@2.8.1))': + '@tailwindcss/forms@0.5.10(tailwindcss@3.4.19(tsx@4.21.0)(yaml@2.8.1))': dependencies: mini-svg-data-uri: 1.4.4 - tailwindcss: 3.4.19(tsx@4.19.2)(yaml@2.8.1) + tailwindcss: 3.4.19(tsx@4.21.0)(yaml@2.8.1) '@tanstack/react-virtual@3.13.12(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': dependencies: @@ -6645,13 +6653,13 @@ snapshots: picocolors: 1.1.1 redent: 3.0.0 - '@testing-library/svelte@5.2.9(svelte@5.46.0)(vite@7.3.0(@types/node@25.0.2)(jiti@1.21.7)(tsx@4.19.2)(yaml@2.8.1))(vitest@4.0.15)': + '@testing-library/svelte@5.2.9(svelte@5.46.0)(vite@7.3.0(@types/node@25.0.2)(jiti@1.21.7)(tsx@4.21.0)(yaml@2.8.1))(vitest@4.0.15)': dependencies: '@testing-library/dom': 10.4.1 svelte: 5.46.0 optionalDependencies: - vite: 7.3.0(@types/node@25.0.2)(jiti@1.21.7)(tsx@4.19.2)(yaml@2.8.1) - vitest: 4.0.15(@edge-runtime/vm@3.2.0)(@types/node@25.0.2)(@vitest/ui@4.0.15)(jiti@1.21.7)(jsdom@26.1.0)(tsx@4.19.2)(yaml@2.8.1) + vite: 7.3.0(@types/node@25.0.2)(jiti@1.21.7)(tsx@4.21.0)(yaml@2.8.1) + vitest: 4.0.15(@edge-runtime/vm@3.2.0)(@types/node@25.0.2)(@vitest/ui@4.0.15)(jiti@1.21.7)(jsdom@26.1.0)(tsx@4.21.0)(yaml@2.8.1) '@tootallnate/once@2.0.0': {} @@ -7265,7 +7273,7 @@ snapshots: obug: 2.1.1 std-env: 3.10.0 tinyrainbow: 3.0.3 - vitest: 4.0.15(@edge-runtime/vm@3.2.0)(@types/node@25.0.2)(@vitest/ui@4.0.15)(jiti@1.21.7)(jsdom@26.1.0)(tsx@4.19.2)(yaml@2.8.1) + vitest: 4.0.15(@edge-runtime/vm@3.2.0)(@types/node@25.0.2)(@vitest/ui@4.0.15)(jiti@1.21.7)(jsdom@26.1.0)(tsx@4.21.0)(yaml@2.8.1) transitivePeerDependencies: - supports-color @@ -7278,13 +7286,13 @@ snapshots: chai: 6.2.1 tinyrainbow: 3.0.3 - '@vitest/mocker@4.0.15(vite@7.3.0(@types/node@25.0.2)(jiti@1.21.7)(tsx@4.19.2)(yaml@2.8.1))': + '@vitest/mocker@4.0.15(vite@7.3.0(@types/node@25.0.2)(jiti@1.21.7)(tsx@4.21.0)(yaml@2.8.1))': dependencies: '@vitest/spy': 4.0.15 estree-walker: 3.0.3 magic-string: 0.30.21 optionalDependencies: - vite: 7.3.0(@types/node@25.0.2)(jiti@1.21.7)(tsx@4.19.2)(yaml@2.8.1) + vite: 7.3.0(@types/node@25.0.2)(jiti@1.21.7)(tsx@4.21.0)(yaml@2.8.1) '@vitest/pretty-format@4.0.15': dependencies: @@ -7312,7 +7320,7 @@ snapshots: sirv: 3.0.2 tinyglobby: 0.2.15 tinyrainbow: 3.0.3 - vitest: 4.0.15(@edge-runtime/vm@3.2.0)(@types/node@25.0.2)(@vitest/ui@4.0.15)(jiti@1.21.7)(jsdom@26.1.0)(tsx@4.19.2)(yaml@2.8.1) + vitest: 4.0.15(@edge-runtime/vm@3.2.0)(@types/node@25.0.2)(@vitest/ui@4.0.15)(jiti@1.21.7)(jsdom@26.1.0)(tsx@4.21.0)(yaml@2.8.1) '@vitest/utils@4.0.15': dependencies: @@ -7321,11 +7329,11 @@ snapshots: '@yr/monotone-cubic-spline@1.0.3': {} - '@zenuml/core@3.41.6(tsx@4.19.2)(yaml@2.8.1)': + '@zenuml/core@3.41.6(tsx@4.21.0)(yaml@2.8.1)': dependencies: '@floating-ui/react': 0.27.16(react-dom@19.2.0(react@19.2.0))(react@19.2.0) '@headlessui/react': 2.2.9(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@headlessui/tailwindcss': 0.2.2(tailwindcss@3.4.19(tsx@4.19.2)(yaml@2.8.1)) + '@headlessui/tailwindcss': 0.2.2(tailwindcss@3.4.19(tsx@4.21.0)(yaml@2.8.1)) antlr4: 4.11.0 class-variance-authority: 0.7.1 clsx: 2.1.1 @@ -7344,7 +7352,7 @@ snapshots: react: 19.2.0 react-dom: 19.2.0(react@19.2.0) tailwind-merge: 3.3.1 - tailwindcss: 3.4.19(tsx@4.19.2)(yaml@2.8.1) + tailwindcss: 3.4.19(tsx@4.21.0)(yaml@2.8.1) transitivePeerDependencies: - '@babel/core' - '@babel/template' @@ -9467,13 +9475,13 @@ snapshots: postcss: 8.5.6 ts-node: 10.9.1(@types/node@25.0.2)(typescript@5.9.3) - postcss-load-config@6.0.1(jiti@1.21.7)(postcss@8.5.6)(tsx@4.19.2)(yaml@2.8.1): + postcss-load-config@6.0.1(jiti@1.21.7)(postcss@8.5.6)(tsx@4.21.0)(yaml@2.8.1): dependencies: lilconfig: 3.1.3 optionalDependencies: jiti: 1.21.7 postcss: 8.5.6 - tsx: 4.19.2 + tsx: 4.21.0 yaml: 2.8.1 postcss-nested@6.2.0(postcss@8.5.6): @@ -9538,9 +9546,9 @@ snapshots: dependencies: parse-ms: 2.1.0 - prisma-erd-generator@2.4.2(@prisma/client@5.22.0(prisma@5.22.0))(puppeteer@23.11.1(typescript@5.9.3))(tsx@4.19.2)(yaml@2.8.1): + prisma-erd-generator@2.4.2(@prisma/client@5.22.0(prisma@5.22.0))(puppeteer@23.11.1(typescript@5.9.3))(tsx@4.21.0)(yaml@2.8.1): dependencies: - '@mermaid-js/mermaid-cli': 11.12.0(puppeteer@23.11.1(typescript@5.9.3))(tsx@4.19.2)(yaml@2.8.1) + '@mermaid-js/mermaid-cli': 11.12.0(puppeteer@23.11.1(typescript@5.9.3))(tsx@4.21.0)(yaml@2.8.1) '@prisma/client': 5.22.0(prisma@5.22.0) '@prisma/generator-helper': 7.1.0 dotenv: 16.6.1 @@ -10013,15 +10021,15 @@ snapshots: supports-preserve-symlinks-flag@1.0.0: {} - svelte-5-ui-lib@0.12.2(svelte@5.46.0)(tailwindcss@3.4.19(tsx@4.19.2)(yaml@2.8.1)): + svelte-5-ui-lib@0.12.2(svelte@5.46.0)(tailwindcss@3.4.19(tsx@4.21.0)(yaml@2.8.1)): dependencies: '@floating-ui/dom': 1.7.4 apexcharts: 3.54.1 clsx: 2.1.1 svelte: 5.46.0 tailwind-merge: 2.6.0 - tailwind-variants: 0.3.1(tailwindcss@3.4.19(tsx@4.19.2)(yaml@2.8.1)) - tailwindcss: 3.4.19(tsx@4.19.2)(yaml@2.8.1) + tailwind-variants: 0.3.1(tailwindcss@3.4.19(tsx@4.21.0)(yaml@2.8.1)) + tailwindcss: 3.4.19(tsx@4.21.0)(yaml@2.8.1) svelte-check@4.3.4(picomatch@4.0.3)(svelte@5.46.0)(typescript@5.9.3): dependencies: @@ -10069,9 +10077,9 @@ snapshots: magic-string: 0.30.21 zimmerframe: 1.1.4 - sveltekit-superforms@2.27.4(@sveltejs/kit@2.43.8(@sveltejs/vite-plugin-svelte@6.2.1(svelte@5.46.0)(vite@7.3.0(@types/node@25.0.2)(jiti@1.21.7)(tsx@4.19.2)(yaml@2.8.1)))(svelte@5.46.0)(vite@7.3.0(@types/node@25.0.2)(jiti@1.21.7)(tsx@4.19.2)(yaml@2.8.1)))(@types/json-schema@7.0.15)(esbuild@0.27.1)(svelte@5.46.0)(typescript@5.9.3): + sveltekit-superforms@2.27.4(@sveltejs/kit@2.43.8(@sveltejs/vite-plugin-svelte@6.2.1(svelte@5.46.0)(vite@7.3.0(@types/node@25.0.2)(jiti@1.21.7)(tsx@4.21.0)(yaml@2.8.1)))(svelte@5.46.0)(vite@7.3.0(@types/node@25.0.2)(jiti@1.21.7)(tsx@4.21.0)(yaml@2.8.1)))(@types/json-schema@7.0.15)(esbuild@0.27.1)(svelte@5.46.0)(typescript@5.9.3): dependencies: - '@sveltejs/kit': 2.43.8(@sveltejs/vite-plugin-svelte@6.2.1(svelte@5.46.0)(vite@7.3.0(@types/node@25.0.2)(jiti@1.21.7)(tsx@4.19.2)(yaml@2.8.1)))(svelte@5.46.0)(vite@7.3.0(@types/node@25.0.2)(jiti@1.21.7)(tsx@4.19.2)(yaml@2.8.1)) + '@sveltejs/kit': 2.43.8(@sveltejs/vite-plugin-svelte@6.2.1(svelte@5.46.0)(vite@7.3.0(@types/node@25.0.2)(jiti@1.21.7)(tsx@4.21.0)(yaml@2.8.1)))(svelte@5.46.0)(vite@7.3.0(@types/node@25.0.2)(jiti@1.21.7)(tsx@4.21.0)(yaml@2.8.1)) devalue: 5.4.2 memoize-weak: 1.0.2 svelte: 5.46.0 @@ -10145,12 +10153,12 @@ snapshots: tailwind-merge@3.3.1: {} - tailwind-variants@0.3.1(tailwindcss@3.4.19(tsx@4.19.2)(yaml@2.8.1)): + tailwind-variants@0.3.1(tailwindcss@3.4.19(tsx@4.21.0)(yaml@2.8.1)): dependencies: tailwind-merge: 2.5.4 - tailwindcss: 3.4.19(tsx@4.19.2)(yaml@2.8.1) + tailwindcss: 3.4.19(tsx@4.21.0)(yaml@2.8.1) - tailwindcss@3.4.19(tsx@4.19.2)(yaml@2.8.1): + tailwindcss@3.4.19(tsx@4.21.0)(yaml@2.8.1): dependencies: '@alloc/quick-lru': 5.2.0 arg: 5.0.2 @@ -10169,7 +10177,7 @@ snapshots: postcss: 8.5.6 postcss-import: 15.1.0(postcss@8.5.6) postcss-js: 4.1.0(postcss@8.5.6) - postcss-load-config: 6.0.1(jiti@1.21.7)(postcss@8.5.6)(tsx@4.19.2)(yaml@2.8.1) + postcss-load-config: 6.0.1(jiti@1.21.7)(postcss@8.5.6)(tsx@4.21.0)(yaml@2.8.1) postcss-nested: 6.2.0(postcss@8.5.6) postcss-selector-parser: 6.1.2 resolve: 1.22.11 @@ -10360,6 +10368,13 @@ snapshots: optionalDependencies: fsevents: 2.3.3 + tsx@4.21.0: + dependencies: + esbuild: 0.27.1 + get-tsconfig: 4.13.0 + optionalDependencies: + fsevents: 2.3.3 + type-check@0.4.0: dependencies: prelude-ls: 1.2.1 @@ -10469,7 +10484,7 @@ snapshots: - supports-color - typescript - vite@7.3.0(@types/node@25.0.2)(jiti@1.21.7)(tsx@4.19.2)(yaml@2.8.1): + vite@7.3.0(@types/node@25.0.2)(jiti@1.21.7)(tsx@4.21.0)(yaml@2.8.1): dependencies: esbuild: 0.27.1 fdir: 6.5.0(picomatch@4.0.3) @@ -10481,17 +10496,17 @@ snapshots: '@types/node': 25.0.2 fsevents: 2.3.3 jiti: 1.21.7 - tsx: 4.19.2 + tsx: 4.21.0 yaml: 2.8.1 - vitefu@1.1.1(vite@7.3.0(@types/node@25.0.2)(jiti@1.21.7)(tsx@4.19.2)(yaml@2.8.1)): + vitefu@1.1.1(vite@7.3.0(@types/node@25.0.2)(jiti@1.21.7)(tsx@4.21.0)(yaml@2.8.1)): optionalDependencies: - vite: 7.3.0(@types/node@25.0.2)(jiti@1.21.7)(tsx@4.19.2)(yaml@2.8.1) + vite: 7.3.0(@types/node@25.0.2)(jiti@1.21.7)(tsx@4.21.0)(yaml@2.8.1) - vitest@4.0.15(@edge-runtime/vm@3.2.0)(@types/node@25.0.2)(@vitest/ui@4.0.15)(jiti@1.21.7)(jsdom@26.1.0)(tsx@4.19.2)(yaml@2.8.1): + vitest@4.0.15(@edge-runtime/vm@3.2.0)(@types/node@25.0.2)(@vitest/ui@4.0.15)(jiti@1.21.7)(jsdom@26.1.0)(tsx@4.21.0)(yaml@2.8.1): dependencies: '@vitest/expect': 4.0.15 - '@vitest/mocker': 4.0.15(vite@7.3.0(@types/node@25.0.2)(jiti@1.21.7)(tsx@4.19.2)(yaml@2.8.1)) + '@vitest/mocker': 4.0.15(vite@7.3.0(@types/node@25.0.2)(jiti@1.21.7)(tsx@4.21.0)(yaml@2.8.1)) '@vitest/pretty-format': 4.0.15 '@vitest/runner': 4.0.15 '@vitest/snapshot': 4.0.15 @@ -10508,7 +10523,7 @@ snapshots: tinyexec: 1.0.2 tinyglobby: 0.2.15 tinyrainbow: 3.0.3 - vite: 7.3.0(@types/node@25.0.2)(jiti@1.21.7)(tsx@4.19.2)(yaml@2.8.1) + vite: 7.3.0(@types/node@25.0.2)(jiti@1.21.7)(tsx@4.21.0)(yaml@2.8.1) why-is-node-running: 2.3.0 optionalDependencies: '@edge-runtime/vm': 3.2.0 From 263af889e688ce42609700ab0bee140e4b9bd18f Mon Sep 17 00:00:00 2001 From: Kato Hiroki Date: Tue, 16 Dec 2025 22:41:13 +0000 Subject: [PATCH 2/2] chore(docs): Fix format (#2960) --- docs/dev-notes/2025-12-17/use_pnpm_exec/plan.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/docs/dev-notes/2025-12-17/use_pnpm_exec/plan.md b/docs/dev-notes/2025-12-17/use_pnpm_exec/plan.md index 70e5b7f47..0c492e2bf 100644 --- a/docs/dev-notes/2025-12-17/use_pnpm_exec/plan.md +++ b/docs/dev-notes/2025-12-17/use_pnpm_exec/plan.md @@ -30,7 +30,7 @@ vite-node は本来、Nuxt 3 の SSR PoC として作成されました。その **トラブル:** -``` +```text Error [ERR_MODULE_NOT_FOUND]: Cannot find package '$lib' imported from /usr/src/app/src/lib/utils/contest.ts ``` @@ -134,8 +134,8 @@ pnpm db:seed ## 参考資料 -- vite-node: https://github.com/vitest-dev/vitest -- tsx: https://tsx.is/ -- pnpm CLI: https://pnpm.io/cli -- Node.js TypeScript: https://nodejs.org/api/typescript.html -- Vite Configuration: https://vite.dev/config/ +- [vite-node](https://github.com/vitest-dev/vitest) +- [tsx](https://tsx.is/) +- [pnpm CLI](https://pnpm.io/cli) +- [Node.js TypeScript](https://nodejs.org/api/typescript.html) +- [Vite Configuration](https://vite.dev/config/)