`vite-plus/test/browser-playwright` types import `playwright`, which vite-plus does not declare, so provider options go unchecked under pnpm
メンテナーはふだん 1 日以内に返信
評価
- 難易度
- 2/5
- 見積もり時間
- 1〜3時間
- 初心者へのやさしさ
- 84/100
- issue の種類
- バグ
- 明瞭さ
- 明確に書かれている
- 活発さ
- 活発
- 技術スタック
- playwright, typescript
調査の方向性
vite-plus/dist/test/browser-playwright.d.ts と、その peer 依存関係を制御するパッケージメタデータから始めます。playwright をオプションの peer として追加し、次に提供された pnpm の再現手順と vp check を実行して、無効な contextOptions が拒否され、宣言型が正しく解決されることを確認します。
索引モデルが issue の本文から書いたものです。
説明
What happens
vite-plus/dist/test/browser-playwright.d.ts imports types from playwright:
import { Page, Frame, FrameLocator, BrowserContext, CDPSession, Browser, LaunchOptions, ConnectOptions, BrowserContextOptions } from 'playwright';
vite-plus doesn't declare playwright as a dependency or a peer. It only declares @vitest/browser-playwright as an optional peer. With pnpm's isolated layouts (confirmed with virtualStoreType: global), vite-plus's own slot therefore has no playwright, and TypeScript can't resolve the import. With skipLibCheck: true (the usual setting), the Playwright types in the provider's declarations silently lose their meaning:
playwright({ contextOptions })is unchecked, socontextOptions: { reducedMotion: "bogus" }compiles;cdp().send(...), typed through theCDPSessionaugmentation, is error-typed, so type-aware Oxlint reportsno-unsafe-callon every call.
Repro
- A pnpm project with
virtualStoreType: globaland[email protected],[email protected]and@vitest/[email protected]as devDependencies. - In
vite.config.ts:provider: playwright({ contextOptions: { reducedMotion: "bogus" } })fromvite-plus/test/browser-playwright. vp checkpasses.lsvite-plus's slot (<store>/links/@/vite-plus/1.0.0/<hash>/node_modules/):vitest,vite,oxlint… but noplaywright.
Proposal
Declare playwright as an optional peer of vite-plus, the way @vitest/browser-playwright already is:
"peerDependencies": { "playwright": "*" },
"peerDependenciesMeta": { "playwright": { "optional": true } }
Workaround: a .pnpmfile.mjs readPackage hook that adds that optional peer to vite-plus. With it, playwright is linked into vite-plus's slot, and vp check rejects reducedMotion: "bogus" with TS2322: Type '"bogus"' is not assignable to type '"no-preference" | "reduce" | null | undefined'.
Versions: vite-plus 1.0.0, pnpm 12.8.1, playwright 1.63.0, TypeScript 7.0.2, macOS.
- 主要言語
- Rust
- スター
- 6k
- フォーク
- 274
- 平均マージ
- 1日 13時間
- マージ済み PR(30日)
- 195
環境構築
このプロジェクトの開発コンテナを、あなたの GitHub アカウントでブラウザ上に起動します。
- Dockerfile・Docker Compose ファイルなし
- プルリクエストのテンプレートなし
- コントリビューションガイドを読む
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
voidzero-dev/vite-plus のほかの issue
-
`npx --package=vite-plus vp create` fails with exit 127 when npm is the chosen package manager対応中かも @Crimson341 が今日担当しました。 オープンbug
難易度 2/5 1〜3時間 初心者へのやさしさ 70/100
voidzero-dev/vite-plus#2970 ·
メンテナーはふだん 1 日以内に返信
-
pending triage
難易度 2/5 1〜3時間 初心者へのやさしさ 72/100
voidzero-dev/vite-plus#2882 · コメント 2 件 ·
メンテナーはふだん 1 日以内に返信
-
enhancement
難易度 2/5 1〜3時間 初心者へのやさしさ 62/100
voidzero-dev/vite-plus#2097 · コメント 10 件 · リアクション 2 件 ·
メンテナーはふだん 1 日以内に返信
-
Windows: PowerShell installer (1.1.0) does not add vite-plus\bin to user PATH — 'vp' not recognizedオープン
難易度 4/5 3〜5日 初心者へのやさしさ 30/100
voidzero-dev/vite-plus#2984 · コメント 1 件 ·
メンテナーはふだん 1 日以内に返信
-
pending triage
難易度 3/5 1〜2日 初心者へのやさしさ 40/100
voidzero-dev/vite-plus#2983 ·
メンテナーはふだん 1 日以内に返信
voidzero-dev/vite-plus の issue をすべて見る
似ている issue
-
難易度 2/5 1〜3時間 初心者へのやさしさ 82/100
akitaonrails/ai-memory#1225 ·
メンテナーはふだん 1 日以内に返信
-
bug
難易度 2/5 1〜3時間 初心者へのやさしさ 76/100
acsandmann/rift#577 ·
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 76/100
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 68/100
-
[Bug]: rerank on the huggingface provider (TEI) always costs $0, configured input_cost_per_query is ignored対応中かも このイシューにリンクされたプルリクエストがオープン中、またはマージ済みです。 オープンllm translation
難易度 2/5 1〜3時間 初心者へのやさしさ 76/100
メンテナーはふだん 1 日以内に返信