Skip to content

Commit d9dee07

Browse files
committed
refactor: simplify browser provider peer dep logic and version patch
- Inline peer dep addition into the removal loop, eliminating intermediate array and second loop - Use direct mutation instead of spread for consistency - Single-pass regex replace in build.ts version patch
1 parent d285377 commit d9dee07

2 files changed

Lines changed: 14 additions & 20 deletions

File tree

packages/cli/src/migration/migrator.ts

Lines changed: 9 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1209,7 +1209,6 @@ export function rewritePackageJson(
12091209
}
12101210
}
12111211
// remove packages that are replaced with vite-plus
1212-
const removedProviderPackages: string[] = [];
12131212
for (const name of REMOVE_PACKAGES) {
12141213
const wasInDevDeps = !!pkg.devDependencies?.[name];
12151214
const wasInDeps = !!pkg.dependencies?.[name];
@@ -1221,19 +1220,16 @@ export function rewritePackageJson(
12211220
delete pkg.dependencies![name];
12221221
needVitePlus = true;
12231222
}
1224-
if ((wasInDevDeps || wasInDeps) && BROWSER_PROVIDER_PEER_DEPS[name]) {
1225-
removedProviderPackages.push(name);
1226-
}
1227-
}
1228-
// Preserve runtime peer dependencies of removed browser provider packages.
1229-
// e.g., removing @vitest/browser-playwright should keep `playwright` in devDeps.
1230-
for (const name of removedProviderPackages) {
1223+
// e.g., removing @vitest/browser-playwright should keep `playwright` in devDeps
12311224
const peerDep = BROWSER_PROVIDER_PEER_DEPS[name];
1232-
if (peerDep && !pkg.devDependencies?.[peerDep] && !pkg.dependencies?.[peerDep]) {
1233-
pkg.devDependencies = {
1234-
...pkg.devDependencies,
1235-
[peerDep]: '*',
1236-
};
1225+
if (
1226+
(wasInDevDeps || wasInDeps) &&
1227+
peerDep &&
1228+
!pkg.devDependencies?.[peerDep] &&
1229+
!pkg.dependencies?.[peerDep]
1230+
) {
1231+
pkg.devDependencies ??= {};
1232+
pkg.devDependencies[peerDep] = '*';
12371233
}
12381234
}
12391235
if (needVitePlus) {

packages/test/build.ts

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1637,19 +1637,17 @@ async function patchVitestBrowserPackage() {
16371637
);
16381638
}
16391639

1640-
// 5. Version: var version = "<semver>" → use VP_VERSION env var with fallback
1641-
// This prevents the "Running mixed versions" warning when VP_VERSION differs
1642-
// from the bundled vitest browser version.
1640+
// 5. Patch version to use VP_VERSION, preventing the "Running mixed versions" warning
16431641
const versionPattern = /var version = "(\d+\.\d+\.\d+[^"]*)"/;
1644-
if (versionPattern.test(content)) {
1645-
content = content.replace(versionPattern, 'var version = process.env.VP_VERSION || "$1"');
1646-
console.log(' Patched version to use VP_VERSION env var');
1647-
} else {
1642+
const beforeVersion = content;
1643+
content = content.replace(versionPattern, 'var version = process.env.VP_VERSION || "$1"');
1644+
if (content === beforeVersion) {
16481645
throw new Error(
16491646
'Failed to patch version in @vitest/browser/index.js: pattern not found. ' +
16501647
'This likely means vitest code has changed and the patch needs to be updated.',
16511648
);
16521649
}
1650+
console.log(' Patched version to use VP_VERSION env var');
16531651

16541652
await writeFile(browserIndexPath, content, 'utf-8');
16551653
console.log(' Successfully patched @vitest/browser/index.js');

0 commit comments

Comments
 (0)