diff --git a/packages/cli/snap-tests-global/migration-add-git-hooks/snap.txt b/packages/cli/snap-tests-global/migration-add-git-hooks/snap.txt index 313d5c1634..63dfc9b478 100644 --- a/packages/cli/snap-tests-global/migration-add-git-hooks/snap.txt +++ b/packages/cli/snap-tests-global/migration-add-git-hooks/snap.txt @@ -11,24 +11,8 @@ VITE+ - The Unified Toolchain for the Web { "name": "migration-add-git-hooks", "devDependencies": { - "vite": "npm:@voidzero-dev/vite-plus-core@latest", - "vite-plus": "latest" - }, - "pnpm": { - "overrides": { - "vite": "npm:@voidzero-dev/vite-plus-core@latest", - "vitest": "npm:@voidzero-dev/vite-plus-test@latest" - }, - "peerDependencyRules": { - "allowAny": [ - "vite", - "vitest" - ], - "allowedVersions": { - "vite": "*", - "vitest": "*" - } - } + "vite": "catalog:", + "vite-plus": "catalog:" }, "packageManager": "pnpm@", "scripts": { @@ -36,6 +20,22 @@ VITE+ - The Unified Toolchain for the Web } } +> cat pnpm-workspace.yaml # check pnpm-workspace.yaml has overrides and catalog +catalog: + vite: npm:@voidzero-dev/vite-plus-core@latest + vitest: npm:@voidzero-dev/vite-plus-test@latest + vite-plus: latest +overrides: + vite: 'catalog:' + vitest: 'catalog:' +peerDependencyRules: + allowAny: + - vite + - vitest + allowedVersions: + vite: '*' + vitest: '*' + > cat .vite-hooks/pre-commit # check pre-commit hook vp staged diff --git a/packages/cli/snap-tests-global/migration-add-git-hooks/steps.json b/packages/cli/snap-tests-global/migration-add-git-hooks/steps.json index 5c62af34ef..169bd16aeb 100644 --- a/packages/cli/snap-tests-global/migration-add-git-hooks/steps.json +++ b/packages/cli/snap-tests-global/migration-add-git-hooks/steps.json @@ -1,8 +1,12 @@ { "commands": [ - { "command": "git init", "ignoreOutput": true }, + { + "command": "git init", + "ignoreOutput": true + }, "vp migrate --no-interactive # migration should add git hooks setup", "cat package.json # check package.json has prepare script and lint-staged config", + "cat pnpm-workspace.yaml # check pnpm-workspace.yaml has overrides and catalog", "cat .vite-hooks/pre-commit # check pre-commit hook", "test -d .vite-hooks/_ && echo 'hook shims exist' || echo 'no hook shims' # check vp config ran", "git config --local core.hooksPath # should be set to .vite-hooks/_", diff --git a/packages/cli/snap-tests-global/migration-auto-create-vite-config/snap.txt b/packages/cli/snap-tests-global/migration-auto-create-vite-config/snap.txt index 5c953a30d7..1a0cdf5cef 100644 --- a/packages/cli/snap-tests-global/migration-auto-create-vite-config/snap.txt +++ b/packages/cli/snap-tests-global/migration-auto-create-vite-config/snap.txt @@ -35,26 +35,26 @@ export default defineConfig({ > cat package.json # check package.json { "devDependencies": { - "vite-plus": "latest" - }, - "pnpm": { - "overrides": { - "vite": "npm:@voidzero-dev/vite-plus-core@latest", - "vitest": "npm:@voidzero-dev/vite-plus-test@latest" - }, - "peerDependencyRules": { - "allowAny": [ - "vite", - "vitest" - ], - "allowedVersions": { - "vite": "*", - "vitest": "*" - } - } + "vite-plus": "catalog:" }, "packageManager": "pnpm@", "scripts": { "prepare": "vp config" } } + +> cat pnpm-workspace.yaml # check pnpm-workspace.yaml has overrides and catalog +catalog: + vite: npm:@voidzero-dev/vite-plus-core@latest + vitest: npm:@voidzero-dev/vite-plus-test@latest + vite-plus: latest +overrides: + vite: 'catalog:' + vitest: 'catalog:' +peerDependencyRules: + allowAny: + - vite + - vitest + allowedVersions: + vite: '*' + vitest: '*' diff --git a/packages/cli/snap-tests-global/migration-auto-create-vite-config/steps.json b/packages/cli/snap-tests-global/migration-auto-create-vite-config/steps.json index 5892f08fea..8a3a4079d8 100644 --- a/packages/cli/snap-tests-global/migration-auto-create-vite-config/steps.json +++ b/packages/cli/snap-tests-global/migration-auto-create-vite-config/steps.json @@ -4,6 +4,7 @@ "cat vite.config.ts # check vite.config.ts", "test ! -f .oxlintrc.json # check .oxlintrc.json is removed", "test ! -f .oxfmtrc.json # check .oxfmtrc.json is removed", - "cat package.json # check package.json" + "cat package.json # check package.json", + "cat pnpm-workspace.yaml # check pnpm-workspace.yaml has overrides and catalog" ] } diff --git a/packages/cli/snap-tests-global/migration-baseurl-tsconfig/snap.txt b/packages/cli/snap-tests-global/migration-baseurl-tsconfig/snap.txt index 6e076dffc1..7e63207146 100644 --- a/packages/cli/snap-tests-global/migration-baseurl-tsconfig/snap.txt +++ b/packages/cli/snap-tests-global/migration-baseurl-tsconfig/snap.txt @@ -28,26 +28,26 @@ export default defineConfig({ > cat package.json # check package.json { "devDependencies": { - "vite-plus": "latest" - }, - "pnpm": { - "overrides": { - "vite": "npm:@voidzero-dev/vite-plus-core@latest", - "vitest": "npm:@voidzero-dev/vite-plus-test@latest" - }, - "peerDependencyRules": { - "allowAny": [ - "vite", - "vitest" - ], - "allowedVersions": { - "vite": "*", - "vitest": "*" - } - } + "vite-plus": "catalog:" }, "packageManager": "pnpm@", "scripts": { "prepare": "vp config" } } + +> cat pnpm-workspace.yaml # check pnpm-workspace.yaml has overrides and catalog +catalog: + vite: npm:@voidzero-dev/vite-plus-core@latest + vitest: npm:@voidzero-dev/vite-plus-test@latest + vite-plus: latest +overrides: + vite: 'catalog:' + vitest: 'catalog:' +peerDependencyRules: + allowAny: + - vite + - vitest + allowedVersions: + vite: '*' + vitest: '*' diff --git a/packages/cli/snap-tests-global/migration-baseurl-tsconfig/steps.json b/packages/cli/snap-tests-global/migration-baseurl-tsconfig/steps.json index 213af167d1..2e7031db92 100644 --- a/packages/cli/snap-tests-global/migration-baseurl-tsconfig/steps.json +++ b/packages/cli/snap-tests-global/migration-baseurl-tsconfig/steps.json @@ -1,8 +1,9 @@ { "commands": [ "vp migrate --no-interactive # migration should skip typeAware/typeCheck when tsconfig has baseUrl", - "cat vite.config.ts # check vite.config.ts — should NOT have typeAware or typeCheck", + "cat vite.config.ts # check vite.config.ts \u2014 should NOT have typeAware or typeCheck", "test ! -f .oxlintrc.json # check .oxlintrc.json is removed", - "cat package.json # check package.json" + "cat package.json # check package.json", + "cat pnpm-workspace.yaml # check pnpm-workspace.yaml has overrides and catalog" ] } diff --git a/packages/cli/snap-tests-global/migration-chained-lint-staged-pre-commit/snap.txt b/packages/cli/snap-tests-global/migration-chained-lint-staged-pre-commit/snap.txt index 599506d00f..ddb701f8c2 100644 --- a/packages/cli/snap-tests-global/migration-chained-lint-staged-pre-commit/snap.txt +++ b/packages/cli/snap-tests-global/migration-chained-lint-staged-pre-commit/snap.txt @@ -14,28 +14,28 @@ VITE+ - The Unified Toolchain for the Web "prepare": "vp config" }, "devDependencies": { - "vite": "npm:@voidzero-dev/vite-plus-core@latest", - "vite-plus": "latest" - }, - "pnpm": { - "overrides": { - "vite": "npm:@voidzero-dev/vite-plus-core@latest", - "vitest": "npm:@voidzero-dev/vite-plus-test@latest" - }, - "peerDependencyRules": { - "allowAny": [ - "vite", - "vitest" - ], - "allowedVersions": { - "vite": "*", - "vitest": "*" - } - } + "vite": "catalog:", + "vite-plus": "catalog:" }, "packageManager": "pnpm@" } +> cat pnpm-workspace.yaml # check pnpm-workspace.yaml has overrides and catalog +catalog: + vite: npm:@voidzero-dev/vite-plus-core@latest + vitest: npm:@voidzero-dev/vite-plus-test@latest + vite-plus: latest +overrides: + vite: 'catalog:' + vitest: 'catalog:' +peerDependencyRules: + allowAny: + - vite + - vitest + allowedVersions: + vite: '*' + vitest: '*' + > cat vite.config.ts # check staged config migrated to vite.config.ts import { defineConfig } from 'vite-plus'; diff --git a/packages/cli/snap-tests-global/migration-chained-lint-staged-pre-commit/steps.json b/packages/cli/snap-tests-global/migration-chained-lint-staged-pre-commit/steps.json index 02ee3ba2ab..7aa881dbe2 100644 --- a/packages/cli/snap-tests-global/migration-chained-lint-staged-pre-commit/steps.json +++ b/packages/cli/snap-tests-global/migration-chained-lint-staged-pre-commit/steps.json @@ -1,8 +1,12 @@ { "commands": [ - { "command": "git init", "ignoreOutput": true }, + { + "command": "git init", + "ignoreOutput": true + }, "vp migrate --no-interactive # migration should preserve chained commands after lint-staged", "cat package.json # check prepare rewritten and husky/lint-staged removed", + "cat pnpm-workspace.yaml # check pnpm-workspace.yaml has overrides and catalog", "cat vite.config.ts # check staged config migrated to vite.config.ts", "cat .vite-hooks/pre-commit # check npx lint-staged replaced but --diff HEAD~1 && npm test preserved" ] diff --git a/packages/cli/snap-tests-global/migration-composed-husky-custom-dir/snap.txt b/packages/cli/snap-tests-global/migration-composed-husky-custom-dir/snap.txt index 016f9146ee..3ae6088a4e 100644 --- a/packages/cli/snap-tests-global/migration-composed-husky-custom-dir/snap.txt +++ b/packages/cli/snap-tests-global/migration-composed-husky-custom-dir/snap.txt @@ -14,28 +14,28 @@ VITE+ - The Unified Toolchain for the Web "prepare": "npm run build && vp config --hooks-dir .config/husky" }, "devDependencies": { - "vite": "npm:@voidzero-dev/vite-plus-core@latest", - "vite-plus": "latest" - }, - "pnpm": { - "overrides": { - "vite": "npm:@voidzero-dev/vite-plus-core@latest", - "vitest": "npm:@voidzero-dev/vite-plus-test@latest" - }, - "peerDependencyRules": { - "allowAny": [ - "vite", - "vitest" - ], - "allowedVersions": { - "vite": "*", - "vitest": "*" - } - } + "vite": "catalog:", + "vite-plus": "catalog:" }, "packageManager": "pnpm@" } +> cat pnpm-workspace.yaml # check pnpm-workspace.yaml has overrides and catalog +catalog: + vite: npm:@voidzero-dev/vite-plus-core@latest + vitest: npm:@voidzero-dev/vite-plus-test@latest + vite-plus: latest +overrides: + vite: 'catalog:' + vitest: 'catalog:' +peerDependencyRules: + allowAny: + - vite + - vitest + allowedVersions: + vite: '*' + vitest: '*' + > cat .config/husky/pre-commit # pre-commit hook should be in custom dir vp staged diff --git a/packages/cli/snap-tests-global/migration-composed-husky-custom-dir/steps.json b/packages/cli/snap-tests-global/migration-composed-husky-custom-dir/steps.json index 8fa3f13456..f0c4ee6976 100644 --- a/packages/cli/snap-tests-global/migration-composed-husky-custom-dir/steps.json +++ b/packages/cli/snap-tests-global/migration-composed-husky-custom-dir/steps.json @@ -1,8 +1,12 @@ { "commands": [ - { "command": "git init", "ignoreOutput": true }, + { + "command": "git init", + "ignoreOutput": true + }, "vp migrate --no-interactive # migration should preserve custom husky dir in composed prepare", "cat package.json # prepare should be 'vp config --hooks-dir .config/husky && npm run build'", + "cat pnpm-workspace.yaml # check pnpm-workspace.yaml has overrides and catalog", "cat .config/husky/pre-commit # pre-commit hook should be in custom dir", "cat .config/husky/_/h # hook dispatcher should resolve repo root correctly for nested dirs" ] diff --git a/packages/cli/snap-tests-global/migration-composed-husky-prepare/snap.txt b/packages/cli/snap-tests-global/migration-composed-husky-prepare/snap.txt index 4878b8ea21..bdc07e1e6f 100644 --- a/packages/cli/snap-tests-global/migration-composed-husky-prepare/snap.txt +++ b/packages/cli/snap-tests-global/migration-composed-husky-prepare/snap.txt @@ -14,24 +14,24 @@ VITE+ - The Unified Toolchain for the Web "prepare": "vp config && npm run build" }, "devDependencies": { - "vite": "npm:@voidzero-dev/vite-plus-core@latest", - "vite-plus": "latest" - }, - "pnpm": { - "overrides": { - "vite": "npm:@voidzero-dev/vite-plus-core@latest", - "vitest": "npm:@voidzero-dev/vite-plus-test@latest" - }, - "peerDependencyRules": { - "allowAny": [ - "vite", - "vitest" - ], - "allowedVersions": { - "vite": "*", - "vitest": "*" - } - } + "vite": "catalog:", + "vite-plus": "catalog:" }, "packageManager": "pnpm@" } + +> cat pnpm-workspace.yaml # check pnpm-workspace.yaml has overrides and catalog +catalog: + vite: npm:@voidzero-dev/vite-plus-core@latest + vitest: npm:@voidzero-dev/vite-plus-test@latest + vite-plus: latest +overrides: + vite: 'catalog:' + vitest: 'catalog:' +peerDependencyRules: + allowAny: + - vite + - vitest + allowedVersions: + vite: '*' + vitest: '*' diff --git a/packages/cli/snap-tests-global/migration-composed-husky-prepare/steps.json b/packages/cli/snap-tests-global/migration-composed-husky-prepare/steps.json index 7341e4b7fc..88708a2cfe 100644 --- a/packages/cli/snap-tests-global/migration-composed-husky-prepare/steps.json +++ b/packages/cli/snap-tests-global/migration-composed-husky-prepare/steps.json @@ -1,7 +1,11 @@ { "commands": [ - { "command": "git init", "ignoreOutput": true }, + { + "command": "git init", + "ignoreOutput": true + }, "vp migrate --no-interactive # migration should replace husky in composed prepare script", - "cat package.json # check prepare becomes 'vp config --hooks-dir .husky && npm run build' without leftover husky" + "cat package.json # check prepare becomes 'vp config --hooks-dir .husky && npm run build' without leftover husky", + "cat pnpm-workspace.yaml # check pnpm-workspace.yaml has overrides and catalog" ] } diff --git a/packages/cli/snap-tests-global/migration-env-prefix-lint-staged/snap.txt b/packages/cli/snap-tests-global/migration-env-prefix-lint-staged/snap.txt index 2093483422..82bee592b0 100644 --- a/packages/cli/snap-tests-global/migration-env-prefix-lint-staged/snap.txt +++ b/packages/cli/snap-tests-global/migration-env-prefix-lint-staged/snap.txt @@ -14,28 +14,28 @@ VITE+ - The Unified Toolchain for the Web "prepare": "vp config" }, "devDependencies": { - "vite": "npm:@voidzero-dev/vite-plus-core@latest", - "vite-plus": "latest" - }, - "pnpm": { - "overrides": { - "vite": "npm:@voidzero-dev/vite-plus-core@latest", - "vitest": "npm:@voidzero-dev/vite-plus-test@latest" - }, - "peerDependencyRules": { - "allowAny": [ - "vite", - "vitest" - ], - "allowedVersions": { - "vite": "*", - "vitest": "*" - } - } + "vite": "catalog:", + "vite-plus": "catalog:" }, "packageManager": "pnpm@" } +> cat pnpm-workspace.yaml # check pnpm-workspace.yaml has overrides and catalog +catalog: + vite: npm:@voidzero-dev/vite-plus-core@latest + vitest: npm:@voidzero-dev/vite-plus-test@latest + vite-plus: latest +overrides: + vite: 'catalog:' + vitest: 'catalog:' +peerDependencyRules: + allowAny: + - vite + - vitest + allowedVersions: + vite: '*' + vitest: '*' + > cat vite.config.ts # check staged config migrated to vite.config.ts import { defineConfig } from 'vite-plus'; diff --git a/packages/cli/snap-tests-global/migration-env-prefix-lint-staged/steps.json b/packages/cli/snap-tests-global/migration-env-prefix-lint-staged/steps.json index 03731252e2..e5a166b0a0 100644 --- a/packages/cli/snap-tests-global/migration-env-prefix-lint-staged/steps.json +++ b/packages/cli/snap-tests-global/migration-env-prefix-lint-staged/steps.json @@ -1,8 +1,12 @@ { "commands": [ - { "command": "git init", "ignoreOutput": true }, + { + "command": "git init", + "ignoreOutput": true + }, "vp migrate --no-interactive # migration should replace env-prefixed lint-staged in pre-commit", "cat package.json # check husky/lint-staged removed, staged config in vite.config.ts", + "cat pnpm-workspace.yaml # check pnpm-workspace.yaml has overrides and catalog", "cat vite.config.ts # check staged config migrated to vite.config.ts", "cat .vite-hooks/pre-commit # check env prefix preserved with vp staged" ] diff --git a/packages/cli/snap-tests-global/migration-eslint-lint-staged/snap.txt b/packages/cli/snap-tests-global/migration-eslint-lint-staged/snap.txt index d3af079b9f..4f1a2a61b7 100644 --- a/packages/cli/snap-tests-global/migration-eslint-lint-staged/snap.txt +++ b/packages/cli/snap-tests-global/migration-eslint-lint-staged/snap.txt @@ -14,28 +14,28 @@ VITE+ - The Unified Toolchain for the Web "prepare": "vp config" }, "devDependencies": { - "vite": "npm:@voidzero-dev/vite-plus-core@latest", - "vite-plus": "latest" + "vite": "catalog:", + "vite-plus": "catalog:" }, - "packageManager": "pnpm@", - "pnpm": { - "overrides": { - "vite": "npm:@voidzero-dev/vite-plus-core@latest", - "vitest": "npm:@voidzero-dev/vite-plus-test@latest" - }, - "peerDependencyRules": { - "allowAny": [ - "vite", - "vitest" - ], - "allowedVersions": { - "vite": "*", - "vitest": "*" - } - } - } + "packageManager": "pnpm@" } +> cat pnpm-workspace.yaml # check pnpm-workspace.yaml has overrides and catalog +catalog: + vite: npm:@voidzero-dev/vite-plus-core@latest + vitest: npm:@voidzero-dev/vite-plus-test@latest + vite-plus: latest +overrides: + vite: 'catalog:' + vitest: 'catalog:' +peerDependencyRules: + allowAny: + - vite + - vitest + allowedVersions: + vite: '*' + vitest: '*' + > cat vite.config.ts # check oxlint config and staged config merged into vite.config.ts import { defineConfig } from 'vite-plus'; diff --git a/packages/cli/snap-tests-global/migration-eslint-lint-staged/steps.json b/packages/cli/snap-tests-global/migration-eslint-lint-staged/steps.json index f8c6f39f44..b1f04159be 100644 --- a/packages/cli/snap-tests-global/migration-eslint-lint-staged/steps.json +++ b/packages/cli/snap-tests-global/migration-eslint-lint-staged/steps.json @@ -2,6 +2,7 @@ "commands": [ "vp migrate --no-interactive # migration should detect eslint and auto-migrate including lint-staged", "cat package.json # check eslint removed, scripts rewritten, lint-staged rewritten", + "cat pnpm-workspace.yaml # check pnpm-workspace.yaml has overrides and catalog", "cat vite.config.ts # check oxlint config and staged config merged into vite.config.ts" ] } diff --git a/packages/cli/snap-tests-global/migration-eslint-lintstagedrc/snap.txt b/packages/cli/snap-tests-global/migration-eslint-lintstagedrc/snap.txt index b387221bb9..11030e7aa7 100644 --- a/packages/cli/snap-tests-global/migration-eslint-lintstagedrc/snap.txt +++ b/packages/cli/snap-tests-global/migration-eslint-lintstagedrc/snap.txt @@ -14,28 +14,28 @@ VITE+ - The Unified Toolchain for the Web "prepare": "vp config" }, "devDependencies": { - "vite": "npm:@voidzero-dev/vite-plus-core@latest", - "vite-plus": "latest" + "vite": "catalog:", + "vite-plus": "catalog:" }, - "packageManager": "pnpm@", - "pnpm": { - "overrides": { - "vite": "npm:@voidzero-dev/vite-plus-core@latest", - "vitest": "npm:@voidzero-dev/vite-plus-test@latest" - }, - "peerDependencyRules": { - "allowAny": [ - "vite", - "vitest" - ], - "allowedVersions": { - "vite": "*", - "vitest": "*" - } - } - } + "packageManager": "pnpm@" } +> cat pnpm-workspace.yaml # check pnpm-workspace.yaml has overrides and catalog +catalog: + vite: npm:@voidzero-dev/vite-plus-core@latest + vitest: npm:@voidzero-dev/vite-plus-test@latest + vite-plus: latest +overrides: + vite: 'catalog:' + vitest: 'catalog:' +peerDependencyRules: + allowAny: + - vite + - vitest + allowedVersions: + vite: '*' + vitest: '*' + > test ! -f .lintstagedrc.json # check lintstagedrc.json is removed > cat vite.config.ts # check oxlint config merged into vite.config.ts import { defineConfig } from 'vite-plus'; diff --git a/packages/cli/snap-tests-global/migration-eslint-lintstagedrc/steps.json b/packages/cli/snap-tests-global/migration-eslint-lintstagedrc/steps.json index df474cdbe5..e861921c12 100644 --- a/packages/cli/snap-tests-global/migration-eslint-lintstagedrc/steps.json +++ b/packages/cli/snap-tests-global/migration-eslint-lintstagedrc/steps.json @@ -2,6 +2,7 @@ "commands": [ "vp migrate --no-interactive # migration should detect eslint and auto-migrate including lintstagedrc", "cat package.json # check eslint removed and scripts rewritten", + "cat pnpm-workspace.yaml # check pnpm-workspace.yaml has overrides and catalog", "test ! -f .lintstagedrc.json # check lintstagedrc.json is removed", "cat vite.config.ts # check oxlint config merged into vite.config.ts" ] diff --git a/packages/cli/snap-tests-global/migration-eslint-npx-wrapper/snap.txt b/packages/cli/snap-tests-global/migration-eslint-npx-wrapper/snap.txt index 9a6b19e9f2..110d282586 100644 --- a/packages/cli/snap-tests-global/migration-eslint-npx-wrapper/snap.txt +++ b/packages/cli/snap-tests-global/migration-eslint-npx-wrapper/snap.txt @@ -19,26 +19,26 @@ VITE+ - The Unified Toolchain for the Web "prepare": "vp config" }, "devDependencies": { - "vite": "npm:@voidzero-dev/vite-plus-core@latest", - "vite-plus": "latest" + "vite": "catalog:", + "vite-plus": "catalog:" }, - "packageManager": "pnpm@", - "pnpm": { - "overrides": { - "vite": "npm:@voidzero-dev/vite-plus-core@latest", - "vitest": "npm:@voidzero-dev/vite-plus-test@latest" - }, - "peerDependencyRules": { - "allowAny": [ - "vite", - "vitest" - ], - "allowedVersions": { - "vite": "*", - "vitest": "*" - } - } - } + "packageManager": "pnpm@" } +> cat pnpm-workspace.yaml # check pnpm-workspace.yaml has overrides and catalog +catalog: + vite: npm:@voidzero-dev/vite-plus-core@latest + vitest: npm:@voidzero-dev/vite-plus-test@latest + vite-plus: latest +overrides: + vite: 'catalog:' + vitest: 'catalog:' +peerDependencyRules: + allowAny: + - vite + - vitest + allowedVersions: + vite: '*' + vitest: '*' + > test ! -f eslint.config.mjs # check eslint config is removed \ No newline at end of file diff --git a/packages/cli/snap-tests-global/migration-eslint-npx-wrapper/steps.json b/packages/cli/snap-tests-global/migration-eslint-npx-wrapper/steps.json index 333c9ad03c..91955d46b6 100644 --- a/packages/cli/snap-tests-global/migration-eslint-npx-wrapper/steps.json +++ b/packages/cli/snap-tests-global/migration-eslint-npx-wrapper/steps.json @@ -2,6 +2,7 @@ "commands": [ "vp migrate --no-interactive # migration should rewrite bare eslint but leave npx wrappers unchanged", "cat package.json # check eslint removed, bare eslint rewritten, npx/pnpm exec/bunx wrappers unchanged", + "cat pnpm-workspace.yaml # check pnpm-workspace.yaml has overrides and catalog", "test ! -f eslint.config.mjs # check eslint config is removed" ] } diff --git a/packages/cli/snap-tests-global/migration-eslint/snap.txt b/packages/cli/snap-tests-global/migration-eslint/snap.txt index 84924d39f5..3996d5fa6b 100644 --- a/packages/cli/snap-tests-global/migration-eslint/snap.txt +++ b/packages/cli/snap-tests-global/migration-eslint/snap.txt @@ -17,28 +17,28 @@ VITE+ - The Unified Toolchain for the Web "prepare": "vp config" }, "devDependencies": { - "vite": "npm:@voidzero-dev/vite-plus-core@latest", - "vite-plus": "latest" + "vite": "catalog:", + "vite-plus": "catalog:" }, - "packageManager": "pnpm@", - "pnpm": { - "overrides": { - "vite": "npm:@voidzero-dev/vite-plus-core@latest", - "vitest": "npm:@voidzero-dev/vite-plus-test@latest" - }, - "peerDependencyRules": { - "allowAny": [ - "vite", - "vitest" - ], - "allowedVersions": { - "vite": "*", - "vitest": "*" - } - } - } + "packageManager": "pnpm@" } +> cat pnpm-workspace.yaml # check pnpm-workspace.yaml has overrides and catalog +catalog: + vite: npm:@voidzero-dev/vite-plus-core@latest + vitest: npm:@voidzero-dev/vite-plus-test@latest + vite-plus: latest +overrides: + vite: 'catalog:' + vitest: 'catalog:' +peerDependencyRules: + allowAny: + - vite + - vitest + allowedVersions: + vite: '*' + vitest: '*' + > test ! -f eslint.config.mjs # check eslint config is removed > cat vite.config.ts # check oxlint config merged into vite.config.ts import { defineConfig } from 'vite-plus'; diff --git a/packages/cli/snap-tests-global/migration-eslint/steps.json b/packages/cli/snap-tests-global/migration-eslint/steps.json index e9ad1449c9..ad8cfda034 100644 --- a/packages/cli/snap-tests-global/migration-eslint/steps.json +++ b/packages/cli/snap-tests-global/migration-eslint/steps.json @@ -2,6 +2,7 @@ "commands": [ "vp migrate --no-interactive # migration should detect eslint and auto-migrate", "cat package.json # check eslint removed and scripts rewritten", + "cat pnpm-workspace.yaml # check pnpm-workspace.yaml has overrides and catalog", "test ! -f eslint.config.mjs # check eslint config is removed", "cat vite.config.ts # check oxlint config merged into vite.config.ts" ] diff --git a/packages/cli/snap-tests-global/migration-existing-husky-lint-staged/snap.txt b/packages/cli/snap-tests-global/migration-existing-husky-lint-staged/snap.txt index bd41587b9a..a981734b59 100644 --- a/packages/cli/snap-tests-global/migration-existing-husky-lint-staged/snap.txt +++ b/packages/cli/snap-tests-global/migration-existing-husky-lint-staged/snap.txt @@ -14,28 +14,28 @@ VITE+ - The Unified Toolchain for the Web "prepare": "vp config" }, "devDependencies": { - "vite": "npm:@voidzero-dev/vite-plus-core@latest", - "vite-plus": "latest" - }, - "pnpm": { - "overrides": { - "vite": "npm:@voidzero-dev/vite-plus-core@latest", - "vitest": "npm:@voidzero-dev/vite-plus-test@latest" - }, - "peerDependencyRules": { - "allowAny": [ - "vite", - "vitest" - ], - "allowedVersions": { - "vite": "*", - "vitest": "*" - } - } + "vite": "catalog:", + "vite-plus": "catalog:" }, "packageManager": "pnpm@" } +> cat pnpm-workspace.yaml # check pnpm-workspace.yaml has overrides and catalog +catalog: + vite: npm:@voidzero-dev/vite-plus-core@latest + vitest: npm:@voidzero-dev/vite-plus-test@latest + vite-plus: latest +overrides: + vite: 'catalog:' + vitest: 'catalog:' +peerDependencyRules: + allowAny: + - vite + - vitest + allowedVersions: + vite: '*' + vitest: '*' + > cat vite.config.ts # check staged config migrated to vite.config.ts import { defineConfig } from 'vite-plus'; diff --git a/packages/cli/snap-tests-global/migration-existing-husky-lint-staged/steps.json b/packages/cli/snap-tests-global/migration-existing-husky-lint-staged/steps.json index 5c935b308a..451b59b216 100644 --- a/packages/cli/snap-tests-global/migration-existing-husky-lint-staged/steps.json +++ b/packages/cli/snap-tests-global/migration-existing-husky-lint-staged/steps.json @@ -1,8 +1,12 @@ { "commands": [ - { "command": "git init", "ignoreOutput": true }, + { + "command": "git init", + "ignoreOutput": true + }, "vp migrate --no-interactive # migration should rewrite husky and lint-staged", "cat package.json # check prepare rewritten, lint-staged removed, both removed from devDeps", + "cat pnpm-workspace.yaml # check pnpm-workspace.yaml has overrides and catalog", "cat vite.config.ts # check staged config migrated to vite.config.ts", "cat .vite-hooks/pre-commit # check pre-commit hook rewritten" ] diff --git a/packages/cli/snap-tests-global/migration-existing-husky-v8-hooks/snap.txt b/packages/cli/snap-tests-global/migration-existing-husky-v8-hooks/snap.txt index 27b4479bc2..61ac08908f 100644 --- a/packages/cli/snap-tests-global/migration-existing-husky-v8-hooks/snap.txt +++ b/packages/cli/snap-tests-global/migration-existing-husky-v8-hooks/snap.txt @@ -17,28 +17,28 @@ VITE+ - The Unified Toolchain for the Web "devDependencies": { "husky": "^8.0.0", "lint-staged": "^15.0.0", - "vite": "npm:@voidzero-dev/vite-plus-core@latest", - "vite-plus": "latest" - }, - "pnpm": { - "overrides": { - "vite": "npm:@voidzero-dev/vite-plus-core@latest", - "vitest": "npm:@voidzero-dev/vite-plus-test@latest" - }, - "peerDependencyRules": { - "allowAny": [ - "vite", - "vitest" - ], - "allowedVersions": { - "vite": "*", - "vitest": "*" - } - } + "vite": "catalog:", + "vite-plus": "catalog:" }, "packageManager": "pnpm@" } +> cat pnpm-workspace.yaml # check pnpm-workspace.yaml has overrides and catalog +catalog: + vite: npm:@voidzero-dev/vite-plus-core@latest + vitest: npm:@voidzero-dev/vite-plus-test@latest + vite-plus: latest +overrides: + vite: 'catalog:' + vitest: 'catalog:' +peerDependencyRules: + allowAny: + - vite + - vitest + allowedVersions: + vite: '*' + vitest: '*' + > cat .husky/pre-commit # hook file should be unchanged (still has bootstrap) . "$(dirname -- "$0")/_/husky.sh" diff --git a/packages/cli/snap-tests-global/migration-existing-husky-v8-hooks/steps.json b/packages/cli/snap-tests-global/migration-existing-husky-v8-hooks/steps.json index 412f02c265..d04bf8a054 100644 --- a/packages/cli/snap-tests-global/migration-existing-husky-v8-hooks/steps.json +++ b/packages/cli/snap-tests-global/migration-existing-husky-v8-hooks/steps.json @@ -1,8 +1,12 @@ { "commands": [ - { "command": "git init", "ignoreOutput": true }, + { + "command": "git init", + "ignoreOutput": true + }, "vp migrate --no-interactive # should warn about husky v8 and skip hooks setup", "cat package.json # husky/lint-staged should remain in devDeps, prepare should stay as husky", + "cat pnpm-workspace.yaml # check pnpm-workspace.yaml has overrides and catalog", "cat .husky/pre-commit # hook file should be unchanged (still has bootstrap)" ] } diff --git a/packages/cli/snap-tests-global/migration-existing-husky-v8-multi-hooks/snap.txt b/packages/cli/snap-tests-global/migration-existing-husky-v8-multi-hooks/snap.txt index ce33fd7bc5..0a2e50bb3f 100644 --- a/packages/cli/snap-tests-global/migration-existing-husky-v8-multi-hooks/snap.txt +++ b/packages/cli/snap-tests-global/migration-existing-husky-v8-multi-hooks/snap.txt @@ -17,28 +17,28 @@ VITE+ - The Unified Toolchain for the Web "devDependencies": { "husky": "^8.0.0", "lint-staged": "^15.0.0", - "vite": "npm:@voidzero-dev/vite-plus-core@latest", - "vite-plus": "latest" - }, - "pnpm": { - "overrides": { - "vite": "npm:@voidzero-dev/vite-plus-core@latest", - "vitest": "npm:@voidzero-dev/vite-plus-test@latest" - }, - "peerDependencyRules": { - "allowAny": [ - "vite", - "vitest" - ], - "allowedVersions": { - "vite": "*", - "vitest": "*" - } - } + "vite": "catalog:", + "vite-plus": "catalog:" }, "packageManager": "pnpm@" } +> cat pnpm-workspace.yaml # check pnpm-workspace.yaml has overrides and catalog +catalog: + vite: npm:@voidzero-dev/vite-plus-core@latest + vitest: npm:@voidzero-dev/vite-plus-test@latest + vite-plus: latest +overrides: + vite: 'catalog:' + vitest: 'catalog:' +peerDependencyRules: + allowAny: + - vite + - vitest + allowedVersions: + vite: '*' + vitest: '*' + > cat .husky/pre-commit # hook file should be unchanged (still has bootstrap) . "$(dirname -- "$0")/_/husky.sh" diff --git a/packages/cli/snap-tests-global/migration-existing-husky-v8-multi-hooks/steps.json b/packages/cli/snap-tests-global/migration-existing-husky-v8-multi-hooks/steps.json index b4eeb42f05..056cc24115 100644 --- a/packages/cli/snap-tests-global/migration-existing-husky-v8-multi-hooks/steps.json +++ b/packages/cli/snap-tests-global/migration-existing-husky-v8-multi-hooks/steps.json @@ -1,8 +1,12 @@ { "commands": [ - { "command": "git init", "ignoreOutput": true }, + { + "command": "git init", + "ignoreOutput": true + }, "vp migrate --no-interactive # should warn about husky v8 and skip hooks setup", "cat package.json # husky/lint-staged should remain in devDeps, prepare should stay as husky", + "cat pnpm-workspace.yaml # check pnpm-workspace.yaml has overrides and catalog", "cat .husky/pre-commit # hook file should be unchanged (still has bootstrap)", "cat .husky/commit-msg # hook file should be unchanged (still has bootstrap)" ] diff --git a/packages/cli/snap-tests-global/migration-existing-husky/snap.txt b/packages/cli/snap-tests-global/migration-existing-husky/snap.txt index 256cfa698e..629b1dc37c 100644 --- a/packages/cli/snap-tests-global/migration-existing-husky/snap.txt +++ b/packages/cli/snap-tests-global/migration-existing-husky/snap.txt @@ -14,27 +14,27 @@ VITE+ - The Unified Toolchain for the Web "prepare": "vp config" }, "devDependencies": { - "vite": "npm:@voidzero-dev/vite-plus-core@latest", - "vite-plus": "latest" - }, - "pnpm": { - "overrides": { - "vite": "npm:@voidzero-dev/vite-plus-core@latest", - "vitest": "npm:@voidzero-dev/vite-plus-test@latest" - }, - "peerDependencyRules": { - "allowAny": [ - "vite", - "vitest" - ], - "allowedVersions": { - "vite": "*", - "vitest": "*" - } - } + "vite": "catalog:", + "vite-plus": "catalog:" }, "packageManager": "pnpm@" } +> cat pnpm-workspace.yaml # check pnpm-workspace.yaml has overrides and catalog +catalog: + vite: npm:@voidzero-dev/vite-plus-core@latest + vitest: npm:@voidzero-dev/vite-plus-test@latest + vite-plus: latest +overrides: + vite: 'catalog:' + vitest: 'catalog:' +peerDependencyRules: + allowAny: + - vite + - vitest + allowedVersions: + vite: '*' + vitest: '*' + > cat .vite-hooks/pre-commit # check pre-commit hook rewritten to vp staged vp staged diff --git a/packages/cli/snap-tests-global/migration-existing-husky/steps.json b/packages/cli/snap-tests-global/migration-existing-husky/steps.json index bcb3f617dd..95be93689b 100644 --- a/packages/cli/snap-tests-global/migration-existing-husky/steps.json +++ b/packages/cli/snap-tests-global/migration-existing-husky/steps.json @@ -1,8 +1,12 @@ { "commands": [ - { "command": "git init", "ignoreOutput": true }, + { + "command": "git init", + "ignoreOutput": true + }, "vp migrate --no-interactive # migration should rewrite husky to vp config", "cat package.json # check prepare script rewritten and husky removed from devDeps", + "cat pnpm-workspace.yaml # check pnpm-workspace.yaml has overrides and catalog", "cat .vite-hooks/pre-commit # check pre-commit hook rewritten to vp staged" ] } diff --git a/packages/cli/snap-tests-global/migration-existing-lint-staged-config/snap.txt b/packages/cli/snap-tests-global/migration-existing-lint-staged-config/snap.txt index 5031acb9ca..5fe67178f7 100644 --- a/packages/cli/snap-tests-global/migration-existing-lint-staged-config/snap.txt +++ b/packages/cli/snap-tests-global/migration-existing-lint-staged-config/snap.txt @@ -11,24 +11,8 @@ VITE+ - The Unified Toolchain for the Web { "name": "migration-existing-lint-staged-config", "devDependencies": { - "vite": "npm:@voidzero-dev/vite-plus-core@latest", - "vite-plus": "latest" - }, - "pnpm": { - "overrides": { - "vite": "npm:@voidzero-dev/vite-plus-core@latest", - "vitest": "npm:@voidzero-dev/vite-plus-test@latest" - }, - "peerDependencyRules": { - "allowAny": [ - "vite", - "vitest" - ], - "allowedVersions": { - "vite": "*", - "vitest": "*" - } - } + "vite": "catalog:", + "vite-plus": "catalog:" }, "packageManager": "pnpm@", "scripts": { @@ -36,6 +20,22 @@ VITE+ - The Unified Toolchain for the Web } } +> cat pnpm-workspace.yaml # check pnpm-workspace.yaml has overrides and catalog +catalog: + vite: npm:@voidzero-dev/vite-plus-core@latest + vitest: npm:@voidzero-dev/vite-plus-test@latest + vite-plus: latest +overrides: + vite: 'catalog:' + vitest: 'catalog:' +peerDependencyRules: + allowAny: + - vite + - vitest + allowedVersions: + vite: '*' + vitest: '*' + > test ! -f .lintstagedrc.json # check lintstagedrc.json (should be deleted after inlining to vite.config.ts) > cat vite.config.ts # check staged config migrated to vite.config.ts import { defineConfig } from 'vite-plus'; diff --git a/packages/cli/snap-tests-global/migration-existing-lint-staged-config/steps.json b/packages/cli/snap-tests-global/migration-existing-lint-staged-config/steps.json index bd4eee52c4..0dc6422099 100644 --- a/packages/cli/snap-tests-global/migration-existing-lint-staged-config/steps.json +++ b/packages/cli/snap-tests-global/migration-existing-lint-staged-config/steps.json @@ -1,8 +1,12 @@ { "commands": [ - { "command": "git init", "ignoreOutput": true }, + { + "command": "git init", + "ignoreOutput": true + }, "vp migrate --no-interactive # migration should add prepare script, remove lint-staged from devDeps", "cat package.json # check prepare script added, lint-staged removed from devDeps", + "cat pnpm-workspace.yaml # check pnpm-workspace.yaml has overrides and catalog", "test ! -f .lintstagedrc.json # check lintstagedrc.json (should be deleted after inlining to vite.config.ts)", "cat vite.config.ts # check staged config migrated to vite.config.ts", "cat .vite-hooks/pre-commit # check pre-commit hook created" diff --git a/packages/cli/snap-tests-global/migration-existing-pnpm-exec-lint-staged/snap.txt b/packages/cli/snap-tests-global/migration-existing-pnpm-exec-lint-staged/snap.txt index ff4a2df284..6ea4119a2a 100644 --- a/packages/cli/snap-tests-global/migration-existing-pnpm-exec-lint-staged/snap.txt +++ b/packages/cli/snap-tests-global/migration-existing-pnpm-exec-lint-staged/snap.txt @@ -14,28 +14,28 @@ VITE+ - The Unified Toolchain for the Web "prepare": "vp config" }, "devDependencies": { - "vite": "npm:@voidzero-dev/vite-plus-core@latest", - "vite-plus": "latest" - }, - "pnpm": { - "overrides": { - "vite": "npm:@voidzero-dev/vite-plus-core@latest", - "vitest": "npm:@voidzero-dev/vite-plus-test@latest" - }, - "peerDependencyRules": { - "allowAny": [ - "vite", - "vitest" - ], - "allowedVersions": { - "vite": "*", - "vitest": "*" - } - } + "vite": "catalog:", + "vite-plus": "catalog:" }, "packageManager": "pnpm@" } +> cat pnpm-workspace.yaml # check pnpm-workspace.yaml has overrides and catalog +catalog: + vite: npm:@voidzero-dev/vite-plus-core@latest + vitest: npm:@voidzero-dev/vite-plus-test@latest + vite-plus: latest +overrides: + vite: 'catalog:' + vitest: 'catalog:' +peerDependencyRules: + allowAny: + - vite + - vitest + allowedVersions: + vite: '*' + vitest: '*' + > cat vite.config.ts # check staged config migrated to vite.config.ts import { defineConfig } from 'vite-plus'; diff --git a/packages/cli/snap-tests-global/migration-existing-pnpm-exec-lint-staged/steps.json b/packages/cli/snap-tests-global/migration-existing-pnpm-exec-lint-staged/steps.json index 8108ea1c63..d8799cee4c 100644 --- a/packages/cli/snap-tests-global/migration-existing-pnpm-exec-lint-staged/steps.json +++ b/packages/cli/snap-tests-global/migration-existing-pnpm-exec-lint-staged/steps.json @@ -1,8 +1,12 @@ { "commands": [ - { "command": "git init", "ignoreOutput": true }, + { + "command": "git init", + "ignoreOutput": true + }, "vp migrate --no-interactive # migration should strip pnpm exec lint-staged and add vp staged", "cat package.json # check prepare rewritten and husky/lint-staged removed", + "cat pnpm-workspace.yaml # check pnpm-workspace.yaml has overrides and catalog", "cat vite.config.ts # check staged config migrated to vite.config.ts", "cat .vite-hooks/pre-commit # check pnpm exec lint-staged replaced with vp staged" ] diff --git a/packages/cli/snap-tests-global/migration-existing-prepare-script/snap.txt b/packages/cli/snap-tests-global/migration-existing-prepare-script/snap.txt index ca8679edbe..8b4ba0f17d 100644 --- a/packages/cli/snap-tests-global/migration-existing-prepare-script/snap.txt +++ b/packages/cli/snap-tests-global/migration-existing-prepare-script/snap.txt @@ -15,27 +15,27 @@ VITE+ - The Unified Toolchain for the Web "prepare": "vp config && npm run build" }, "devDependencies": { - "vite": "npm:@voidzero-dev/vite-plus-core@latest", - "vite-plus": "latest" - }, - "pnpm": { - "overrides": { - "vite": "npm:@voidzero-dev/vite-plus-core@latest", - "vitest": "npm:@voidzero-dev/vite-plus-test@latest" - }, - "peerDependencyRules": { - "allowAny": [ - "vite", - "vitest" - ], - "allowedVersions": { - "vite": "*", - "vitest": "*" - } - } + "vite": "catalog:", + "vite-plus": "catalog:" }, "packageManager": "pnpm@" } +> cat pnpm-workspace.yaml # check pnpm-workspace.yaml has overrides and catalog +catalog: + vite: npm:@voidzero-dev/vite-plus-core@latest + vitest: npm:@voidzero-dev/vite-plus-test@latest + vite-plus: latest +overrides: + vite: 'catalog:' + vitest: 'catalog:' +peerDependencyRules: + allowAny: + - vite + - vitest + allowedVersions: + vite: '*' + vitest: '*' + > cat .vite-hooks/pre-commit # check pre-commit hook vp staged diff --git a/packages/cli/snap-tests-global/migration-existing-prepare-script/steps.json b/packages/cli/snap-tests-global/migration-existing-prepare-script/steps.json index 94ccc56f6a..edbb95a223 100644 --- a/packages/cli/snap-tests-global/migration-existing-prepare-script/steps.json +++ b/packages/cli/snap-tests-global/migration-existing-prepare-script/steps.json @@ -1,8 +1,12 @@ { "commands": [ - { "command": "git init", "ignoreOutput": true }, + { + "command": "git init", + "ignoreOutput": true + }, "vp migrate --no-interactive # migration should compose vp config with existing prepare script", "cat package.json # check prepare script is composed: vp config && npm run build", + "cat pnpm-workspace.yaml # check pnpm-workspace.yaml has overrides and catalog", "cat .vite-hooks/pre-commit # check pre-commit hook" ] } diff --git a/packages/cli/snap-tests-global/migration-from-tsdown-json-config/snap.txt b/packages/cli/snap-tests-global/migration-from-tsdown-json-config/snap.txt index 29d24363a9..4c42419bb0 100644 --- a/packages/cli/snap-tests-global/migration-from-tsdown-json-config/snap.txt +++ b/packages/cli/snap-tests-global/migration-from-tsdown-json-config/snap.txt @@ -39,28 +39,28 @@ export default defineConfig({ "prepare": "vp config" }, "devDependencies": { - "vite": "npm:@voidzero-dev/vite-plus-core@latest", - "vite-plus": "latest" - }, - "pnpm": { - "overrides": { - "vite": "npm:@voidzero-dev/vite-plus-core@latest", - "vitest": "npm:@voidzero-dev/vite-plus-test@latest" - }, - "peerDependencyRules": { - "allowAny": [ - "vite", - "vitest" - ], - "allowedVersions": { - "vite": "*", - "vitest": "*" - } - } + "vite": "catalog:", + "vite-plus": "catalog:" }, "packageManager": "pnpm@" } +> cat pnpm-workspace.yaml # check pnpm-workspace.yaml has overrides and catalog +catalog: + vite: npm:@voidzero-dev/vite-plus-core@latest + vitest: npm:@voidzero-dev/vite-plus-test@latest + vite-plus: latest +overrides: + vite: 'catalog:' + vitest: 'catalog:' +peerDependencyRules: + allowAny: + - vite + - vitest + allowedVersions: + vite: '*' + vitest: '*' + > vp migrate --no-interactive # run migration again to check if it is idempotent VITE+ - The Unified Toolchain for the Web @@ -100,24 +100,8 @@ export default defineConfig({ "prepare": "vp config" }, "devDependencies": { - "vite": "npm:@voidzero-dev/vite-plus-core@latest", - "vite-plus": "latest" - }, - "pnpm": { - "overrides": { - "vite": "npm:@voidzero-dev/vite-plus-core@latest", - "vitest": "npm:@voidzero-dev/vite-plus-test@latest" - }, - "peerDependencyRules": { - "allowAny": [ - "vite", - "vitest" - ], - "allowedVersions": { - "vite": "*", - "vitest": "*" - } - } + "vite": "catalog:", + "vite-plus": "catalog:" }, "packageManager": "pnpm@" } diff --git a/packages/cli/snap-tests-global/migration-from-tsdown-json-config/steps.json b/packages/cli/snap-tests-global/migration-from-tsdown-json-config/steps.json index 288d212f2e..f6b05b0959 100644 --- a/packages/cli/snap-tests-global/migration-from-tsdown-json-config/steps.json +++ b/packages/cli/snap-tests-global/migration-from-tsdown-json-config/steps.json @@ -4,6 +4,7 @@ "test ! -f tsdown.config.json # check tsdown.config.json should be removed", "cat vite.config.ts # check vite.config.ts", "cat package.json # check package.json", + "cat pnpm-workspace.yaml # check pnpm-workspace.yaml has overrides and catalog", "vp migrate --no-interactive # run migration again to check if it is idempotent", "cat vite.config.ts # check vite.config.ts", "cat package.json # check package.json" diff --git a/packages/cli/snap-tests-global/migration-from-tsdown/snap.txt b/packages/cli/snap-tests-global/migration-from-tsdown/snap.txt index 93eb0448c8..a2d835cefa 100644 --- a/packages/cli/snap-tests-global/migration-from-tsdown/snap.txt +++ b/packages/cli/snap-tests-global/migration-from-tsdown/snap.txt @@ -41,28 +41,28 @@ export default defineConfig({ "prepare": "vp config" }, "devDependencies": { - "vite": "npm:@voidzero-dev/vite-plus-core@latest", - "vite-plus": "latest" - }, - "pnpm": { - "overrides": { - "vite": "npm:@voidzero-dev/vite-plus-core@latest", - "vitest": "npm:@voidzero-dev/vite-plus-test@latest" - }, - "peerDependencyRules": { - "allowAny": [ - "vite", - "vitest" - ], - "allowedVersions": { - "vite": "*", - "vitest": "*" - } - } + "vite": "catalog:", + "vite-plus": "catalog:" }, "packageManager": "pnpm@" } +> cat pnpm-workspace.yaml # check pnpm-workspace.yaml has overrides and catalog +catalog: + vite: npm:@voidzero-dev/vite-plus-core@latest + vitest: npm:@voidzero-dev/vite-plus-test@latest + vite-plus: latest +overrides: + vite: 'catalog:' + vitest: 'catalog:' +peerDependencyRules: + allowAny: + - vite + - vitest + allowedVersions: + vite: '*' + vitest: '*' + > vp migrate --no-interactive # run migration again to check if it is idempotent VITE+ - The Unified Toolchain for the Web @@ -103,24 +103,8 @@ export default defineConfig({ "prepare": "vp config" }, "devDependencies": { - "vite": "npm:@voidzero-dev/vite-plus-core@latest", - "vite-plus": "latest" - }, - "pnpm": { - "overrides": { - "vite": "npm:@voidzero-dev/vite-plus-core@latest", - "vitest": "npm:@voidzero-dev/vite-plus-test@latest" - }, - "peerDependencyRules": { - "allowAny": [ - "vite", - "vitest" - ], - "allowedVersions": { - "vite": "*", - "vitest": "*" - } - } + "vite": "catalog:", + "vite-plus": "catalog:" }, "packageManager": "pnpm@" } diff --git a/packages/cli/snap-tests-global/migration-from-tsdown/steps.json b/packages/cli/snap-tests-global/migration-from-tsdown/steps.json index 5a050e597a..eca132aac2 100644 --- a/packages/cli/snap-tests-global/migration-from-tsdown/steps.json +++ b/packages/cli/snap-tests-global/migration-from-tsdown/steps.json @@ -4,6 +4,7 @@ "cat tsdown.config.ts # check tsdown.config.ts", "cat vite.config.ts # check vite.config.ts", "cat package.json # check package.json", + "cat pnpm-workspace.yaml # check pnpm-workspace.yaml has overrides and catalog", "vp migrate --no-interactive # run migration again to check if it is idempotent", "cat tsdown.config.ts # check tsdown.config.ts", "cat vite.config.ts # check vite.config.ts", diff --git a/packages/cli/snap-tests-global/migration-from-vitest-config/snap.txt b/packages/cli/snap-tests-global/migration-from-vitest-config/snap.txt index ad63e3e64b..54cfb43700 100644 --- a/packages/cli/snap-tests-global/migration-from-vitest-config/snap.txt +++ b/packages/cli/snap-tests-global/migration-from-vitest-config/snap.txt @@ -42,26 +42,26 @@ export default defineConfig({ "prepare": "vp config" }, "devDependencies": { - "vite": "npm:@voidzero-dev/vite-plus-core@latest", - "vitest": "npm:@voidzero-dev/vite-plus-test@latest", + "vite": "catalog:", + "vitest": "catalog:", "playwright": "*", - "vite-plus": "latest" - }, - "pnpm": { - "overrides": { - "vite": "npm:@voidzero-dev/vite-plus-core@latest", - "vitest": "npm:@voidzero-dev/vite-plus-test@latest" - }, - "peerDependencyRules": { - "allowAny": [ - "vite", - "vitest" - ], - "allowedVersions": { - "vite": "*", - "vitest": "*" - } - } + "vite-plus": "catalog:" }, "packageManager": "pnpm@" } + +> cat pnpm-workspace.yaml # check pnpm-workspace.yaml has overrides and catalog +catalog: + vite: npm:@voidzero-dev/vite-plus-core@latest + vitest: npm:@voidzero-dev/vite-plus-test@latest + vite-plus: latest +overrides: + vite: 'catalog:' + vitest: 'catalog:' +peerDependencyRules: + allowAny: + - vite + - vitest + allowedVersions: + vite: '*' + vitest: '*' diff --git a/packages/cli/snap-tests-global/migration-from-vitest-config/steps.json b/packages/cli/snap-tests-global/migration-from-vitest-config/steps.json index 593345b4fd..1cd2bdcfd9 100644 --- a/packages/cli/snap-tests-global/migration-from-vitest-config/steps.json +++ b/packages/cli/snap-tests-global/migration-from-vitest-config/steps.json @@ -2,6 +2,7 @@ "commands": [ "vp migrate --no-interactive # migration should rewrite imports to vite-plus", "cat vitest.config.ts # check vitest.config.ts", - "cat package.json # check package.json" + "cat package.json # check package.json", + "cat pnpm-workspace.yaml # check pnpm-workspace.yaml has overrides and catalog" ] } diff --git a/packages/cli/snap-tests-global/migration-from-vitest-files/snap.txt b/packages/cli/snap-tests-global/migration-from-vitest-files/snap.txt index 49a6c41b9f..89557814ae 100644 --- a/packages/cli/snap-tests-global/migration-from-vitest-files/snap.txt +++ b/packages/cli/snap-tests-global/migration-from-vitest-files/snap.txt @@ -17,30 +17,30 @@ VITE+ - The Unified Toolchain for the Web "prepare": "vp config" }, "devDependencies": { - "vite": "npm:@voidzero-dev/vite-plus-core@latest", - "vitest": "npm:@voidzero-dev/vite-plus-test@latest", + "vite": "catalog:", + "vitest": "catalog:", "playwright": "*", - "vite-plus": "latest" - }, - "pnpm": { - "overrides": { - "vite": "npm:@voidzero-dev/vite-plus-core@latest", - "vitest": "npm:@voidzero-dev/vite-plus-test@latest" - }, - "peerDependencyRules": { - "allowAny": [ - "vite", - "vitest" - ], - "allowedVersions": { - "vite": "*", - "vitest": "*" - } - } + "vite-plus": "catalog:" }, "packageManager": "pnpm@" } +> cat pnpm-workspace.yaml # check pnpm-workspace.yaml has overrides and catalog +catalog: + vite: npm:@voidzero-dev/vite-plus-core@latest + vitest: npm:@voidzero-dev/vite-plus-test@latest + vite-plus: latest +overrides: + vite: 'catalog:' + vitest: 'catalog:' +peerDependencyRules: + allowAny: + - vite + - vitest + allowedVersions: + vite: '*' + vitest: '*' + > cat test/hello.ts # check test/hello.ts import { server } from 'vite-plus/test/browser-playwright/context'; import { test, describe, expect, it } from 'vite-plus/test'; diff --git a/packages/cli/snap-tests-global/migration-from-vitest-files/steps.json b/packages/cli/snap-tests-global/migration-from-vitest-files/steps.json index c1088f184a..3ac99104c7 100644 --- a/packages/cli/snap-tests-global/migration-from-vitest-files/steps.json +++ b/packages/cli/snap-tests-global/migration-from-vitest-files/steps.json @@ -2,6 +2,7 @@ "commands": [ "vp migrate --no-interactive # migration should rewrite imports to vite-plus", "cat package.json # check package.json", + "cat pnpm-workspace.yaml # check pnpm-workspace.yaml has overrides and catalog", "cat test/hello.ts # check test/hello.ts" ] } diff --git a/packages/cli/snap-tests-global/migration-hooks-skip-on-existing-hookspath/snap.txt b/packages/cli/snap-tests-global/migration-hooks-skip-on-existing-hookspath/snap.txt index d4c0a7a716..1255e763d3 100644 --- a/packages/cli/snap-tests-global/migration-hooks-skip-on-existing-hookspath/snap.txt +++ b/packages/cli/snap-tests-global/migration-hooks-skip-on-existing-hookspath/snap.txt @@ -17,27 +17,27 @@ VITE+ - The Unified Toolchain for the Web }, "devDependencies": { "husky": "^9.1.7", - "vite": "npm:@voidzero-dev/vite-plus-core@latest", - "vite-plus": "latest" - }, - "pnpm": { - "overrides": { - "vite": "npm:@voidzero-dev/vite-plus-core@latest", - "vitest": "npm:@voidzero-dev/vite-plus-test@latest" - }, - "peerDependencyRules": { - "allowAny": [ - "vite", - "vitest" - ], - "allowedVersions": { - "vite": "*", - "vitest": "*" - } - } + "vite": "catalog:", + "vite-plus": "catalog:" }, "packageManager": "pnpm@" } +> cat pnpm-workspace.yaml # check pnpm-workspace.yaml has overrides and catalog +catalog: + vite: npm:@voidzero-dev/vite-plus-core@latest + vitest: npm:@voidzero-dev/vite-plus-test@latest + vite-plus: latest +overrides: + vite: 'catalog:' + vitest: 'catalog:' +peerDependencyRules: + allowAny: + - vite + - vitest + allowedVersions: + vite: '*' + vitest: '*' + > git config --local core.hooksPath # should still be .custom-hooks .custom-hooks diff --git a/packages/cli/snap-tests-global/migration-hooks-skip-on-existing-hookspath/steps.json b/packages/cli/snap-tests-global/migration-hooks-skip-on-existing-hookspath/steps.json index cbde72faae..ea17131207 100644 --- a/packages/cli/snap-tests-global/migration-hooks-skip-on-existing-hookspath/steps.json +++ b/packages/cli/snap-tests-global/migration-hooks-skip-on-existing-hookspath/steps.json @@ -1,9 +1,16 @@ { "commands": [ - { "command": "git init", "ignoreOutput": true }, - { "command": "git config core.hooksPath .custom-hooks", "ignoreOutput": true }, + { + "command": "git init", + "ignoreOutput": true + }, + { + "command": "git config core.hooksPath .custom-hooks", + "ignoreOutput": true + }, "vp migrate --no-interactive # should skip hooks because core.hooksPath is already set", "cat package.json # prepare should stay 'husky' and husky must remain in devDependencies", + "cat pnpm-workspace.yaml # check pnpm-workspace.yaml has overrides and catalog", "git config --local core.hooksPath # should still be .custom-hooks" ] } diff --git a/packages/cli/snap-tests-global/migration-husky-latest-dist-tag-v9-installed/snap.txt b/packages/cli/snap-tests-global/migration-husky-latest-dist-tag-v9-installed/snap.txt index 6a33076d93..08cddfcd03 100644 --- a/packages/cli/snap-tests-global/migration-husky-latest-dist-tag-v9-installed/snap.txt +++ b/packages/cli/snap-tests-global/migration-husky-latest-dist-tag-v9-installed/snap.txt @@ -14,24 +14,24 @@ VITE+ - The Unified Toolchain for the Web "prepare": "vp config" }, "devDependencies": { - "vite": "npm:@voidzero-dev/vite-plus-core@latest", - "vite-plus": "latest" - }, - "pnpm": { - "overrides": { - "vite": "npm:@voidzero-dev/vite-plus-core@latest", - "vitest": "npm:@voidzero-dev/vite-plus-test@latest" - }, - "peerDependencyRules": { - "allowAny": [ - "vite", - "vitest" - ], - "allowedVersions": { - "vite": "*", - "vitest": "*" - } - } + "vite": "catalog:", + "vite-plus": "catalog:" }, "packageManager": "pnpm@" } + +> cat pnpm-workspace.yaml # check pnpm-workspace.yaml has overrides and catalog +catalog: + vite: npm:@voidzero-dev/vite-plus-core@latest + vitest: npm:@voidzero-dev/vite-plus-test@latest + vite-plus: latest +overrides: + vite: 'catalog:' + vitest: 'catalog:' +peerDependencyRules: + allowAny: + - vite + - vitest + allowedVersions: + vite: '*' + vitest: '*' diff --git a/packages/cli/snap-tests-global/migration-husky-latest-dist-tag-v9-installed/steps.json b/packages/cli/snap-tests-global/migration-husky-latest-dist-tag-v9-installed/steps.json index 1d17f7cb11..0f3d721dfc 100644 --- a/packages/cli/snap-tests-global/migration-husky-latest-dist-tag-v9-installed/steps.json +++ b/packages/cli/snap-tests-global/migration-husky-latest-dist-tag-v9-installed/steps.json @@ -1,7 +1,11 @@ { "commands": [ - { "command": "git init", "ignoreOutput": true }, + { + "command": "git init", + "ignoreOutput": true + }, "vp migrate --no-interactive # should resolve husky v9 from node_modules, no warning", - "cat package.json # husky and lint-staged should be removed" + "cat package.json # husky and lint-staged should be removed", + "cat pnpm-workspace.yaml # check pnpm-workspace.yaml has overrides and catalog" ] } diff --git a/packages/cli/snap-tests-global/migration-husky-latest-dist-tag/snap.txt b/packages/cli/snap-tests-global/migration-husky-latest-dist-tag/snap.txt index 98268e651c..b631ea9433 100644 --- a/packages/cli/snap-tests-global/migration-husky-latest-dist-tag/snap.txt +++ b/packages/cli/snap-tests-global/migration-husky-latest-dist-tag/snap.txt @@ -16,24 +16,24 @@ VITE+ - The Unified Toolchain for the Web }, "devDependencies": { "husky": "latest", - "vite": "npm:@voidzero-dev/vite-plus-core@latest", - "vite-plus": "latest" - }, - "pnpm": { - "overrides": { - "vite": "npm:@voidzero-dev/vite-plus-core@latest", - "vitest": "npm:@voidzero-dev/vite-plus-test@latest" - }, - "peerDependencyRules": { - "allowAny": [ - "vite", - "vitest" - ], - "allowedVersions": { - "vite": "*", - "vitest": "*" - } - } + "vite": "catalog:", + "vite-plus": "catalog:" }, "packageManager": "pnpm@" } + +> cat pnpm-workspace.yaml # check pnpm-workspace.yaml has overrides and catalog +catalog: + vite: npm:@voidzero-dev/vite-plus-core@latest + vitest: npm:@voidzero-dev/vite-plus-test@latest + vite-plus: latest +overrides: + vite: 'catalog:' + vitest: 'catalog:' +peerDependencyRules: + allowAny: + - vite + - vitest + allowedVersions: + vite: '*' + vitest: '*' diff --git a/packages/cli/snap-tests-global/migration-husky-latest-dist-tag/steps.json b/packages/cli/snap-tests-global/migration-husky-latest-dist-tag/steps.json index 33fe726efc..627a312bbc 100644 --- a/packages/cli/snap-tests-global/migration-husky-latest-dist-tag/steps.json +++ b/packages/cli/snap-tests-global/migration-husky-latest-dist-tag/steps.json @@ -1,7 +1,11 @@ { "commands": [ - { "command": "git init", "ignoreOutput": true }, + { + "command": "git init", + "ignoreOutput": true + }, "vp migrate --no-interactive # should warn about uncoercible husky version", - "cat package.json # husky should still be in devDeps" + "cat package.json # husky should still be in devDeps", + "cat pnpm-workspace.yaml # check pnpm-workspace.yaml has overrides and catalog" ] } diff --git a/packages/cli/snap-tests-global/migration-husky-or-prepare/snap.txt b/packages/cli/snap-tests-global/migration-husky-or-prepare/snap.txt index b9deafe60b..4ca5d4355b 100644 --- a/packages/cli/snap-tests-global/migration-husky-or-prepare/snap.txt +++ b/packages/cli/snap-tests-global/migration-husky-or-prepare/snap.txt @@ -14,24 +14,24 @@ VITE+ - The Unified Toolchain for the Web "prepare": "vp config || true" }, "devDependencies": { - "vite": "npm:@voidzero-dev/vite-plus-core@latest", - "vite-plus": "latest" - }, - "pnpm": { - "overrides": { - "vite": "npm:@voidzero-dev/vite-plus-core@latest", - "vitest": "npm:@voidzero-dev/vite-plus-test@latest" - }, - "peerDependencyRules": { - "allowAny": [ - "vite", - "vitest" - ], - "allowedVersions": { - "vite": "*", - "vitest": "*" - } - } + "vite": "catalog:", + "vite-plus": "catalog:" }, "packageManager": "pnpm@" } + +> cat pnpm-workspace.yaml # check pnpm-workspace.yaml has overrides and catalog +catalog: + vite: npm:@voidzero-dev/vite-plus-core@latest + vitest: npm:@voidzero-dev/vite-plus-test@latest + vite-plus: latest +overrides: + vite: 'catalog:' + vitest: 'catalog:' +peerDependencyRules: + allowAny: + - vite + - vitest + allowedVersions: + vite: '*' + vitest: '*' diff --git a/packages/cli/snap-tests-global/migration-husky-or-prepare/steps.json b/packages/cli/snap-tests-global/migration-husky-or-prepare/steps.json index 5aa6b204bb..211bf04252 100644 --- a/packages/cli/snap-tests-global/migration-husky-or-prepare/steps.json +++ b/packages/cli/snap-tests-global/migration-husky-or-prepare/steps.json @@ -1,7 +1,11 @@ { "commands": [ - { "command": "git init", "ignoreOutput": true }, + { + "command": "git init", + "ignoreOutput": true + }, "vp migrate --no-interactive # migration should preserve || fallback semantics", - "cat package.json # check prepare script preserves || true fallback" + "cat package.json # check prepare script preserves || true fallback", + "cat pnpm-workspace.yaml # check pnpm-workspace.yaml has overrides and catalog" ] } diff --git a/packages/cli/snap-tests-global/migration-husky-semicolon-prepare/snap.txt b/packages/cli/snap-tests-global/migration-husky-semicolon-prepare/snap.txt index 2a586baaa1..88759cfc14 100644 --- a/packages/cli/snap-tests-global/migration-husky-semicolon-prepare/snap.txt +++ b/packages/cli/snap-tests-global/migration-husky-semicolon-prepare/snap.txt @@ -14,24 +14,24 @@ VITE+ - The Unified Toolchain for the Web "prepare": "npm run build; vp config" }, "devDependencies": { - "vite": "npm:@voidzero-dev/vite-plus-core@latest", - "vite-plus": "latest" - }, - "pnpm": { - "overrides": { - "vite": "npm:@voidzero-dev/vite-plus-core@latest", - "vitest": "npm:@voidzero-dev/vite-plus-test@latest" - }, - "peerDependencyRules": { - "allowAny": [ - "vite", - "vitest" - ], - "allowedVersions": { - "vite": "*", - "vitest": "*" - } - } + "vite": "catalog:", + "vite-plus": "catalog:" }, "packageManager": "pnpm@" } + +> cat pnpm-workspace.yaml # check pnpm-workspace.yaml has overrides and catalog +catalog: + vite: npm:@voidzero-dev/vite-plus-core@latest + vitest: npm:@voidzero-dev/vite-plus-test@latest + vite-plus: latest +overrides: + vite: 'catalog:' + vitest: 'catalog:' +peerDependencyRules: + allowAny: + - vite + - vitest + allowedVersions: + vite: '*' + vitest: '*' diff --git a/packages/cli/snap-tests-global/migration-husky-semicolon-prepare/steps.json b/packages/cli/snap-tests-global/migration-husky-semicolon-prepare/steps.json index 2e4c94d6ae..0eefd4201d 100644 --- a/packages/cli/snap-tests-global/migration-husky-semicolon-prepare/steps.json +++ b/packages/cli/snap-tests-global/migration-husky-semicolon-prepare/steps.json @@ -1,7 +1,11 @@ { "commands": [ - { "command": "git init", "ignoreOutput": true }, + { + "command": "git init", + "ignoreOutput": true + }, "vp migrate --no-interactive # migration should strip husky from semicolon-composed prepare script", - "cat package.json # check husky removed from prepare script, not left as broken command" + "cat package.json # check husky removed from prepare script, not left as broken command", + "cat pnpm-workspace.yaml # check pnpm-workspace.yaml has overrides and catalog" ] } diff --git a/packages/cli/snap-tests-global/migration-husky-v8-preserves-lint-staged/snap.txt b/packages/cli/snap-tests-global/migration-husky-v8-preserves-lint-staged/snap.txt index 728d920020..e21076ada1 100644 --- a/packages/cli/snap-tests-global/migration-husky-v8-preserves-lint-staged/snap.txt +++ b/packages/cli/snap-tests-global/migration-husky-v8-preserves-lint-staged/snap.txt @@ -17,27 +17,27 @@ VITE+ - The Unified Toolchain for the Web "devDependencies": { "husky": "^8.0.0", "lint-staged": "^15.0.0", - "vite": "npm:@voidzero-dev/vite-plus-core@latest", - "vite-plus": "latest" + "vite": "catalog:", + "vite-plus": "catalog:" }, "lint-staged": { "*.{js,ts}": "eslint --fix" }, - "pnpm": { - "overrides": { - "vite": "npm:@voidzero-dev/vite-plus-core@latest", - "vitest": "npm:@voidzero-dev/vite-plus-test@latest" - }, - "peerDependencyRules": { - "allowAny": [ - "vite", - "vitest" - ], - "allowedVersions": { - "vite": "*", - "vitest": "*" - } - } - }, "packageManager": "pnpm@" } + +> cat pnpm-workspace.yaml # check pnpm-workspace.yaml has overrides and catalog +catalog: + vite: npm:@voidzero-dev/vite-plus-core@latest + vitest: npm:@voidzero-dev/vite-plus-test@latest + vite-plus: latest +overrides: + vite: 'catalog:' + vitest: 'catalog:' +peerDependencyRules: + allowAny: + - vite + - vitest + allowedVersions: + vite: '*' + vitest: '*' diff --git a/packages/cli/snap-tests-global/migration-husky-v8-preserves-lint-staged/steps.json b/packages/cli/snap-tests-global/migration-husky-v8-preserves-lint-staged/steps.json index 56daead7ec..c3f77befad 100644 --- a/packages/cli/snap-tests-global/migration-husky-v8-preserves-lint-staged/steps.json +++ b/packages/cli/snap-tests-global/migration-husky-v8-preserves-lint-staged/steps.json @@ -1,7 +1,11 @@ { "commands": [ - { "command": "git init", "ignoreOutput": true }, + { + "command": "git init", + "ignoreOutput": true + }, "vp migrate --no-interactive # should warn about husky v8, preserve lint-staged config", - "cat package.json # lint-staged config should still be in package.json" + "cat package.json # lint-staged config should still be in package.json", + "cat pnpm-workspace.yaml # check pnpm-workspace.yaml has overrides and catalog" ] } diff --git a/packages/cli/snap-tests-global/migration-lint-staged-in-scripts/snap.txt b/packages/cli/snap-tests-global/migration-lint-staged-in-scripts/snap.txt index d960df09e5..55dd18e969 100644 --- a/packages/cli/snap-tests-global/migration-lint-staged-in-scripts/snap.txt +++ b/packages/cli/snap-tests-global/migration-lint-staged-in-scripts/snap.txt @@ -15,28 +15,28 @@ VITE+ - The Unified Toolchain for the Web "check-staged": "vp staged --diff HEAD~1" }, "devDependencies": { - "vite": "npm:@voidzero-dev/vite-plus-core@latest", - "vite-plus": "latest" - }, - "pnpm": { - "overrides": { - "vite": "npm:@voidzero-dev/vite-plus-core@latest", - "vitest": "npm:@voidzero-dev/vite-plus-test@latest" - }, - "peerDependencyRules": { - "allowAny": [ - "vite", - "vitest" - ], - "allowedVersions": { - "vite": "*", - "vitest": "*" - } - } + "vite": "catalog:", + "vite-plus": "catalog:" }, "packageManager": "pnpm@" } +> cat pnpm-workspace.yaml # check pnpm-workspace.yaml has overrides and catalog +catalog: + vite: npm:@voidzero-dev/vite-plus-core@latest + vitest: npm:@voidzero-dev/vite-plus-test@latest + vite-plus: latest +overrides: + vite: 'catalog:' + vitest: 'catalog:' +peerDependencyRules: + allowAny: + - vite + - vitest + allowedVersions: + vite: '*' + vitest: '*' + > cat vite.config.ts # check staged config migrated to vite.config.ts import { defineConfig } from 'vite-plus'; diff --git a/packages/cli/snap-tests-global/migration-lint-staged-in-scripts/steps.json b/packages/cli/snap-tests-global/migration-lint-staged-in-scripts/steps.json index 687976d48b..c61635043d 100644 --- a/packages/cli/snap-tests-global/migration-lint-staged-in-scripts/steps.json +++ b/packages/cli/snap-tests-global/migration-lint-staged-in-scripts/steps.json @@ -1,8 +1,12 @@ { "commands": [ - { "command": "git init", "ignoreOutput": true }, + { + "command": "git init", + "ignoreOutput": true + }, "vp migrate --no-interactive # migration should rewrite lint-staged commands in scripts", "cat package.json # check-staged script should use vp staged, lint-staged removed from devDeps", + "cat pnpm-workspace.yaml # check pnpm-workspace.yaml has overrides and catalog", "cat vite.config.ts # check staged config migrated to vite.config.ts" ] } diff --git a/packages/cli/snap-tests-global/migration-lint-staged-merge-fail/snap.txt b/packages/cli/snap-tests-global/migration-lint-staged-merge-fail/snap.txt index bfe19bfa7d..375414dfe4 100644 --- a/packages/cli/snap-tests-global/migration-lint-staged-merge-fail/snap.txt +++ b/packages/cli/snap-tests-global/migration-lint-staged-merge-fail/snap.txt @@ -17,34 +17,34 @@ Please add staged config to vite.config.ts manually, see https://viteplus.dev/gu "name": "migration-lint-staged-merge-fail", "devDependencies": { "lint-staged": "^16.2.6", - "vite": "npm:@voidzero-dev/vite-plus-core@latest", - "vite-plus": "latest" + "vite": "catalog:", + "vite-plus": "catalog:" }, "lint-staged": { "*.css": "stylelint --fix" }, - "pnpm": { - "overrides": { - "vite": "npm:@voidzero-dev/vite-plus-core@latest", - "vitest": "npm:@voidzero-dev/vite-plus-test@latest" - }, - "peerDependencyRules": { - "allowAny": [ - "vite", - "vitest" - ], - "allowedVersions": { - "vite": "*", - "vitest": "*" - } - } - }, "packageManager": "pnpm@", "scripts": { "prepare": "vp config" } } +> cat pnpm-workspace.yaml # check pnpm-workspace.yaml has overrides and catalog +catalog: + vite: npm:@voidzero-dev/vite-plus-core@latest + vitest: npm:@voidzero-dev/vite-plus-test@latest + vite-plus: latest +overrides: + vite: 'catalog:' + vitest: 'catalog:' +peerDependencyRules: + allowAny: + - vite + - vitest + allowedVersions: + vite: '*' + vitest: '*' + > cat vite.config.ts # vite config should be unchanged (merge failed) const config = { plugins: [] }; module.exports = config; diff --git a/packages/cli/snap-tests-global/migration-lint-staged-merge-fail/steps.json b/packages/cli/snap-tests-global/migration-lint-staged-merge-fail/steps.json index 355b1bade3..e786df45c3 100644 --- a/packages/cli/snap-tests-global/migration-lint-staged-merge-fail/steps.json +++ b/packages/cli/snap-tests-global/migration-lint-staged-merge-fail/steps.json @@ -1,8 +1,12 @@ { "commands": [ - { "command": "git init", "ignoreOutput": true }, + { + "command": "git init", + "ignoreOutput": true + }, "vp migrate --no-interactive # should handle merge failure gracefully", "cat package.json # lint-staged config should be preserved when merge fails", + "cat pnpm-workspace.yaml # check pnpm-workspace.yaml has overrides and catalog", "cat vite.config.ts # vite config should be unchanged (merge failed)", "test -f .vite-hooks/pre-commit && echo 'pre-commit hook exists' || echo 'no pre-commit hook' # should NOT exist when merge fails" ] diff --git a/packages/cli/snap-tests-global/migration-lint-staged-ts-config/snap.txt b/packages/cli/snap-tests-global/migration-lint-staged-ts-config/snap.txt index 1168dd1abb..86f8c421e9 100644 --- a/packages/cli/snap-tests-global/migration-lint-staged-ts-config/snap.txt +++ b/packages/cli/snap-tests-global/migration-lint-staged-ts-config/snap.txt @@ -18,28 +18,28 @@ VITE+ - The Unified Toolchain for the Web "devDependencies": { "husky": "^9.1.7", "lint-staged": "^16.2.6", - "vite": "npm:@voidzero-dev/vite-plus-core@latest", - "vite-plus": "latest" - }, - "pnpm": { - "overrides": { - "vite": "npm:@voidzero-dev/vite-plus-core@latest", - "vitest": "npm:@voidzero-dev/vite-plus-test@latest" - }, - "peerDependencyRules": { - "allowAny": [ - "vite", - "vitest" - ], - "allowedVersions": { - "vite": "*", - "vitest": "*" - } - } + "vite": "catalog:", + "vite-plus": "catalog:" }, "packageManager": "pnpm@" } +> cat pnpm-workspace.yaml # check pnpm-workspace.yaml has overrides and catalog +catalog: + vite: npm:@voidzero-dev/vite-plus-core@latest + vitest: npm:@voidzero-dev/vite-plus-test@latest + vite-plus: latest +overrides: + vite: 'catalog:' + vitest: 'catalog:' +peerDependencyRules: + allowAny: + - vite + - vitest + allowedVersions: + vite: '*' + vitest: '*' + > cat lint-staged.config.ts # check TS config is not modified export default { "*.{js,ts}": ["oxlint --fix", "oxfmt"], diff --git a/packages/cli/snap-tests-global/migration-lint-staged-ts-config/steps.json b/packages/cli/snap-tests-global/migration-lint-staged-ts-config/steps.json index ceaf604a71..0e52920c02 100644 --- a/packages/cli/snap-tests-global/migration-lint-staged-ts-config/steps.json +++ b/packages/cli/snap-tests-global/migration-lint-staged-ts-config/steps.json @@ -1,8 +1,12 @@ { "commands": [ - { "command": "git init", "ignoreOutput": true }, + { + "command": "git init", + "ignoreOutput": true + }, "vp migrate --no-interactive # migration should warn about unsupported TS lint-staged config", "cat package.json # check lint-staged NOT added to package.json, husky/lint-staged removed from devDependencies", + "cat pnpm-workspace.yaml # check pnpm-workspace.yaml has overrides and catalog", "cat lint-staged.config.ts # check TS config is not modified" ] } diff --git a/packages/cli/snap-tests-global/migration-lintstagedrc-json/snap.txt b/packages/cli/snap-tests-global/migration-lintstagedrc-json/snap.txt index 4b1f6fb0f4..58eaf6caf2 100644 --- a/packages/cli/snap-tests-global/migration-lintstagedrc-json/snap.txt +++ b/packages/cli/snap-tests-global/migration-lintstagedrc-json/snap.txt @@ -85,24 +85,8 @@ VITE+ - The Unified Toolchain for the Web > cat package.json # check package.json { "name": "migration-lintstagedrc", - "pnpm": { - "overrides": { - "vite": "npm:@voidzero-dev/vite-plus-core@latest", - "vitest": "npm:@voidzero-dev/vite-plus-test@latest" - }, - "peerDependencyRules": { - "allowAny": [ - "vite", - "vitest" - ], - "allowedVersions": { - "vite": "*", - "vitest": "*" - } - } - }, "devDependencies": { - "vite-plus": "latest" + "vite-plus": "catalog:" }, "packageManager": "pnpm@", "scripts": { @@ -110,6 +94,22 @@ VITE+ - The Unified Toolchain for the Web } } +> cat pnpm-workspace.yaml # check pnpm-workspace.yaml has overrides and catalog +catalog: + vite: npm:@voidzero-dev/vite-plus-core@latest + vitest: npm:@voidzero-dev/vite-plus-test@latest + vite-plus: latest +overrides: + vite: 'catalog:' + vitest: 'catalog:' +peerDependencyRules: + allowAny: + - vite + - vitest + allowedVersions: + vite: '*' + vitest: '*' + > cat vite.config.ts # check staged config migrated to vite.config.ts import { defineConfig } from 'vite-plus'; diff --git a/packages/cli/snap-tests-global/migration-lintstagedrc-json/steps.json b/packages/cli/snap-tests-global/migration-lintstagedrc-json/steps.json index c1b9bffcce..b88433d566 100644 --- a/packages/cli/snap-tests-global/migration-lintstagedrc-json/steps.json +++ b/packages/cli/snap-tests-global/migration-lintstagedrc-json/steps.json @@ -4,6 +4,7 @@ "vp migrate --no-interactive # migration work with lintstagedrc.json", "cat .lintstagedrc.json # check lintstagedrc.json (should be deleted after inlining)", "cat package.json # check package.json", + "cat pnpm-workspace.yaml # check pnpm-workspace.yaml has overrides and catalog", "cat vite.config.ts # check staged config migrated to vite.config.ts" ] } diff --git a/packages/cli/snap-tests-global/migration-lintstagedrc-merge-fail/snap.txt b/packages/cli/snap-tests-global/migration-lintstagedrc-merge-fail/snap.txt index 0d958795da..6b1216b327 100644 --- a/packages/cli/snap-tests-global/migration-lintstagedrc-merge-fail/snap.txt +++ b/packages/cli/snap-tests-global/migration-lintstagedrc-merge-fail/snap.txt @@ -17,24 +17,8 @@ Please add staged config to vite.config.ts manually, see https://viteplus.dev/gu "name": "migration-lintstagedrc-merge-fail", "devDependencies": { "lint-staged": "^16.2.6", - "vite": "npm:@voidzero-dev/vite-plus-core@latest", - "vite-plus": "latest" - }, - "pnpm": { - "overrides": { - "vite": "npm:@voidzero-dev/vite-plus-core@latest", - "vitest": "npm:@voidzero-dev/vite-plus-test@latest" - }, - "peerDependencyRules": { - "allowAny": [ - "vite", - "vitest" - ], - "allowedVersions": { - "vite": "*", - "vitest": "*" - } - } + "vite": "catalog:", + "vite-plus": "catalog:" }, "packageManager": "pnpm@", "scripts": { @@ -42,6 +26,22 @@ Please add staged config to vite.config.ts manually, see https://viteplus.dev/gu } } +> cat pnpm-workspace.yaml # check pnpm-workspace.yaml has overrides and catalog +catalog: + vite: npm:@voidzero-dev/vite-plus-core@latest + vitest: npm:@voidzero-dev/vite-plus-test@latest + vite-plus: latest +overrides: + vite: 'catalog:' + vitest: 'catalog:' +peerDependencyRules: + allowAny: + - vite + - vitest + allowedVersions: + vite: '*' + vitest: '*' + > cat .lintstagedrc.json # config file should be preserved when merge fails { "*.css": "stylelint --fix" diff --git a/packages/cli/snap-tests-global/migration-lintstagedrc-merge-fail/steps.json b/packages/cli/snap-tests-global/migration-lintstagedrc-merge-fail/steps.json index 2af8b487f2..2b78bfa62e 100644 --- a/packages/cli/snap-tests-global/migration-lintstagedrc-merge-fail/steps.json +++ b/packages/cli/snap-tests-global/migration-lintstagedrc-merge-fail/steps.json @@ -1,8 +1,12 @@ { "commands": [ - { "command": "git init", "ignoreOutput": true }, + { + "command": "git init", + "ignoreOutput": true + }, "vp migrate --no-interactive # should handle merge failure gracefully", "cat package.json # check package.json", + "cat pnpm-workspace.yaml # check pnpm-workspace.yaml has overrides and catalog", "cat .lintstagedrc.json # config file should be preserved when merge fails", "cat vite.config.ts # vite config should be unchanged (merge failed)", "test -f .vite-hooks/pre-commit && echo 'pre-commit hook exists' || echo 'no pre-commit hook' # should NOT exist when merge fails" diff --git a/packages/cli/snap-tests-global/migration-lintstagedrc-not-support/snap.txt b/packages/cli/snap-tests-global/migration-lintstagedrc-not-support/snap.txt index a3c445fa81..9f4fb5159a 100644 --- a/packages/cli/snap-tests-global/migration-lintstagedrc-not-support/snap.txt +++ b/packages/cli/snap-tests-global/migration-lintstagedrc-not-support/snap.txt @@ -32,23 +32,23 @@ export default { "devDependencies": { "husky": "^9.1.7", "lint-staged": "^16.2.6", - "vite-plus": "latest" - }, - "pnpm": { - "overrides": { - "vite": "npm:@voidzero-dev/vite-plus-core@latest", - "vitest": "npm:@voidzero-dev/vite-plus-test@latest" - }, - "peerDependencyRules": { - "allowAny": [ - "vite", - "vitest" - ], - "allowedVersions": { - "vite": "*", - "vitest": "*" - } - } + "vite-plus": "catalog:" }, "packageManager": "pnpm@" } + +> cat pnpm-workspace.yaml # check pnpm-workspace.yaml has overrides and catalog +catalog: + vite: npm:@voidzero-dev/vite-plus-core@latest + vitest: npm:@voidzero-dev/vite-plus-test@latest + vite-plus: latest +overrides: + vite: 'catalog:' + vitest: 'catalog:' +peerDependencyRules: + allowAny: + - vite + - vitest + allowedVersions: + vite: '*' + vitest: '*' diff --git a/packages/cli/snap-tests-global/migration-lintstagedrc-not-support/steps.json b/packages/cli/snap-tests-global/migration-lintstagedrc-not-support/steps.json index f3ee6a657c..9d79768022 100644 --- a/packages/cli/snap-tests-global/migration-lintstagedrc-not-support/steps.json +++ b/packages/cli/snap-tests-global/migration-lintstagedrc-not-support/steps.json @@ -1,10 +1,14 @@ { "commands": [ - { "command": "git init", "ignoreOutput": true }, + { + "command": "git init", + "ignoreOutput": true + }, "vp migrate --no-interactive # migration should not support non-json format lintstagedrc", "cat .lintstagedrc # check .lintstagedrc is not updated", "cat .lintstagedrc.yaml # check .lintstagedrc.yaml is not updated", "cat lint-staged.config.mjs # check lint-staged.config.mjs is not updated", - "cat package.json # check hooks setup skipped but husky/lint-staged removed from devDependencies" + "cat package.json # check hooks setup skipped but husky/lint-staged removed from devDependencies", + "cat pnpm-workspace.yaml # check pnpm-workspace.yaml has overrides and catalog" ] } diff --git a/packages/cli/snap-tests-global/migration-lintstagedrc-staged-exists/snap.txt b/packages/cli/snap-tests-global/migration-lintstagedrc-staged-exists/snap.txt index a9db4cc9b2..07904bd97b 100644 --- a/packages/cli/snap-tests-global/migration-lintstagedrc-staged-exists/snap.txt +++ b/packages/cli/snap-tests-global/migration-lintstagedrc-staged-exists/snap.txt @@ -12,24 +12,8 @@ VITE+ - The Unified Toolchain for the Web { "name": "migration-lintstagedrc-staged-exists", "devDependencies": { - "vite": "npm:@voidzero-dev/vite-plus-core@latest", - "vite-plus": "latest" - }, - "pnpm": { - "overrides": { - "vite": "npm:@voidzero-dev/vite-plus-core@latest", - "vitest": "npm:@voidzero-dev/vite-plus-test@latest" - }, - "peerDependencyRules": { - "allowAny": [ - "vite", - "vitest" - ], - "allowedVersions": { - "vite": "*", - "vitest": "*" - } - } + "vite": "catalog:", + "vite-plus": "catalog:" }, "packageManager": "pnpm@", "scripts": { @@ -37,6 +21,22 @@ VITE+ - The Unified Toolchain for the Web } } +> cat pnpm-workspace.yaml # check pnpm-workspace.yaml has overrides and catalog +catalog: + vite: npm:@voidzero-dev/vite-plus-core@latest + vitest: npm:@voidzero-dev/vite-plus-test@latest + vite-plus: latest +overrides: + vite: 'catalog:' + vitest: 'catalog:' +peerDependencyRules: + allowAny: + - vite + - vitest + allowedVersions: + vite: '*' + vitest: '*' + > test -f .lintstagedrc.json && echo 'lintstagedrc.json still exists' || echo 'lintstagedrc.json was deleted' # should still exist lintstagedrc.json still exists diff --git a/packages/cli/snap-tests-global/migration-lintstagedrc-staged-exists/steps.json b/packages/cli/snap-tests-global/migration-lintstagedrc-staged-exists/steps.json index 2552b61456..92c50f522b 100644 --- a/packages/cli/snap-tests-global/migration-lintstagedrc-staged-exists/steps.json +++ b/packages/cli/snap-tests-global/migration-lintstagedrc-staged-exists/steps.json @@ -1,8 +1,12 @@ { "commands": [ - { "command": "git init", "ignoreOutput": true }, + { + "command": "git init", + "ignoreOutput": true + }, "vp migrate --no-interactive # should warn when staged already exists in vite.config.ts", "cat package.json # check package.json", + "cat pnpm-workspace.yaml # check pnpm-workspace.yaml has overrides and catalog", "test -f .lintstagedrc.json && echo 'lintstagedrc.json still exists' || echo 'lintstagedrc.json was deleted' # should still exist", "cat vite.config.ts # vite config should be unchanged" ] diff --git a/packages/cli/snap-tests-global/migration-merge-vite-config-js/snap.txt b/packages/cli/snap-tests-global/migration-merge-vite-config-js/snap.txt index 8430c75828..dfa0319374 100644 --- a/packages/cli/snap-tests-global/migration-merge-vite-config-js/snap.txt +++ b/packages/cli/snap-tests-global/migration-merge-vite-config-js/snap.txt @@ -36,24 +36,24 @@ export default { }, "devDependencies": { "@vitejs/plugin-react": "^4.2.0", - "vite": "npm:@voidzero-dev/vite-plus-core@latest", - "vite-plus": "latest" - }, - "pnpm": { - "overrides": { - "vite": "npm:@voidzero-dev/vite-plus-core@latest", - "vitest": "npm:@voidzero-dev/vite-plus-test@latest" - }, - "peerDependencyRules": { - "allowAny": [ - "vite", - "vitest" - ], - "allowedVersions": { - "vite": "*", - "vitest": "*" - } - } + "vite": "catalog:", + "vite-plus": "catalog:" }, "packageManager": "pnpm@" } + +> cat pnpm-workspace.yaml # check pnpm-workspace.yaml has overrides and catalog +catalog: + vite: npm:@voidzero-dev/vite-plus-core@latest + vitest: npm:@voidzero-dev/vite-plus-test@latest + vite-plus: latest +overrides: + vite: 'catalog:' + vitest: 'catalog:' +peerDependencyRules: + allowAny: + - vite + - vitest + allowedVersions: + vite: '*' + vitest: '*' diff --git a/packages/cli/snap-tests-global/migration-merge-vite-config-js/steps.json b/packages/cli/snap-tests-global/migration-merge-vite-config-js/steps.json index 2fd5b9b311..105353a96a 100644 --- a/packages/cli/snap-tests-global/migration-merge-vite-config-js/steps.json +++ b/packages/cli/snap-tests-global/migration-merge-vite-config-js/steps.json @@ -3,6 +3,7 @@ "vp migrate --no-interactive # migration should merge vite.config.js and remove oxlintrc", "cat vite.config.js # check vite.config.js", "test ! -f .oxlintrc.json # check .oxlintrc.json is removed", - "cat package.json # check package.json" + "cat package.json # check package.json", + "cat pnpm-workspace.yaml # check pnpm-workspace.yaml has overrides and catalog" ] } diff --git a/packages/cli/snap-tests-global/migration-merge-vite-config-ts/snap.txt b/packages/cli/snap-tests-global/migration-merge-vite-config-ts/snap.txt index 551041e487..ecabb5b39a 100644 --- a/packages/cli/snap-tests-global/migration-merge-vite-config-ts/snap.txt +++ b/packages/cli/snap-tests-global/migration-merge-vite-config-ts/snap.txt @@ -68,26 +68,26 @@ export default defineConfig({ }, "devDependencies": { "@vitejs/plugin-react": "^4.2.0", - "vite": "npm:@voidzero-dev/vite-plus-core@latest", - "vitest": "npm:@voidzero-dev/vite-plus-test@latest", + "vite": "catalog:", + "vitest": "catalog:", "playwright": "*", - "vite-plus": "latest" - }, - "pnpm": { - "overrides": { - "vite": "npm:@voidzero-dev/vite-plus-core@latest", - "vitest": "npm:@voidzero-dev/vite-plus-test@latest" - }, - "peerDependencyRules": { - "allowAny": [ - "vite", - "vitest" - ], - "allowedVersions": { - "vite": "*", - "vitest": "*" - } - } + "vite-plus": "catalog:" }, "packageManager": "pnpm@" } + +> cat pnpm-workspace.yaml # check pnpm-workspace.yaml has overrides and catalog +catalog: + vite: npm:@voidzero-dev/vite-plus-core@latest + vitest: npm:@voidzero-dev/vite-plus-test@latest + vite-plus: latest +overrides: + vite: 'catalog:' + vitest: 'catalog:' +peerDependencyRules: + allowAny: + - vite + - vitest + allowedVersions: + vite: '*' + vitest: '*' diff --git a/packages/cli/snap-tests-global/migration-merge-vite-config-ts/steps.json b/packages/cli/snap-tests-global/migration-merge-vite-config-ts/steps.json index e36168e665..85bce1797d 100644 --- a/packages/cli/snap-tests-global/migration-merge-vite-config-ts/steps.json +++ b/packages/cli/snap-tests-global/migration-merge-vite-config-ts/steps.json @@ -4,6 +4,7 @@ "cat vite.config.ts # check vite.config.ts", "test ! -f .oxlintrc.json # check .oxlintrc.json is removed", "test ! -f .oxfmtrc.json # check .oxfmtrc.json is removed", - "cat package.json # check package.json" + "cat package.json # check package.json", + "cat pnpm-workspace.yaml # check pnpm-workspace.yaml has overrides and catalog" ] } diff --git a/packages/cli/snap-tests-global/migration-monorepo-pnpm-overrides-dependency-selector/snap.txt b/packages/cli/snap-tests-global/migration-monorepo-pnpm-overrides-dependency-selector/snap.txt index b0e906cb6f..0506c38545 100644 --- a/packages/cli/snap-tests-global/migration-monorepo-pnpm-overrides-dependency-selector/snap.txt +++ b/packages/cli/snap-tests-global/migration-monorepo-pnpm-overrides-dependency-selector/snap.txt @@ -31,13 +31,7 @@ export default defineConfig({ "vite": "catalog:", "vite-plus": "catalog:" }, - "packageManager": "pnpm@+sha512.cf9998222162dd85864d0a8102e7892e7ba4ceadebbf5a31f9c2fce48dfce317a9c53b9f6464d1ef9042cba2e02ae02a9f7c143a2b438cd93c91840f0192b9dd", - "pnpm": { - "overrides": { - "react-click-away-listener>react": "0.0.0-experimental-7dc903cd-20251203", - "supertest>superagent": "9.0.2" - } - } + "packageManager": "pnpm@+sha512.cf9998222162dd85864d0a8102e7892e7ba4ceadebbf5a31f9c2fce48dfce317a9c53b9f6464d1ef9042cba2e02ae02a9f7c143a2b438cd93c91840f0192b9dd" } > cat pnpm-workspace.yaml # check pnpm-workspace.yaml @@ -51,9 +45,10 @@ catalog: overrides: '@vitejs/plugin-react>vite': 'npm:vite@' - 'supertest>superagent': '9.0.2' + 'supertest>superagent': vite: 'catalog:' vitest: 'catalog:' + react-click-away-listener>react: peerDependencyRules: allowAny: - vite diff --git a/packages/cli/snap-tests-global/migration-no-git-repo/snap.txt b/packages/cli/snap-tests-global/migration-no-git-repo/snap.txt index 2e0edfb3a3..78ff60a479 100644 --- a/packages/cli/snap-tests-global/migration-no-git-repo/snap.txt +++ b/packages/cli/snap-tests-global/migration-no-git-repo/snap.txt @@ -9,24 +9,8 @@ VITE+ - The Unified Toolchain for the Web { "name": "migration-no-git-repo", "devDependencies": { - "vite": "npm:@voidzero-dev/vite-plus-core@latest", - "vite-plus": "latest" - }, - "pnpm": { - "overrides": { - "vite": "npm:@voidzero-dev/vite-plus-core@latest", - "vitest": "npm:@voidzero-dev/vite-plus-test@latest" - }, - "peerDependencyRules": { - "allowAny": [ - "vite", - "vitest" - ], - "allowedVersions": { - "vite": "*", - "vitest": "*" - } - } + "vite": "catalog:", + "vite-plus": "catalog:" }, "packageManager": "pnpm@", "scripts": { @@ -34,6 +18,22 @@ VITE+ - The Unified Toolchain for the Web } } +> cat pnpm-workspace.yaml # check pnpm-workspace.yaml has overrides and catalog +catalog: + vite: npm:@voidzero-dev/vite-plus-core@latest + vitest: npm:@voidzero-dev/vite-plus-test@latest + vite-plus: latest +overrides: + vite: 'catalog:' + vitest: 'catalog:' +peerDependencyRules: + allowAny: + - vite + - vitest + allowedVersions: + vite: '*' + vitest: '*' + > test -d .vite-hooks && echo 'hooks dir exists' || echo 'no hooks dir' hooks dir exists diff --git a/packages/cli/snap-tests-global/migration-no-git-repo/steps.json b/packages/cli/snap-tests-global/migration-no-git-repo/steps.json index 9bd676b54a..7d5790169b 100644 --- a/packages/cli/snap-tests-global/migration-no-git-repo/steps.json +++ b/packages/cli/snap-tests-global/migration-no-git-repo/steps.json @@ -2,6 +2,7 @@ "commands": [ "vp migrate --no-interactive # migration should create .vite-hooks/pre-commit even without .git", "cat package.json # check package.json has prepare script and lint-staged config", + "cat pnpm-workspace.yaml # check pnpm-workspace.yaml has overrides and catalog", "test -d .vite-hooks && echo 'hooks dir exists' || echo 'no hooks dir'", "cat .vite-hooks/pre-commit # pre-commit hook should exist even without .git" ] diff --git a/packages/cli/snap-tests-global/migration-no-hooks-with-husky/snap.txt b/packages/cli/snap-tests-global/migration-no-hooks-with-husky/snap.txt index b3b552590d..a5b61b125b 100644 --- a/packages/cli/snap-tests-global/migration-no-hooks-with-husky/snap.txt +++ b/packages/cli/snap-tests-global/migration-no-hooks-with-husky/snap.txt @@ -16,30 +16,30 @@ VITE+ - The Unified Toolchain for the Web "devDependencies": { "husky": "^9.1.7", "lint-staged": "^16.2.6", - "vite": "npm:@voidzero-dev/vite-plus-core@latest", - "vite-plus": "latest" + "vite": "catalog:", + "vite-plus": "catalog:" }, "lint-staged": { "*.ts": "eslint --fix" }, - "pnpm": { - "overrides": { - "vite": "npm:@voidzero-dev/vite-plus-core@latest", - "vitest": "npm:@voidzero-dev/vite-plus-test@latest" - }, - "peerDependencyRules": { - "allowAny": [ - "vite", - "vitest" - ], - "allowedVersions": { - "vite": "*", - "vitest": "*" - } - } - }, "packageManager": "pnpm@" } +> cat pnpm-workspace.yaml # check pnpm-workspace.yaml has overrides and catalog +catalog: + vite: npm:@voidzero-dev/vite-plus-core@latest + vitest: npm:@voidzero-dev/vite-plus-test@latest + vite-plus: latest +overrides: + vite: 'catalog:' + vitest: 'catalog:' +peerDependencyRules: + allowAny: + - vite + - vitest + allowedVersions: + vite: '*' + vitest: '*' + > test -d .husky && echo '.husky directory exists' || echo 'No .husky directory' # verify no .husky directory No .husky directory diff --git a/packages/cli/snap-tests-global/migration-no-hooks-with-husky/steps.json b/packages/cli/snap-tests-global/migration-no-hooks-with-husky/steps.json index 6103fb0042..aefb29029c 100644 --- a/packages/cli/snap-tests-global/migration-no-hooks-with-husky/steps.json +++ b/packages/cli/snap-tests-global/migration-no-hooks-with-husky/steps.json @@ -1,8 +1,12 @@ { "commands": [ - { "command": "git init", "ignoreOutput": true }, + { + "command": "git init", + "ignoreOutput": true + }, "vp migrate --no-hooks --no-interactive # --no-hooks should keep husky/lint-staged and preserve config", "cat package.json # prepare script, lint-staged config, check-staged script, and deps should all be preserved", + "cat pnpm-workspace.yaml # check pnpm-workspace.yaml has overrides and catalog", "test -d .husky && echo '.husky directory exists' || echo 'No .husky directory' # verify no .husky directory" ] } diff --git a/packages/cli/snap-tests-global/migration-no-hooks/snap.txt b/packages/cli/snap-tests-global/migration-no-hooks/snap.txt index 7e81264402..4a103cd216 100644 --- a/packages/cli/snap-tests-global/migration-no-hooks/snap.txt +++ b/packages/cli/snap-tests-global/migration-no-hooks/snap.txt @@ -10,27 +10,27 @@ VITE+ - The Unified Toolchain for the Web { "name": "migration-no-hooks", "devDependencies": { - "vite": "npm:@voidzero-dev/vite-plus-core@latest", - "vite-plus": "latest" - }, - "pnpm": { - "overrides": { - "vite": "npm:@voidzero-dev/vite-plus-core@latest", - "vitest": "npm:@voidzero-dev/vite-plus-test@latest" - }, - "peerDependencyRules": { - "allowAny": [ - "vite", - "vitest" - ], - "allowedVersions": { - "vite": "*", - "vitest": "*" - } - } + "vite": "catalog:", + "vite-plus": "catalog:" }, "packageManager": "pnpm@" } +> cat pnpm-workspace.yaml # check pnpm-workspace.yaml has overrides and catalog +catalog: + vite: npm:@voidzero-dev/vite-plus-core@latest + vitest: npm:@voidzero-dev/vite-plus-test@latest + vite-plus: latest +overrides: + vite: 'catalog:' + vitest: 'catalog:' +peerDependencyRules: + allowAny: + - vite + - vitest + allowedVersions: + vite: '*' + vitest: '*' + > test -d .vite-hooks && echo '.vite-hooks directory exists' || echo 'No .vite-hooks directory' # verify no .vite-hooks directory No .vite-hooks directory diff --git a/packages/cli/snap-tests-global/migration-no-hooks/steps.json b/packages/cli/snap-tests-global/migration-no-hooks/steps.json index 3745befbce..959278eb7c 100644 --- a/packages/cli/snap-tests-global/migration-no-hooks/steps.json +++ b/packages/cli/snap-tests-global/migration-no-hooks/steps.json @@ -1,8 +1,12 @@ { "commands": [ - { "command": "git init", "ignoreOutput": true }, + { + "command": "git init", + "ignoreOutput": true + }, "vp migrate --no-hooks --no-interactive # migration with --no-hooks should skip hooks setup", "cat package.json # check package.json has no prepare script and no lint-staged config", + "cat pnpm-workspace.yaml # check pnpm-workspace.yaml has overrides and catalog", "test -d .vite-hooks && echo '.vite-hooks directory exists' || echo 'No .vite-hooks directory' # verify no .vite-hooks directory" ] } diff --git a/packages/cli/snap-tests-global/migration-other-hook-tool/snap.txt b/packages/cli/snap-tests-global/migration-other-hook-tool/snap.txt index 0a71a3cd60..d132469f74 100644 --- a/packages/cli/snap-tests-global/migration-other-hook-tool/snap.txt +++ b/packages/cli/snap-tests-global/migration-other-hook-tool/snap.txt @@ -16,8 +16,8 @@ VITE+ - The Unified Toolchain for the Web "devDependencies": { "lint-staged": "^16.2.6", "simple-git-hooks": "^2.11.1", - "vite": "npm:@voidzero-dev/vite-plus-core@latest", - "vite-plus": "latest" + "vite": "catalog:", + "vite-plus": "catalog:" }, "simple-git-hooks": { "pre-commit": "npx lint-staged" @@ -25,21 +25,21 @@ VITE+ - The Unified Toolchain for the Web "lint-staged": { "*.ts": "eslint --fix" }, - "pnpm": { - "overrides": { - "vite": "npm:@voidzero-dev/vite-plus-core@latest", - "vitest": "npm:@voidzero-dev/vite-plus-test@latest" - }, - "peerDependencyRules": { - "allowAny": [ - "vite", - "vitest" - ], - "allowedVersions": { - "vite": "*", - "vitest": "*" - } - } - }, "packageManager": "pnpm@" } + +> cat pnpm-workspace.yaml # check pnpm-workspace.yaml has overrides and catalog +catalog: + vite: npm:@voidzero-dev/vite-plus-core@latest + vitest: npm:@voidzero-dev/vite-plus-test@latest + vite-plus: latest +overrides: + vite: 'catalog:' + vitest: 'catalog:' +peerDependencyRules: + allowAny: + - vite + - vitest + allowedVersions: + vite: '*' + vitest: '*' diff --git a/packages/cli/snap-tests-global/migration-other-hook-tool/steps.json b/packages/cli/snap-tests-global/migration-other-hook-tool/steps.json index f51b57799a..8f54776c1b 100644 --- a/packages/cli/snap-tests-global/migration-other-hook-tool/steps.json +++ b/packages/cli/snap-tests-global/migration-other-hook-tool/steps.json @@ -1,6 +1,7 @@ { "commands": [ "vp migrate --no-interactive # hooks should be skipped due to simple-git-hooks", - "cat package.json # lint-staged config, scripts, and simple-git-hooks config should all be preserved" + "cat package.json # lint-staged config, scripts, and simple-git-hooks config should all be preserved", + "cat pnpm-workspace.yaml # check pnpm-workspace.yaml has overrides and catalog" ] } diff --git a/packages/cli/snap-tests-global/migration-oxlintrc-json-with-comments/snap.txt b/packages/cli/snap-tests-global/migration-oxlintrc-json-with-comments/snap.txt index eb1b04d56e..7fad58c6b1 100644 --- a/packages/cli/snap-tests-global/migration-oxlintrc-json-with-comments/snap.txt +++ b/packages/cli/snap-tests-global/migration-oxlintrc-json-with-comments/snap.txt @@ -33,26 +33,26 @@ export default defineConfig({ > cat package.json # check package.json { "devDependencies": { - "vite-plus": "latest" - }, - "pnpm": { - "overrides": { - "vite": "npm:@voidzero-dev/vite-plus-core@latest", - "vitest": "npm:@voidzero-dev/vite-plus-test@latest" - }, - "peerDependencyRules": { - "allowAny": [ - "vite", - "vitest" - ], - "allowedVersions": { - "vite": "*", - "vitest": "*" - } - } + "vite-plus": "catalog:" }, "packageManager": "pnpm@", "scripts": { "prepare": "vp config" } } + +> cat pnpm-workspace.yaml # check pnpm-workspace.yaml has overrides and catalog +catalog: + vite: npm:@voidzero-dev/vite-plus-core@latest + vitest: npm:@voidzero-dev/vite-plus-test@latest + vite-plus: latest +overrides: + vite: 'catalog:' + vitest: 'catalog:' +peerDependencyRules: + allowAny: + - vite + - vitest + allowedVersions: + vite: '*' + vitest: '*' diff --git a/packages/cli/snap-tests-global/migration-oxlintrc-json-with-comments/steps.json b/packages/cli/snap-tests-global/migration-oxlintrc-json-with-comments/steps.json index 4b22be3023..0d3529def0 100644 --- a/packages/cli/snap-tests-global/migration-oxlintrc-json-with-comments/steps.json +++ b/packages/cli/snap-tests-global/migration-oxlintrc-json-with-comments/steps.json @@ -3,6 +3,7 @@ "vp migrate --no-interactive 2>&1 # migration should handle .oxlintrc.json with JSONC comments", "cat vite.config.ts # check vite.config.ts", "test ! -f .oxlintrc.json # check .oxlintrc.json is removed", - "cat package.json # check package.json" + "cat package.json # check package.json", + "cat pnpm-workspace.yaml # check pnpm-workspace.yaml has overrides and catalog" ] } diff --git a/packages/cli/snap-tests-global/migration-oxlintrc-jsonc/snap.txt b/packages/cli/snap-tests-global/migration-oxlintrc-jsonc/snap.txt index a5dbbcede3..021146b683 100644 --- a/packages/cli/snap-tests-global/migration-oxlintrc-jsonc/snap.txt +++ b/packages/cli/snap-tests-global/migration-oxlintrc-jsonc/snap.txt @@ -35,26 +35,26 @@ export default defineConfig({ > cat package.json # check package.json { "devDependencies": { - "vite-plus": "latest" - }, - "pnpm": { - "overrides": { - "vite": "npm:@voidzero-dev/vite-plus-core@latest", - "vitest": "npm:@voidzero-dev/vite-plus-test@latest" - }, - "peerDependencyRules": { - "allowAny": [ - "vite", - "vitest" - ], - "allowedVersions": { - "vite": "*", - "vitest": "*" - } - } + "vite-plus": "catalog:" }, "packageManager": "pnpm@", "scripts": { "prepare": "vp config" } } + +> cat pnpm-workspace.yaml # check pnpm-workspace.yaml has overrides and catalog +catalog: + vite: npm:@voidzero-dev/vite-plus-core@latest + vitest: npm:@voidzero-dev/vite-plus-test@latest + vite-plus: latest +overrides: + vite: 'catalog:' + vitest: 'catalog:' +peerDependencyRules: + allowAny: + - vite + - vitest + allowedVersions: + vite: '*' + vitest: '*' diff --git a/packages/cli/snap-tests-global/migration-oxlintrc-jsonc/steps.json b/packages/cli/snap-tests-global/migration-oxlintrc-jsonc/steps.json index f480767bae..3df3c646a3 100644 --- a/packages/cli/snap-tests-global/migration-oxlintrc-jsonc/steps.json +++ b/packages/cli/snap-tests-global/migration-oxlintrc-jsonc/steps.json @@ -4,6 +4,7 @@ "cat vite.config.ts # check vite.config.ts", "test ! -f .oxlintrc.jsonc # check .oxlintrc.jsonc is removed", "test ! -f .oxfmtrc.jsonc # check .oxfmtrc.jsonc is removed", - "cat package.json # check package.json" + "cat package.json # check package.json", + "cat pnpm-workspace.yaml # check pnpm-workspace.yaml has overrides and catalog" ] } diff --git a/packages/cli/snap-tests-global/migration-partially-migrated-pre-commit/snap.txt b/packages/cli/snap-tests-global/migration-partially-migrated-pre-commit/snap.txt index 4ec6b3b412..3589165950 100644 --- a/packages/cli/snap-tests-global/migration-partially-migrated-pre-commit/snap.txt +++ b/packages/cli/snap-tests-global/migration-partially-migrated-pre-commit/snap.txt @@ -17,28 +17,28 @@ VITE+ - The Unified Toolchain for the Web "devDependencies": { "husky": "^8.0.0", "lint-staged": "^15.0.0", - "vite": "npm:@voidzero-dev/vite-plus-core@latest", - "vite-plus": "latest" - }, - "pnpm": { - "overrides": { - "vite": "npm:@voidzero-dev/vite-plus-core@latest", - "vitest": "npm:@voidzero-dev/vite-plus-test@latest" - }, - "peerDependencyRules": { - "allowAny": [ - "vite", - "vitest" - ], - "allowedVersions": { - "vite": "*", - "vitest": "*" - } - } + "vite": "catalog:", + "vite-plus": "catalog:" }, "packageManager": "pnpm@" } +> cat pnpm-workspace.yaml # check pnpm-workspace.yaml has overrides and catalog +catalog: + vite: npm:@voidzero-dev/vite-plus-core@latest + vitest: npm:@voidzero-dev/vite-plus-test@latest + vite-plus: latest +overrides: + vite: 'catalog:' + vitest: 'catalog:' +peerDependencyRules: + allowAny: + - vite + - vitest + allowedVersions: + vite: '*' + vitest: '*' + > cat .husky/pre-commit # hook file should be unchanged (still has bootstrap) . "$(dirname -- "$0")/_/husky.sh" diff --git a/packages/cli/snap-tests-global/migration-partially-migrated-pre-commit/steps.json b/packages/cli/snap-tests-global/migration-partially-migrated-pre-commit/steps.json index 412f02c265..d04bf8a054 100644 --- a/packages/cli/snap-tests-global/migration-partially-migrated-pre-commit/steps.json +++ b/packages/cli/snap-tests-global/migration-partially-migrated-pre-commit/steps.json @@ -1,8 +1,12 @@ { "commands": [ - { "command": "git init", "ignoreOutput": true }, + { + "command": "git init", + "ignoreOutput": true + }, "vp migrate --no-interactive # should warn about husky v8 and skip hooks setup", "cat package.json # husky/lint-staged should remain in devDeps, prepare should stay as husky", + "cat pnpm-workspace.yaml # check pnpm-workspace.yaml has overrides and catalog", "cat .husky/pre-commit # hook file should be unchanged (still has bootstrap)" ] } diff --git a/packages/cli/snap-tests-global/migration-prettier-eslint-combo/snap.txt b/packages/cli/snap-tests-global/migration-prettier-eslint-combo/snap.txt index 3231503038..4a5135b15f 100644 --- a/packages/cli/snap-tests-global/migration-prettier-eslint-combo/snap.txt +++ b/packages/cli/snap-tests-global/migration-prettier-eslint-combo/snap.txt @@ -21,28 +21,28 @@ Prettier configuration detected. Auto-migrating to Oxfmt... "prepare": "vp config" }, "devDependencies": { - "vite": "npm:@voidzero-dev/vite-plus-core@latest", - "vite-plus": "latest" + "vite": "catalog:", + "vite-plus": "catalog:" }, - "packageManager": "pnpm@", - "pnpm": { - "overrides": { - "vite": "npm:@voidzero-dev/vite-plus-core@latest", - "vitest": "npm:@voidzero-dev/vite-plus-test@latest" - }, - "peerDependencyRules": { - "allowAny": [ - "vite", - "vitest" - ], - "allowedVersions": { - "vite": "*", - "vitest": "*" - } - } - } + "packageManager": "pnpm@" } +> cat pnpm-workspace.yaml # check pnpm-workspace.yaml has overrides and catalog +catalog: + vite: npm:@voidzero-dev/vite-plus-core@latest + vitest: npm:@voidzero-dev/vite-plus-test@latest + vite-plus: latest +overrides: + vite: 'catalog:' + vitest: 'catalog:' +peerDependencyRules: + allowAny: + - vite + - vitest + allowedVersions: + vite: '*' + vitest: '*' + > test ! -f eslint.config.mjs # check eslint config is removed > test ! -f .prettierrc.json # check prettier config is removed > cat vite.config.ts # check oxlint and oxfmt config merged into vite.config.ts diff --git a/packages/cli/snap-tests-global/migration-prettier-eslint-combo/steps.json b/packages/cli/snap-tests-global/migration-prettier-eslint-combo/steps.json index 3d6f1ad388..51a3299a24 100644 --- a/packages/cli/snap-tests-global/migration-prettier-eslint-combo/steps.json +++ b/packages/cli/snap-tests-global/migration-prettier-eslint-combo/steps.json @@ -2,6 +2,7 @@ "commands": [ "vp migrate --no-interactive # migration should detect both eslint and prettier and auto-migrate", "cat package.json # check eslint and prettier removed, scripts rewritten", + "cat pnpm-workspace.yaml # check pnpm-workspace.yaml has overrides and catalog", "test ! -f eslint.config.mjs # check eslint config is removed", "test ! -f .prettierrc.json # check prettier config is removed", "cat vite.config.ts # check oxlint and oxfmt config merged into vite.config.ts" diff --git a/packages/cli/snap-tests-global/migration-prettier-ignore-unknown/snap.txt b/packages/cli/snap-tests-global/migration-prettier-ignore-unknown/snap.txt index 1c48e422e8..5bf9997ba1 100644 --- a/packages/cli/snap-tests-global/migration-prettier-ignore-unknown/snap.txt +++ b/packages/cli/snap-tests-global/migration-prettier-ignore-unknown/snap.txt @@ -19,26 +19,26 @@ Prettier configuration detected. Auto-migrating to Oxfmt... "prepare": "vp config" }, "devDependencies": { - "vite": "npm:@voidzero-dev/vite-plus-core@latest", - "vite-plus": "latest" - }, - "pnpm": { - "overrides": { - "vite": "npm:@voidzero-dev/vite-plus-core@latest", - "vitest": "npm:@voidzero-dev/vite-plus-test@latest" - }, - "peerDependencyRules": { - "allowAny": [ - "vite", - "vitest" - ], - "allowedVersions": { - "vite": "*", - "vitest": "*" - } - } + "vite": "catalog:", + "vite-plus": "catalog:" }, "packageManager": "pnpm@" } +> cat pnpm-workspace.yaml # check pnpm-workspace.yaml has overrides and catalog +catalog: + vite: npm:@voidzero-dev/vite-plus-core@latest + vitest: npm:@voidzero-dev/vite-plus-test@latest + vite-plus: latest +overrides: + vite: 'catalog:' + vitest: 'catalog:' +peerDependencyRules: + allowAny: + - vite + - vitest + allowedVersions: + vite: '*' + vitest: '*' + > test ! -f .prettierrc.json # check prettier config is removed \ No newline at end of file diff --git a/packages/cli/snap-tests-global/migration-prettier-ignore-unknown/steps.json b/packages/cli/snap-tests-global/migration-prettier-ignore-unknown/steps.json index 16dfe97b4a..51f6489ca9 100644 --- a/packages/cli/snap-tests-global/migration-prettier-ignore-unknown/steps.json +++ b/packages/cli/snap-tests-global/migration-prettier-ignore-unknown/steps.json @@ -2,6 +2,7 @@ "commands": [ "vp migrate --no-interactive # migration should strip --ignore-unknown and -u flags", "cat package.json # check prettier removed and --ignore-unknown stripped from scripts", + "cat pnpm-workspace.yaml # check pnpm-workspace.yaml has overrides and catalog", "test ! -f .prettierrc.json # check prettier config is removed" ] } diff --git a/packages/cli/snap-tests-global/migration-prettier-lint-staged/snap.txt b/packages/cli/snap-tests-global/migration-prettier-lint-staged/snap.txt index ea122f5234..2623fee781 100644 --- a/packages/cli/snap-tests-global/migration-prettier-lint-staged/snap.txt +++ b/packages/cli/snap-tests-global/migration-prettier-lint-staged/snap.txt @@ -16,28 +16,28 @@ Prettier configuration detected. Auto-migrating to Oxfmt... "prepare": "vp config" }, "devDependencies": { - "vite": "npm:@voidzero-dev/vite-plus-core@latest", - "vite-plus": "latest" - }, - "pnpm": { - "overrides": { - "vite": "npm:@voidzero-dev/vite-plus-core@latest", - "vitest": "npm:@voidzero-dev/vite-plus-test@latest" - }, - "peerDependencyRules": { - "allowAny": [ - "vite", - "vitest" - ], - "allowedVersions": { - "vite": "*", - "vitest": "*" - } - } + "vite": "catalog:", + "vite-plus": "catalog:" }, "packageManager": "pnpm@" } +> cat pnpm-workspace.yaml # check pnpm-workspace.yaml has overrides and catalog +catalog: + vite: npm:@voidzero-dev/vite-plus-core@latest + vitest: npm:@voidzero-dev/vite-plus-test@latest + vite-plus: latest +overrides: + vite: 'catalog:' + vitest: 'catalog:' +peerDependencyRules: + allowAny: + - vite + - vitest + allowedVersions: + vite: '*' + vitest: '*' + > cat vite.config.ts # check oxfmt config and staged config merged into vite.config.ts import { defineConfig } from "vite-plus"; diff --git a/packages/cli/snap-tests-global/migration-prettier-lint-staged/steps.json b/packages/cli/snap-tests-global/migration-prettier-lint-staged/steps.json index 86cd2c8436..e3277eb045 100644 --- a/packages/cli/snap-tests-global/migration-prettier-lint-staged/steps.json +++ b/packages/cli/snap-tests-global/migration-prettier-lint-staged/steps.json @@ -2,6 +2,7 @@ "commands": [ "vp migrate --no-interactive # migration should detect prettier and auto-migrate including lint-staged", "cat package.json # check prettier removed, scripts rewritten, lint-staged rewritten", + "cat pnpm-workspace.yaml # check pnpm-workspace.yaml has overrides and catalog", "cat vite.config.ts # check oxfmt config and staged config merged into vite.config.ts" ] } diff --git a/packages/cli/snap-tests-global/migration-prettier-pkg-json/snap.txt b/packages/cli/snap-tests-global/migration-prettier-pkg-json/snap.txt index edae587394..ecab96a89a 100644 --- a/packages/cli/snap-tests-global/migration-prettier-pkg-json/snap.txt +++ b/packages/cli/snap-tests-global/migration-prettier-pkg-json/snap.txt @@ -17,28 +17,28 @@ Prettier configuration detected. Auto-migrating to Oxfmt... "prepare": "vp config" }, "devDependencies": { - "vite": "npm:@voidzero-dev/vite-plus-core@latest", - "vite-plus": "latest" - }, - "pnpm": { - "overrides": { - "vite": "npm:@voidzero-dev/vite-plus-core@latest", - "vitest": "npm:@voidzero-dev/vite-plus-test@latest" - }, - "peerDependencyRules": { - "allowAny": [ - "vite", - "vitest" - ], - "allowedVersions": { - "vite": "*", - "vitest": "*" - } - } + "vite": "catalog:", + "vite-plus": "catalog:" }, "packageManager": "pnpm@" } +> cat pnpm-workspace.yaml # check pnpm-workspace.yaml has overrides and catalog +catalog: + vite: npm:@voidzero-dev/vite-plus-core@latest + vitest: npm:@voidzero-dev/vite-plus-test@latest + vite-plus: latest +overrides: + vite: 'catalog:' + vitest: 'catalog:' +peerDependencyRules: + allowAny: + - vite + - vitest + allowedVersions: + vite: '*' + vitest: '*' + > cat vite.config.ts # check oxfmt config merged into vite.config.ts with semi/singleQuote settings import { defineConfig } from 'vite-plus'; diff --git a/packages/cli/snap-tests-global/migration-prettier-pkg-json/steps.json b/packages/cli/snap-tests-global/migration-prettier-pkg-json/steps.json index 5b9db13efc..304224846c 100644 --- a/packages/cli/snap-tests-global/migration-prettier-pkg-json/steps.json +++ b/packages/cli/snap-tests-global/migration-prettier-pkg-json/steps.json @@ -2,6 +2,7 @@ "commands": [ "vp migrate --no-interactive # migration should detect prettier in package.json and auto-migrate", "cat package.json # check prettier key removed, scripts rewritten, dep removed", + "cat pnpm-workspace.yaml # check pnpm-workspace.yaml has overrides and catalog", "cat vite.config.ts # check oxfmt config merged into vite.config.ts with semi/singleQuote settings" ] } diff --git a/packages/cli/snap-tests-global/migration-prettier/snap.txt b/packages/cli/snap-tests-global/migration-prettier/snap.txt index 21fb63efc0..907610fa53 100644 --- a/packages/cli/snap-tests-global/migration-prettier/snap.txt +++ b/packages/cli/snap-tests-global/migration-prettier/snap.txt @@ -19,28 +19,28 @@ Prettier configuration detected. Auto-migrating to Oxfmt... "prepare": "vp config" }, "devDependencies": { - "vite": "npm:@voidzero-dev/vite-plus-core@latest", - "vite-plus": "latest" - }, - "pnpm": { - "overrides": { - "vite": "npm:@voidzero-dev/vite-plus-core@latest", - "vitest": "npm:@voidzero-dev/vite-plus-test@latest" - }, - "peerDependencyRules": { - "allowAny": [ - "vite", - "vitest" - ], - "allowedVersions": { - "vite": "*", - "vitest": "*" - } - } + "vite": "catalog:", + "vite-plus": "catalog:" }, "packageManager": "pnpm@" } +> cat pnpm-workspace.yaml # check pnpm-workspace.yaml has overrides and catalog +catalog: + vite: npm:@voidzero-dev/vite-plus-core@latest + vitest: npm:@voidzero-dev/vite-plus-test@latest + vite-plus: latest +overrides: + vite: 'catalog:' + vitest: 'catalog:' +peerDependencyRules: + allowAny: + - vite + - vitest + allowedVersions: + vite: '*' + vitest: '*' + > test ! -f .prettierrc.json # check prettier config is removed > cat vite.config.ts # check oxfmt config merged into vite.config.ts import { defineConfig } from 'vite-plus'; diff --git a/packages/cli/snap-tests-global/migration-prettier/steps.json b/packages/cli/snap-tests-global/migration-prettier/steps.json index 4a4a15672e..dbbbd4af23 100644 --- a/packages/cli/snap-tests-global/migration-prettier/steps.json +++ b/packages/cli/snap-tests-global/migration-prettier/steps.json @@ -2,6 +2,7 @@ "commands": [ "vp migrate --no-interactive # migration should detect prettier and auto-migrate", "cat package.json # check prettier removed and scripts rewritten", + "cat pnpm-workspace.yaml # check pnpm-workspace.yaml has overrides and catalog", "test ! -f .prettierrc.json # check prettier config is removed", "cat vite.config.ts # check oxfmt config merged into vite.config.ts" ] diff --git a/packages/cli/snap-tests-global/migration-rewrite-declare-module/snap.txt b/packages/cli/snap-tests-global/migration-rewrite-declare-module/snap.txt index dc81866ea1..ba673b41a6 100644 --- a/packages/cli/snap-tests-global/migration-rewrite-declare-module/snap.txt +++ b/packages/cli/snap-tests-global/migration-rewrite-declare-module/snap.txt @@ -39,27 +39,27 @@ declare module 'vite-plus' { > cat package.json # check package.json { "name": "migration-rewrite-declare-module", - "pnpm": { - "overrides": { - "vite": "npm:@voidzero-dev/vite-plus-core@latest", - "vitest": "npm:@voidzero-dev/vite-plus-test@latest" - }, - "peerDependencyRules": { - "allowAny": [ - "vite", - "vitest" - ], - "allowedVersions": { - "vite": "*", - "vitest": "*" - } - } - }, "devDependencies": { - "vite-plus": "latest" + "vite-plus": "catalog:" }, "packageManager": "pnpm@", "scripts": { "prepare": "vp config" } } + +> cat pnpm-workspace.yaml # check pnpm-workspace.yaml has overrides and catalog +catalog: + vite: npm:@voidzero-dev/vite-plus-core@latest + vitest: npm:@voidzero-dev/vite-plus-test@latest + vite-plus: latest +overrides: + vite: 'catalog:' + vitest: 'catalog:' +peerDependencyRules: + allowAny: + - vite + - vitest + allowedVersions: + vite: '*' + vitest: '*' diff --git a/packages/cli/snap-tests-global/migration-rewrite-declare-module/steps.json b/packages/cli/snap-tests-global/migration-rewrite-declare-module/steps.json index a896881618..c55aec0263 100644 --- a/packages/cli/snap-tests-global/migration-rewrite-declare-module/steps.json +++ b/packages/cli/snap-tests-global/migration-rewrite-declare-module/steps.json @@ -2,6 +2,7 @@ "commands": [ "vp migrate --no-interactive # migration should rewrite imports to vite-plus", "cat src/index.ts # check src/index.ts", - "cat package.json # check package.json" + "cat package.json # check package.json", + "cat pnpm-workspace.yaml # check pnpm-workspace.yaml has overrides and catalog" ] } diff --git a/packages/cli/snap-tests-global/migration-skip-vite-dependency/snap.txt b/packages/cli/snap-tests-global/migration-skip-vite-dependency/snap.txt index afd56649e6..8dc6fb4fb9 100644 --- a/packages/cli/snap-tests-global/migration-skip-vite-dependency/snap.txt +++ b/packages/cli/snap-tests-global/migration-skip-vite-dependency/snap.txt @@ -32,29 +32,29 @@ export default defineConfig({ { "name": "migration-skip-vite-dependency", "dependencies": { - "vite": "npm:@voidzero-dev/vite-plus-core@latest" - }, - "pnpm": { - "overrides": { - "vite": "npm:@voidzero-dev/vite-plus-core@latest", - "vitest": "npm:@voidzero-dev/vite-plus-test@latest" - }, - "peerDependencyRules": { - "allowAny": [ - "vite", - "vitest" - ], - "allowedVersions": { - "vite": "*", - "vitest": "*" - } - } + "vite": "catalog:" }, "devDependencies": { - "vite-plus": "latest" + "vite-plus": "catalog:" }, "packageManager": "pnpm@", "scripts": { "prepare": "vp config" } } + +> cat pnpm-workspace.yaml # check pnpm-workspace.yaml has overrides and catalog +catalog: + vite: npm:@voidzero-dev/vite-plus-core@latest + vitest: npm:@voidzero-dev/vite-plus-test@latest + vite-plus: latest +overrides: + vite: 'catalog:' + vitest: 'catalog:' +peerDependencyRules: + allowAny: + - vite + - vitest + allowedVersions: + vite: '*' + vitest: '*' diff --git a/packages/cli/snap-tests-global/migration-skip-vite-dependency/steps.json b/packages/cli/snap-tests-global/migration-skip-vite-dependency/steps.json index 4d95cc5dde..aa916f1235 100644 --- a/packages/cli/snap-tests-global/migration-skip-vite-dependency/steps.json +++ b/packages/cli/snap-tests-global/migration-skip-vite-dependency/steps.json @@ -2,6 +2,7 @@ "commands": [ "vp migrate --no-interactive # migration should skip rewriting vite imports when vite is in dependencies", "cat src/index.ts # vite imports should NOT be rewritten, vitest imports SHOULD be rewritten", - "cat package.json # check package.json" + "cat package.json # check package.json", + "cat pnpm-workspace.yaml # check pnpm-workspace.yaml has overrides and catalog" ] } diff --git a/packages/cli/snap-tests-global/migration-skip-vite-peer-dependency/snap.txt b/packages/cli/snap-tests-global/migration-skip-vite-peer-dependency/snap.txt index 6adef40f70..cbeb026c6b 100644 --- a/packages/cli/snap-tests-global/migration-skip-vite-peer-dependency/snap.txt +++ b/packages/cli/snap-tests-global/migration-skip-vite-peer-dependency/snap.txt @@ -34,27 +34,27 @@ export default defineConfig({ "peerDependencies": { "vite": "^6.0.0" }, - "pnpm": { - "overrides": { - "vite": "npm:@voidzero-dev/vite-plus-core@latest", - "vitest": "npm:@voidzero-dev/vite-plus-test@latest" - }, - "peerDependencyRules": { - "allowAny": [ - "vite", - "vitest" - ], - "allowedVersions": { - "vite": "*", - "vitest": "*" - } - } - }, "devDependencies": { - "vite-plus": "latest" + "vite-plus": "catalog:" }, "packageManager": "pnpm@", "scripts": { "prepare": "vp config" } } + +> cat pnpm-workspace.yaml # check pnpm-workspace.yaml has overrides and catalog +catalog: + vite: npm:@voidzero-dev/vite-plus-core@latest + vitest: npm:@voidzero-dev/vite-plus-test@latest + vite-plus: latest +overrides: + vite: 'catalog:' + vitest: 'catalog:' +peerDependencyRules: + allowAny: + - vite + - vitest + allowedVersions: + vite: '*' + vitest: '*' diff --git a/packages/cli/snap-tests-global/migration-skip-vite-peer-dependency/steps.json b/packages/cli/snap-tests-global/migration-skip-vite-peer-dependency/steps.json index 6cee4ca524..cca9527700 100644 --- a/packages/cli/snap-tests-global/migration-skip-vite-peer-dependency/steps.json +++ b/packages/cli/snap-tests-global/migration-skip-vite-peer-dependency/steps.json @@ -2,6 +2,7 @@ "commands": [ "vp migrate --no-interactive # migration should skip rewriting vite imports when vite is in peerDependencies", "cat src/index.ts # vite imports should NOT be rewritten, vitest imports SHOULD be rewritten", - "cat package.json # check package.json" + "cat package.json # check package.json", + "cat pnpm-workspace.yaml # check pnpm-workspace.yaml has overrides and catalog" ] } diff --git a/packages/cli/snap-tests-global/migration-standalone-pnpm/snap.txt b/packages/cli/snap-tests-global/migration-standalone-pnpm/snap.txt index cc68285b72..1a090f235f 100644 --- a/packages/cli/snap-tests-global/migration-standalone-pnpm/snap.txt +++ b/packages/cli/snap-tests-global/migration-standalone-pnpm/snap.txt @@ -1,4 +1,4 @@ -> vp migrate --no-interactive --no-hooks --package-manager pnpm # migration should work with pnpm, add overrides and peerDependencyRules +> vp migrate --no-interactive --no-hooks --package-manager pnpm # migration should work with pnpm, write overrides and peerDependencyRules to pnpm-workspace.yaml VITE+ - The Unified Toolchain for the Web ◇ Migrated . to Vite+ @@ -6,29 +6,29 @@ VITE+ - The Unified Toolchain for the Web ✓ Dependencies installed in ms • 1 config update applied -> cat package.json # check package.json has pnpm.overrides and pnpm.peerDependencyRules +> cat package.json # check package.json has no pnpm section { "name": "migration-standalone-pnpm", "devDependencies": { - "vite": "npm:@voidzero-dev/vite-plus-core@latest", - "vitest": "npm:@voidzero-dev/vite-plus-test@latest", - "vite-plus": "latest" + "vite": "catalog:", + "vitest": "catalog:", + "vite-plus": "catalog:" }, - "packageManager": "pnpm@", - "pnpm": { - "overrides": { - "vite": "npm:@voidzero-dev/vite-plus-core@latest", - "vitest": "npm:@voidzero-dev/vite-plus-test@latest" - }, - "peerDependencyRules": { - "allowAny": [ - "vite", - "vitest" - ], - "allowedVersions": { - "vite": "*", - "vitest": "*" - } - } - } + "packageManager": "pnpm@" } + +> cat pnpm-workspace.yaml # check pnpm-workspace.yaml has overrides, peerDependencyRules, and catalog +catalog: + vite: npm:@voidzero-dev/vite-plus-core@latest + vitest: npm:@voidzero-dev/vite-plus-test@latest + vite-plus: latest +overrides: + vite: 'catalog:' + vitest: 'catalog:' +peerDependencyRules: + allowAny: + - vite + - vitest + allowedVersions: + vite: '*' + vitest: '*' diff --git a/packages/cli/snap-tests-global/migration-standalone-pnpm/steps.json b/packages/cli/snap-tests-global/migration-standalone-pnpm/steps.json index 4d9b689441..0abe3b2697 100644 --- a/packages/cli/snap-tests-global/migration-standalone-pnpm/steps.json +++ b/packages/cli/snap-tests-global/migration-standalone-pnpm/steps.json @@ -6,7 +6,8 @@ "VP_SKIP_INSTALL": "" }, "commands": [ - "vp migrate --no-interactive --no-hooks --package-manager pnpm # migration should work with pnpm, add overrides and peerDependencyRules", - "cat package.json # check package.json has pnpm.overrides and pnpm.peerDependencyRules" + "vp migrate --no-interactive --no-hooks --package-manager pnpm # migration should work with pnpm, write overrides and peerDependencyRules to pnpm-workspace.yaml", + "cat package.json # check package.json has no pnpm section", + "cat pnpm-workspace.yaml # check pnpm-workspace.yaml has overrides, peerDependencyRules, and catalog" ] } diff --git a/packages/cli/snap-tests-global/migration-subpath/snap.txt b/packages/cli/snap-tests-global/migration-subpath/snap.txt index 808bf3c1aa..9a681faae8 100644 --- a/packages/cli/snap-tests-global/migration-subpath/snap.txt +++ b/packages/cli/snap-tests-global/migration-subpath/snap.txt @@ -20,24 +20,8 @@ VITE+ - The Unified Toolchain for the Web "oxlint --fix" ] }, - "pnpm": { - "overrides": { - "vite": "npm:@voidzero-dev/vite-plus-core@latest", - "vitest": "npm:@voidzero-dev/vite-plus-test@latest" - }, - "peerDependencyRules": { - "allowAny": [ - "vite", - "vitest" - ], - "allowedVersions": { - "vite": "*", - "vitest": "*" - } - } - }, "devDependencies": { - "vite-plus": "latest" + "vite-plus": "catalog:" }, "packageManager": "pnpm@" } @@ -52,3 +36,19 @@ export default defineConfig({ > git config --local core.hooksPath || echo 'core.hooksPath is not set' # should NOT be set core.hooksPath is not set + +> cat foo/pnpm-workspace.yaml # check pnpm-workspace.yaml has overrides and catalog +catalog: + vite: npm:@voidzero-dev/vite-plus-core@latest + vitest: npm:@voidzero-dev/vite-plus-test@latest + vite-plus: latest +overrides: + vite: 'catalog:' + vitest: 'catalog:' +peerDependencyRules: + allowAny: + - vite + - vitest + allowedVersions: + vite: '*' + vitest: '*' diff --git a/packages/cli/snap-tests-global/migration-subpath/steps.json b/packages/cli/snap-tests-global/migration-subpath/steps.json index 06fe523f36..59f1abc022 100644 --- a/packages/cli/snap-tests-global/migration-subpath/steps.json +++ b/packages/cli/snap-tests-global/migration-subpath/steps.json @@ -1,9 +1,13 @@ { "commands": [ - { "command": "git init", "ignoreOutput": true }, + { + "command": "git init", + "ignoreOutput": true + }, "vp migrate foo --no-interactive # migration work with subpath", "cat foo/package.json # check package.json", "cat foo/vite.config.ts # check vite.config.ts", - "git config --local core.hooksPath || echo 'core.hooksPath is not set' # should NOT be set" + "git config --local core.hooksPath || echo 'core.hooksPath is not set' # should NOT be set", + "cat foo/pnpm-workspace.yaml # check pnpm-workspace.yaml has overrides and catalog" ] } diff --git a/packages/cli/snap-tests-global/migration-tsconfig-esmoduleinterop/snap.txt b/packages/cli/snap-tests-global/migration-tsconfig-esmoduleinterop/snap.txt index 7977518c46..3e7d9a8025 100644 --- a/packages/cli/snap-tests-global/migration-tsconfig-esmoduleinterop/snap.txt +++ b/packages/cli/snap-tests-global/migration-tsconfig-esmoduleinterop/snap.txt @@ -31,27 +31,27 @@ export default defineConfig({ > cat package.json # check package.json { "devDependencies": { - "vite": "npm:@voidzero-dev/vite-plus-core@latest", - "vite-plus": "latest" - }, - "pnpm": { - "overrides": { - "vite": "npm:@voidzero-dev/vite-plus-core@latest", - "vitest": "npm:@voidzero-dev/vite-plus-test@latest" - }, - "peerDependencyRules": { - "allowAny": [ - "vite", - "vitest" - ], - "allowedVersions": { - "vite": "*", - "vitest": "*" - } - } + "vite": "catalog:", + "vite-plus": "catalog:" }, "packageManager": "pnpm@", "scripts": { "prepare": "vp config" } } + +> cat pnpm-workspace.yaml # check pnpm-workspace.yaml has overrides and catalog +catalog: + vite: npm:@voidzero-dev/vite-plus-core@latest + vitest: npm:@voidzero-dev/vite-plus-test@latest + vite-plus: latest +overrides: + vite: 'catalog:' + vitest: 'catalog:' +peerDependencyRules: + allowAny: + - vite + - vitest + allowedVersions: + vite: '*' + vitest: '*' diff --git a/packages/cli/snap-tests-global/migration-tsconfig-esmoduleinterop/steps.json b/packages/cli/snap-tests-global/migration-tsconfig-esmoduleinterop/steps.json index 678c97eac6..58688f6e09 100644 --- a/packages/cli/snap-tests-global/migration-tsconfig-esmoduleinterop/steps.json +++ b/packages/cli/snap-tests-global/migration-tsconfig-esmoduleinterop/steps.json @@ -3,6 +3,7 @@ "vp migrate --no-interactive # should remove esModuleInterop: false from tsconfig.json", "cat tsconfig.json # verify esModuleInterop: false is removed", "cat vite.config.ts # check vite.config.ts", - "cat package.json # check package.json" + "cat package.json # check package.json", + "cat pnpm-workspace.yaml # check pnpm-workspace.yaml has overrides and catalog" ] } diff --git a/packages/cli/snap-tests-global/migration-vite-version/snap.txt b/packages/cli/snap-tests-global/migration-vite-version/snap.txt index 3ff08c08c3..e36f7e153f 100644 --- a/packages/cli/snap-tests-global/migration-vite-version/snap.txt +++ b/packages/cli/snap-tests-global/migration-vite-version/snap.txt @@ -14,24 +14,24 @@ VITE+ - The Unified Toolchain for the Web "prepare": "vp config" }, "devDependencies": { - "vite": "npm:@voidzero-dev/vite-plus-core@latest", - "vite-plus": "latest" - }, - "pnpm": { - "overrides": { - "vite": "npm:@voidzero-dev/vite-plus-core@latest", - "vitest": "npm:@voidzero-dev/vite-plus-test@latest" - }, - "peerDependencyRules": { - "allowAny": [ - "vite", - "vitest" - ], - "allowedVersions": { - "vite": "*", - "vitest": "*" - } - } + "vite": "catalog:", + "vite-plus": "catalog:" }, "packageManager": "pnpm@" } + +> cat pnpm-workspace.yaml # check pnpm-workspace.yaml has overrides and catalog +catalog: + vite: npm:@voidzero-dev/vite-plus-core@latest + vitest: npm:@voidzero-dev/vite-plus-test@latest + vite-plus: latest +overrides: + vite: 'catalog:' + vitest: 'catalog:' +peerDependencyRules: + allowAny: + - vite + - vitest + allowedVersions: + vite: '*' + vitest: '*' diff --git a/packages/cli/snap-tests-global/migration-vite-version/steps.json b/packages/cli/snap-tests-global/migration-vite-version/steps.json index 5de4836e1c..6ff9470885 100644 --- a/packages/cli/snap-tests-global/migration-vite-version/steps.json +++ b/packages/cli/snap-tests-global/migration-vite-version/steps.json @@ -1,6 +1,7 @@ { "commands": [ "vp migrate --no-interactive # migration should rewrite vite --version to vp --version", - "cat package.json # check package.json" + "cat package.json # check package.json", + "cat pnpm-workspace.yaml # check pnpm-workspace.yaml has overrides and catalog" ] } diff --git a/packages/cli/src/migration/__tests__/migrator.spec.ts b/packages/cli/src/migration/__tests__/migrator.spec.ts index 63c41cdebe..48b4567d69 100644 --- a/packages/cli/src/migration/__tests__/migrator.spec.ts +++ b/packages/cli/src/migration/__tests__/migrator.spec.ts @@ -16,6 +16,7 @@ vi.mock('../../utils/constants.js', async (importOriginal) => { const { rewritePackageJson, + rewriteStandaloneProject, parseNvmrcVersion, detectNodeVersionManagerFile, migrateNodeVersionManagerFile, @@ -290,3 +291,142 @@ describe('migrateNodeVersionManagerFile', () => { expect(fs.existsSync(path.join(tmpDir, '.node-version'))).toBe(false); }); }); + +function makeWorkspaceInfo( + rootDir: string, + packageManager: PackageManager, +): import('../../types/index.js').WorkspaceInfo { + return { + rootDir, + isMonorepo: false, + monorepoScope: '', + workspacePatterns: [], + parentDirs: [], + packageManager, + packageManagerVersion: '10.33.0', + downloadPackageManager: { + name: 'pnpm', + installDir: '/tmp', + binPrefix: '/tmp/bin', + packageName: 'pnpm', + version: '10.33.0', + }, + packages: [], + }; +} + +function readJson(filePath: string): Record { + return JSON.parse(fs.readFileSync(filePath, 'utf8')); +} + +function readYaml(filePath: string): string { + return fs.readFileSync(filePath, 'utf8'); +} + +describe('rewriteStandaloneProject pnpm workspace yaml', () => { + let tmpDir: string; + + beforeEach(() => { + tmpDir = fs.mkdtempSync(path.join(os.tmpdir(), 'vp-test-pnpm-')); + }); + + afterEach(() => { + fs.rmSync(tmpDir, { recursive: true, force: true }); + }); + + it('creates pnpm-workspace.yaml when no existing pnpm config in package.json', () => { + fs.writeFileSync( + path.join(tmpDir, 'package.json'), + JSON.stringify({ name: 'test', devDependencies: { vite: '^7.0.0' } }), + ); + rewriteStandaloneProject(tmpDir, makeWorkspaceInfo(tmpDir, PackageManager.pnpm), true, true); + + // pnpm-workspace.yaml should be created + expect(fs.existsSync(path.join(tmpDir, 'pnpm-workspace.yaml'))).toBe(true); + const yaml = readYaml(path.join(tmpDir, 'pnpm-workspace.yaml')); + expect(yaml).toContain('overrides:'); + expect(yaml).toContain('peerDependencyRules:'); + expect(yaml).toContain('catalog:'); + + // package.json should not have pnpm section + const pkg = readJson(path.join(tmpDir, 'package.json')); + expect(pkg.pnpm).toBeUndefined(); + + // devDependencies should use catalog: + const devDeps = pkg.devDependencies as Record; + expect(devDeps.vite).toBe('catalog:'); + expect(devDeps['vite-plus']).toBe('catalog:'); + }); + + it('keeps pnpm config in package.json when existing pnpm field present', () => { + fs.writeFileSync( + path.join(tmpDir, 'package.json'), + JSON.stringify({ + name: 'test', + devDependencies: { vite: '^7.0.0' }, + pnpm: { + overrides: { 'some-pkg': '1.0.0' }, + onlyBuiltDependencies: ['esbuild'], + }, + }), + ); + rewriteStandaloneProject(tmpDir, makeWorkspaceInfo(tmpDir, PackageManager.pnpm), true, true); + + // pnpm-workspace.yaml should NOT be created + expect(fs.existsSync(path.join(tmpDir, 'pnpm-workspace.yaml'))).toBe(false); + + // package.json should have pnpm.overrides with both existing and vite overrides + const pkg = readJson(path.join(tmpDir, 'package.json')); + const pnpm = pkg.pnpm as Record; + expect(pnpm).toBeDefined(); + const overrides = pnpm.overrides as Record; + expect(overrides['some-pkg']).toBe('1.0.0'); + expect(overrides.vite).toBeDefined(); + expect(overrides.vitest).toBeDefined(); + + // peerDependencyRules should be present + expect(pnpm.peerDependencyRules).toBeDefined(); + // onlyBuiltDependencies should be preserved + expect(pnpm.onlyBuiltDependencies).toEqual(['esbuild']); + }); + + it('preserves custom peerDependencyRules when migrating to pnpm-workspace.yaml', () => { + // Project has peerDependencyRules but no pnpm.overrides -- pnpm field is present + // so it should keep using package.json + fs.writeFileSync( + path.join(tmpDir, 'package.json'), + JSON.stringify({ + name: 'test', + devDependencies: { vite: '^7.0.0' }, + pnpm: { + peerDependencyRules: { + allowAny: ['react', 'vite'], + allowedVersions: { react: '*', vite: '*' }, + ignoreMissing: ['@types/node'], + }, + }, + }), + ); + rewriteStandaloneProject(tmpDir, makeWorkspaceInfo(tmpDir, PackageManager.pnpm), true, true); + + const pkg = readJson(path.join(tmpDir, 'package.json')); + const pnpm = pkg.pnpm as Record; + const rules = pnpm.peerDependencyRules as Record; + // Custom entries preserved, Vite entries merged + expect(rules.allowAny).toEqual(expect.arrayContaining(['react', 'vite', 'vitest'])); + // ignoreMissing preserved + expect(rules.ignoreMissing).toEqual(['@types/node']); + }); + + it('writes vite overrides with catalog references to pnpm-workspace.yaml', () => { + fs.writeFileSync( + path.join(tmpDir, 'package.json'), + JSON.stringify({ name: 'test', devDependencies: { vite: '^7.0.0' } }), + ); + rewriteStandaloneProject(tmpDir, makeWorkspaceInfo(tmpDir, PackageManager.pnpm), true, true); + + const yaml = readYaml(path.join(tmpDir, 'pnpm-workspace.yaml')); + expect(yaml).toContain("vite: 'catalog:'"); + expect(yaml).toContain("vitest: 'catalog:'"); + }); +}); diff --git a/packages/cli/src/migration/migrator.ts b/packages/cli/src/migration/migrator.ts index 5b3151d68d..74d5c40595 100644 --- a/packages/cli/src/migration/migrator.ts +++ b/packages/cli/src/migration/migrator.ts @@ -697,6 +697,9 @@ export function rewriteStandaloneProject( const packageManager = workspaceInfo.packageManager; let extractedStagedConfig: Record | null = null; + let remainingPnpmOverrides: Record | undefined; + // Determined inside editJsonFile callback to avoid a redundant file read + let usePnpmWorkspaceYaml = false; editJsonFile<{ overrides?: Record; resolutions?: Record; @@ -722,24 +725,52 @@ export function rewriteStandaloneProject( ...VITE_PLUS_OVERRIDE_PACKAGES, }; } else if (packageManager === PackageManager.pnpm) { + // If package.json already has a "pnpm" field, keep using it; + // otherwise use pnpm-workspace.yaml. + usePnpmWorkspaceYaml = !pkg.pnpm; + if (usePnpmWorkspaceYaml) { + rewritePnpmWorkspaceYaml(projectPath); + // In force-override mode, also override vite-plus itself so transitive + // deps resolve to the local tgz instead of the published version. + if (isForceOverrideMode()) { + migratePnpmOverridesToWorkspaceYaml(projectPath, { + [VITE_PLUS_NAME]: VITE_PLUS_VERSION, + }); + } + } const overrideKeys = Object.keys(VITE_PLUS_OVERRIDE_PACKAGES); - pkg.pnpm = { - ...pkg.pnpm, - overrides: { - ...pkg.pnpm?.overrides, - ...VITE_PLUS_OVERRIDE_PACKAGES, - ...(isForceOverrideMode() ? { [VITE_PLUS_NAME]: VITE_PLUS_VERSION } : {}), - }, - peerDependencyRules: { - allowAny: [ - ...new Set([...(pkg.pnpm?.peerDependencyRules?.allowAny ?? []), ...overrideKeys]), - ], - allowedVersions: { - ...pkg.pnpm?.peerDependencyRules?.allowedVersions, - ...Object.fromEntries(overrideKeys.map((key) => [key, '*'])), + if (!usePnpmWorkspaceYaml) { + // Project already has pnpm config in package.json -- keep using it. + pkg.pnpm = { + ...pkg.pnpm, + overrides: { + ...pkg.pnpm?.overrides, + ...VITE_PLUS_OVERRIDE_PACKAGES, + ...(isForceOverrideMode() ? { [VITE_PLUS_NAME]: VITE_PLUS_VERSION } : {}), }, - }, - }; + peerDependencyRules: { + ...pkg.pnpm?.peerDependencyRules, + allowAny: [ + ...new Set([...(pkg.pnpm?.peerDependencyRules?.allowAny ?? []), ...overrideKeys]), + ], + allowedVersions: { + ...pkg.pnpm?.peerDependencyRules?.allowedVersions, + ...Object.fromEntries(overrideKeys.map((key) => [key, '*'])), + }, + }, + }; + } else { + remainingPnpmOverrides = cleanupPnpmOverridesForWorkspaceYaml(pkg, overrideKeys); + } + // remove dependency selectors targeting vite (e.g. "vite-plugin-svgr>vite") + for (const key in pkg.pnpm?.overrides) { + if (key.includes('>')) { + const splits = key.split('>'); + if (splits[splits.length - 1].trim() === 'vite') { + delete pkg.pnpm.overrides[key]; + } + } + } // remove packages from `resolutions` field if they exist // https://pnpm.io/9.x/package_json#resolutions for (const key of [...overrideKeys, ...REMOVE_PACKAGES]) { @@ -749,18 +780,32 @@ export function rewriteStandaloneProject( } } - extractedStagedConfig = rewritePackageJson(pkg, packageManager, false, skipStagedMigration); + extractedStagedConfig = rewritePackageJson( + pkg, + packageManager, + usePnpmWorkspaceYaml, + skipStagedMigration, + ); // ensure vite-plus is in devDependencies if (!pkg.devDependencies?.[VITE_PLUS_NAME] || isForceOverrideMode()) { + const version = + usePnpmWorkspaceYaml && !VITE_PLUS_VERSION.startsWith('file:') + ? 'catalog:' + : VITE_PLUS_VERSION; pkg.devDependencies = { ...pkg.devDependencies, - [VITE_PLUS_NAME]: VITE_PLUS_VERSION, + [VITE_PLUS_NAME]: version, }; } return pkg; }); + // Move remaining non-Vite pnpm.overrides to pnpm-workspace.yaml + if (remainingPnpmOverrides) { + migratePnpmOverridesToWorkspaceYaml(projectPath, remainingPnpmOverrides); + } + // Merge extracted staged config into vite.config.ts, then remove lint-staged from package.json if (extractedStagedConfig) { if (mergeStagedConfigToViteConfig(projectPath, extractedStagedConfig, silent, report)) { @@ -960,6 +1005,102 @@ function rewritePnpmWorkspaceYaml(projectPath: string): void { }); } +/** + * Clean up pnpm.overrides and peerDependencyRules from package.json when migrating + * to pnpm-workspace.yaml. Returns any remaining non-Vite overrides that need to be + * moved to pnpm-workspace.yaml. + */ +function cleanupPnpmOverridesForWorkspaceYaml( + pkg: { + pnpm?: { + overrides?: Record; + peerDependencyRules?: { allowAny?: string[]; allowedVersions?: Record }; + }; + }, + overrideKeys: string[], +): Record | undefined { + // Remove Vite-managed keys from pnpm.overrides + for (const key of [...overrideKeys, ...REMOVE_PACKAGES]) { + if (pkg.pnpm?.overrides?.[key]) { + delete pkg.pnpm.overrides[key]; + } + } + // Remove dependency selectors targeting vite + for (const key in pkg.pnpm?.overrides) { + if (key.includes('>')) { + const splits = key.split('>'); + if (splits[splits.length - 1].trim() === 'vite') { + delete pkg.pnpm.overrides[key]; + } + } + } + // Collect remaining overrides to move to pnpm-workspace.yaml then delete all + // (pnpm ignores workspace-level overrides when pnpm.overrides exists in package.json) + let remaining: Record | undefined; + if (pkg.pnpm?.overrides && Object.keys(pkg.pnpm.overrides).length > 0) { + remaining = { ...pkg.pnpm.overrides }; + } + delete pkg.pnpm?.overrides; + // Only remove Vite-managed peerDependencyRules entries, preserve custom ones + cleanupPeerDependencyRules(pkg.pnpm?.peerDependencyRules, overrideKeys); + if (pkg.pnpm?.peerDependencyRules && Object.keys(pkg.pnpm.peerDependencyRules).length === 0) { + delete pkg.pnpm.peerDependencyRules; + } + if (pkg.pnpm && Object.keys(pkg.pnpm).length === 0) { + delete pkg.pnpm; + } + return remaining; +} + +/** + * Move remaining non-Vite pnpm.overrides from package.json to pnpm-workspace.yaml. + * pnpm ignores workspace-level overrides when pnpm.overrides exists in package.json, + * so all overrides must live in pnpm-workspace.yaml. + */ +function migratePnpmOverridesToWorkspaceYaml( + projectPath: string, + overrides: Record, +): void { + const pnpmWorkspaceYamlPath = path.join(projectPath, 'pnpm-workspace.yaml'); + editYamlFile(pnpmWorkspaceYamlPath, (doc) => { + for (const [key, value] of Object.entries(overrides)) { + // Always overwrite: package.json value was the effective one before migration + // (pnpm ignores workspace overrides when pnpm.overrides exists in package.json) + doc.setIn(['overrides', scalarString(key)], scalarString(value)); + } + }); +} + +/** + * Remove only Vite-managed entries from peerDependencyRules, preserving custom ones. + */ +function cleanupPeerDependencyRules( + peerDependencyRules: + | { allowAny?: string[]; allowedVersions?: Record } + | undefined, + overrideKeys: string[], +): void { + if (!peerDependencyRules) { + return; + } + if (Array.isArray(peerDependencyRules.allowAny)) { + peerDependencyRules.allowAny = peerDependencyRules.allowAny.filter( + (key) => !overrideKeys.includes(key), + ); + if (peerDependencyRules.allowAny.length === 0) { + delete peerDependencyRules.allowAny; + } + } + if (peerDependencyRules.allowedVersions) { + for (const key of overrideKeys) { + delete peerDependencyRules.allowedVersions[key]; + } + if (Object.keys(peerDependencyRules.allowedVersions).length === 0) { + delete peerDependencyRules.allowedVersions; + } + } +} + /** * Rewrite .yarnrc.yml to add vite-plus dependencies * @param projectPath - The path to the project @@ -1062,12 +1203,17 @@ function rewriteRootWorkspacePackageJson( return; } + let remainingPnpmOverrides: Record | undefined; editJsonFile<{ resolutions?: Record; overrides?: Record; devDependencies?: Record; pnpm?: { overrides?: Record; + peerDependencyRules?: { + allowAny?: string[]; + allowedVersions?: Record; + }; }; }>(packageJsonPath, (pkg) => { if (packageManager === PackageManager.yarn) { @@ -1085,6 +1231,7 @@ function rewriteRootWorkspacePackageJson( } else if (packageManager === PackageManager.bun) { // bun overrides are handled in rewriteBunCatalog() with catalog: references } else if (packageManager === PackageManager.pnpm) { + const overrideKeys = Object.keys(VITE_PLUS_OVERRIDE_PACKAGES); if (isForceOverrideMode()) { // In force-override mode, keep overrides in package.json pnpm.overrides // because pnpm ignores pnpm-workspace.yaml overrides when pnpm.overrides @@ -1098,20 +1245,14 @@ function rewriteRootWorkspacePackageJson( }, }; } else { - // pnpm use overrides field at pnpm-workspace.yaml - // so we don't need to set overrides field at package.json - // remove packages from `resolutions` field and `pnpm.overrides` field if they exist - // https://pnpm.io/9.x/package_json#resolutions - for (const key of [...Object.keys(VITE_PLUS_OVERRIDE_PACKAGES), ...REMOVE_PACKAGES]) { - if (pkg.pnpm?.overrides?.[key]) { - delete pkg.pnpm.overrides[key]; - } + for (const key of [...overrideKeys, ...REMOVE_PACKAGES]) { if (pkg.resolutions?.[key]) { delete pkg.resolutions[key]; } } + remainingPnpmOverrides = cleanupPnpmOverridesForWorkspaceYaml(pkg, overrideKeys); } - // remove dependency selector from vite, e.g. "vite-plugin-svgr>vite": "npm:vite@7.0.12" + // remove dependency selectors targeting vite (e.g. "vite-plugin-svgr>vite") for (const key in pkg.pnpm?.overrides) { if (key.includes('>')) { const splits = key.split('>'); @@ -1135,6 +1276,11 @@ function rewriteRootWorkspacePackageJson( return pkg; }); + // Move remaining non-Vite pnpm.overrides to pnpm-workspace.yaml + if (remainingPnpmOverrides) { + migratePnpmOverridesToWorkspaceYaml(projectPath, remainingPnpmOverrides); + } + // rewrite package.json rewriteMonorepoProject(projectPath, packageManager, skipStagedMigration); } diff --git a/rfcs/migration-command.md b/rfcs/migration-command.md index f4d9e71dab..aa2509dd5c 100644 --- a/rfcs/migration-command.md +++ b/rfcs/migration-command.md @@ -32,8 +32,10 @@ When transitioning to Vite+, projects typically use standalone tools like vite, - ✅ **Dependencies**: vite, vitest, oxlint, oxfmt → vite-plus - ✅ **Overrides**: Force vite → vite-plus (for all dependencies) - - npm/pnpm/bun: Adds `overrides.vite` mapping - - yarn: Adds `resolutions.vite` mapping + - pnpm (no existing `pnpm` config): Writes `overrides`, `peerDependencyRules`, and `catalog` to `pnpm-workspace.yaml` + - pnpm (existing `pnpm` config): Adds `pnpm.overrides` and `pnpm.peerDependencyRules` in `package.json` + - npm/bun: Adds `overrides.vite` mapping in `package.json` + - yarn: Adds `resolutions.vite` mapping in `package.json` - **Benefit**: Code keeps `import from 'vite'` - automatically resolves to vite-plus - ✅ **Configuration files**: - .oxlintrc → vite.config.ts (lint section) @@ -191,7 +193,7 @@ Wrote agent instructions to AGENTS.md } ``` -**After:** +**After (npm/bun) -- `package.json`:** ```json { @@ -211,9 +213,73 @@ Wrote agent instructions to AGENTS.md } ``` +**After (pnpm, no existing `pnpm` config) -- `package.json`:** + +```json +{ + "name": "my-package", + "dependencies": { + "react": "^18.2.0" + }, + "devDependencies": { + "vite": "catalog:", + "vitest": "catalog:", + "@vitejs/plugin-react": "^4.2.0", + "vite-plus": "catalog:" + }, + "packageManager": "pnpm@" +} +``` + +**After (pnpm, no existing `pnpm` config) -- `pnpm-workspace.yaml`:** + +```yaml +catalog: + vite: npm:@voidzero-dev/vite-plus-core@latest + vitest: npm:@voidzero-dev/vite-plus-test@latest + vite-plus: latest +overrides: + vite: 'catalog:' + vitest: 'catalog:' +peerDependencyRules: + allowAny: + - vite + - vitest + allowedVersions: + vite: '*' + vitest: '*' +``` + +**After (pnpm, existing `pnpm` config) -- `package.json`:** + +Projects that already have a `pnpm` field in `package.json` (e.g., with `overrides` or `onlyBuiltDependencies`) keep using `package.json` for pnpm config: + +```json +{ + "name": "my-package", + "devDependencies": { + "vite": "npm:@voidzero-dev/vite-plus-core@latest", + "vitest": "npm:@voidzero-dev/vite-plus-test@latest", + "vite-plus": "latest" + }, + "pnpm": { + "overrides": { + "vite": "npm:@voidzero-dev/vite-plus-core@latest", + "vitest": "npm:@voidzero-dev/vite-plus-test@latest" + }, + "peerDependencyRules": { + "allowAny": ["vite", "vitest"], + "allowedVersions": { "vite": "*", "vitest": "*" } + } + } +} +``` + **Important**: - `overrides.vite` ensures any dependency requiring `vite` gets `vite-plus` instead +- For pnpm without existing config, overrides and peerDependencyRules are written to `pnpm-workspace.yaml` +- For pnpm with existing `pnpm` config in `package.json`, the existing location is respected - rewrite `import from 'vite'` to `import from 'vite-plus'` - rewrite `import from 'vite/{name}'` to `import from 'vite-plus/{name}'`, e.g.: `import from 'vite/module-runner'` to `import from 'vite-plus/module-runner'` - rewrite `import from 'vitest'` to `import from 'vite-plus/test'` @@ -430,17 +496,18 @@ export default defineConfig({ ### for pnpm +For monorepo projects and standalone projects without existing `pnpm` config in `package.json`, overrides, peerDependencyRules, and catalog are written to `pnpm-workspace.yaml`. Projects with existing `pnpm` config in `package.json` keep using `package.json`. + `pnpm-workspace.yaml` ```yaml catalog: vite: npm:@voidzero-dev/vite-plus-core@latest vitest: npm:@voidzero-dev/vite-plus-test@latest - + vite-plus: latest overrides: vite: 'catalog:' vitest: 'catalog:' - peerDependencyRules: allowAny: - vite