Skip to content

Commit b637fa9

Browse files
committed
fix(migrate): convert Yarn PnP projects
1 parent 5525c58 commit b637fa9

14 files changed

Lines changed: 349 additions & 44 deletions

File tree

packages/cli/snap-tests-global/migration-standalone-yarn4-idempotent/snap.txt

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,12 @@
1-
> vp migrate --no-interactive # standalone Yarn writes catalog specs on the first pass
1+
> vp migrate --no-interactive # implicit Yarn Berry PnP converts before the first pass
2+
3+
⚠ Vite+ does not currently support Yarn Plug'n'Play (PnP).
4+
5+
✔ Switched Yarn to node-modules mode
26
◇ Migrated . to Vite+
37
• Node <semver> yarn <semver>
48
• 2 config updates applied, 1 file had imports rewritten
9+
• Package manager settings configured
510

611
> cat package.json # migrated dependency specs use the Yarn catalog immediately
712
{

packages/cli/snap-tests-global/migration-standalone-yarn4-idempotent/steps.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"commands": [
3-
"vp migrate --no-interactive # standalone Yarn writes catalog specs on the first pass",
3+
"vp migrate --no-interactive # implicit Yarn Berry PnP converts before the first pass",
44
"cat package.json # migrated dependency specs use the Yarn catalog immediately",
55
"cat .yarnrc.yml # managed catalog entries are available to those specs",
66
"cat example.spec.ts # ordinary Vitest imports use the Vite+ public surface",

packages/cli/snap-tests-global/migration-upgrade-required-vitest-peer-metadata-npm/snap.txt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
1-
> node -e "const fs = require('node:fs'); fs.mkdirSync('node_modules', { recursive: true }); fs.cpSync('.fixture/vite-plugin-gherkin', 'node_modules/vite-plugin-gherkin', { recursive: true })" # simulate installed dependency metadata
2-
> vp migrate --no-interactive # required Vitest peer is detected without a Vitest package name
1+
> vp migrate --no-interactive # clean checkout conservatively preserves existing Vitest
32
◇ Migrated . to Vite+
43
• Node <semver> npm <semver>
54
• Package manager settings configured
@@ -25,6 +24,7 @@
2524
}
2625
}
2726

28-
> vp migrate --no-interactive # metadata-based peer provisioning is stable on rerun
27+
> node -e "const fs = require('node:fs'); fs.mkdirSync('node_modules', { recursive: true }); fs.cpSync('.fixture/vite-plugin-gherkin', 'node_modules/vite-plugin-gherkin', { recursive: true })" # simulate installed dependency metadata
28+
> vp migrate --no-interactive # metadata confirms the unnamed required Vitest peer
2929
This project is already using Vite+! Happy coding!
3030

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
{
22
"commands": [
3-
"node -e \"const fs = require('node:fs'); fs.mkdirSync('node_modules', { recursive: true }); fs.cpSync('.fixture/vite-plugin-gherkin', 'node_modules/vite-plugin-gherkin', { recursive: true })\" # simulate installed dependency metadata",
4-
"vp migrate --no-interactive # required Vitest peer is detected without a Vitest package name",
3+
"vp migrate --no-interactive # clean checkout conservatively preserves existing Vitest",
54
"cat package.json # package-local Vitest and its shared override remain aligned",
6-
"vp migrate --no-interactive # metadata-based peer provisioning is stable on rerun"
5+
"node -e \"const fs = require('node:fs'); fs.mkdirSync('node_modules', { recursive: true }); fs.cpSync('.fixture/vite-plugin-gherkin', 'node_modules/vite-plugin-gherkin', { recursive: true })\" # simulate installed dependency metadata",
6+
"vp migrate --no-interactive # metadata confirms the unnamed required Vitest peer"
77
]
88
}

packages/cli/snap-tests-global/migration-upgrade-vitest-exact-peer-yarn4/snap.txt

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,8 @@
1-
> vp migrate --no-interactive # Yarn PnP exact peer should receive package-local vitest
1+
> vp migrate --no-interactive # Yarn PnP converts to node-modules before exact-peer migration
2+
3+
⚠ Vite+ does not currently support Yarn Plug'n'Play (PnP).
4+
5+
✔ Switched Yarn to node-modules mode
26
◇ Migrated . to Vite+
37
• Node <semver> yarn <semver>
48
• Package manager settings configured
@@ -24,8 +28,8 @@
2428
}
2529
}
2630

27-
> cat .yarnrc.yml # shared catalog should include the aligned vitest
28-
nodeLinker: pnp
31+
> cat .yarnrc.yml # linker conversion and aligned Vitest catalog are persisted
32+
nodeLinker: node-modules
2933
catalog:
3034
vite: npm:@voidzero-dev/vite-plus-core@latest
3135
vite-plus: latest
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
{
22
"env": {},
33
"commands": [
4-
"vp migrate --no-interactive # Yarn PnP exact peer should receive package-local vitest",
4+
"vp migrate --no-interactive # Yarn PnP converts to node-modules before exact-peer migration",
55
"cat package.json # direct deps and resolutions should use the managed catalog/version",
6-
"cat .yarnrc.yml # shared catalog should include the aligned vitest"
6+
"cat .yarnrc.yml # linker conversion and aligned Vitest catalog are persisted"
77
]
88
}
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
{
2+
"compilerOptions": {
3+
"types": ["vitest/globals"]
4+
}
5+
}
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
module.exports = require.resolve('vitest');

packages/cli/snap-tests-global/migration-upgrade-vitest-retained-references-npm/snap.txt

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,16 @@
3030
}
3131
}
3232

33+
> cat config/tsconfig.test.json # nested compilerOptions.types is also retained
34+
{
35+
"compilerOptions": {
36+
"types": ["vitest/globals"]
37+
}
38+
}
39+
40+
> cat resolve.cjs # require.resolve remains an upstream Vitest reference
41+
module.exports = require.resolve('vitest');
42+
3343
> cat version.ts # vitest/package.json remains intentionally unre-written
3444
import metadata from 'vitest/package.json';
3545

packages/cli/snap-tests-global/migration-upgrade-vitest-retained-references-npm/steps.json

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@
33
"vp migrate --no-interactive # retained upstream references require package-local Vitest",
44
"cat package.json # Vitest dependency and override stay aligned",
55
"cat tsconfig.json # compilerOptions.types remains an upstream Vitest reference",
6+
"cat config/tsconfig.test.json # nested compilerOptions.types is also retained",
7+
"cat resolve.cjs # require.resolve remains an upstream Vitest reference",
68
"cat version.ts # vitest/package.json remains intentionally unre-written",
79
"vp migrate --no-interactive # retained references remain stable on rerun"
810
]

0 commit comments

Comments
 (0)