diff --git a/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/create_approve_builds_migrate_pnpm11/snapshots/create_approve_builds_migrate_pnpm11.md b/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/create_approve_builds_migrate_pnpm11/snapshots/create_approve_builds_migrate_pnpm11.md index 7121581f7a..b0d12cd780 100644 --- a/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/create_approve_builds_migrate_pnpm11/snapshots/create_approve_builds_migrate_pnpm11.md +++ b/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/create_approve_builds_migrate_pnpm11/snapshots/create_approve_builds_migrate_pnpm11.md @@ -17,6 +17,8 @@ template ships Prettier, so create installs+migrates before the main install; th approval recorded under allowBuilds despite the migration pre-install ``` +packages: + - . allowBuilds: core-js: true catalog: @@ -62,6 +64,8 @@ peerDependencyRules: - vite allowedVersions: vite: "*" +packages: + - . ``` ## `cd default-app && vp pm approve-builds core-js` @@ -77,6 +81,8 @@ node_modules/.pnpm/core-js@3.39.0/node_modules/core-js: Running postinstall scri core-js is now allowed under allowBuilds ``` +packages: + - . allowBuilds: core-js: true catalog: diff --git a/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/create_approve_builds_pnpm11/snapshots/create_approve_builds_pnpm11.md b/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/create_approve_builds_pnpm11/snapshots/create_approve_builds_pnpm11.md index 6c8ca152cb..320ec81dc6 100644 --- a/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/create_approve_builds_pnpm11/snapshots/create_approve_builds_pnpm11.md +++ b/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/create_approve_builds_pnpm11/snapshots/create_approve_builds_pnpm11.md @@ -16,6 +16,8 @@ approval recorded under allowBuilds ``` +packages: + - . allowBuilds: core-js: true catalog: @@ -48,6 +50,8 @@ default run surfaces the gated build with guidance, leaving it unapproved no allowBuilds, the build was not run ``` +packages: + - . allowBuilds: core-js: set this to true or false catalog: @@ -75,6 +79,8 @@ node_modules/.pnpm/core-js@3.39.0/node_modules/core-js: Running postinstall scri core-js is now allowed under allowBuilds ``` +packages: + - . allowBuilds: core-js: true catalog: diff --git a/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/create_next_command_library/snapshots.toml b/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/create_next_command_library/snapshots.toml index 4592b57a1a..99868e4ce4 100644 --- a/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/create_next_command_library/snapshots.toml +++ b/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/create_next_command_library/snapshots.toml @@ -3,4 +3,5 @@ name = "create_next_command_library" vp = "global" steps = [ { argv = ["vp", "create", "vite:library", "--no-interactive"], comment = "verify next command suggests vp run", timeout = 120000, continue-on-failure = true }, + { argv = ["vpt", "print-file", "vite-plus-library/pnpm-workspace.yaml"], comment = "standalone library workspace includes the root package", continue-on-failure = true }, ] diff --git a/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/create_next_command_library/snapshots/create_next_command_library.md b/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/create_next_command_library/snapshots/create_next_command_library.md index 4c05ed21ed..866bed3aab 100644 --- a/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/create_next_command_library/snapshots/create_next_command_library.md +++ b/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/create_next_command_library/snapshots/create_next_command_library.md @@ -10,3 +10,22 @@ verify next command suggests vp run • Node pnpm → Next: cd vite-plus-library && vp run ``` + +## `vpt print-file vite-plus-library/pnpm-workspace.yaml` + +standalone library workspace includes the root package + +``` +catalog: + vite: npm:@voidzero-dev/vite-plus-core@ + vite-plus: +overrides: + vite@*: "catalog:" +peerDependencyRules: + allowAny: + - vite + allowedVersions: + vite: "*" +packages: + - . +``` diff --git a/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/create_package_manager_override/.node-version b/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/create_package_manager_override/.node-version new file mode 100644 index 0000000000..b8b23ca93c --- /dev/null +++ b/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/create_package_manager_override/.node-version @@ -0,0 +1 @@ +22.23.4 diff --git a/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/create_package_manager_override/capture-create.mjs b/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/create_package_manager_override/capture-create.mjs new file mode 100644 index 0000000000..e8976184a7 --- /dev/null +++ b/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/create_package_manager_override/capture-create.mjs @@ -0,0 +1,21 @@ +import { spawnSync } from 'node:child_process'; +import { writeFileSync } from 'node:fs'; +import { stripVTControlCharacters } from 'node:util'; + +const args = ['create', ...process.argv.slice(2)]; +// Windows needs cmd to launch the local CLI's .cmd shim. All arguments are fixture literals. +const result = + process.platform === 'win32' + ? spawnSync('cmd.exe', ['/d', '/s', '/c', `vp ${args.join(' ')}`], { encoding: 'utf8' }) + : spawnSync('vp', args, { encoding: 'utf8' }); +const output = stripVTControlCharacters(`${result.stdout ?? ''}${result.stderr ?? ''}`); +process.stdout.write(output); + +// Keep the summary's exact package-manager version visible despite banner version redaction. +const summary = output.match(/• Node \S+\s+(\S+) (\S+)/); +writeFileSync( + 'create-summary.json', + JSON.stringify({ packageManager: summary?.[1] ?? null, version: summary?.[2] ?? null }, null, 2) + '\n', +); +if (result.error) throw result.error; +process.exitCode = result.status ?? 1; diff --git a/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/create_package_manager_override/mock-manifest.json b/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/create_package_manager_override/mock-manifest.json new file mode 100644 index 0000000000..2530bbbb87 --- /dev/null +++ b/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/create_package_manager_override/mock-manifest.json @@ -0,0 +1,27 @@ +{ + "@override/create": { + "name": "@override/create", + "dist-tags": { + "latest": "1.0.0" + }, + "versions": { + "1.0.0": { + "name": "@override/create", + "version": "1.0.0", + "createConfig": { + "templates": [ + { + "name": "demo", + "description": "Package manager override fixture", + "template": "./template" + } + ] + }, + "dist": { + "tarball": "{REGISTRY}/@override/create/-/create-1.0.0.tgz", + "integrity": "sha512-BtnLAbJfxjm1whROR0IFq3HsDYEvBsV9IUGLvVHGmzZ63TYs6By4DehJouH2jN1q0H9dIJPBkiLds1DGmzxTqg==" + } + } + } + } +} diff --git a/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/create_package_manager_override/pack.mjs b/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/create_package_manager_override/pack.mjs new file mode 100644 index 0000000000..5448e85497 --- /dev/null +++ b/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/create_package_manager_override/pack.mjs @@ -0,0 +1,54 @@ +// Run with node to regenerate this fixture's local template tarball and metadata. +import { createHash } from 'node:crypto'; +import { mkdirSync, readFileSync, writeFileSync } from 'node:fs'; +import path from 'node:path'; + +import { createTarball } from '../../registry/archive.mjs'; + +const root = import.meta.dirname; +const pkg = { + name: '@override/create', + version: '1.0.0', + createConfig: { + templates: [ + { name: 'demo', description: 'Package manager override fixture', template: './template' }, + ], + }, +}; +const tarball = createTarball([ + { name: 'package/package.json', contents: Buffer.from(JSON.stringify(pkg)), mode: 0o644 }, + { + name: 'package/template/package.json', + contents: readFileSync(path.join(root, 'template/package.json')), + mode: 0o644, + }, + { + name: 'package/template/record-install.cjs', + contents: readFileSync(path.join(root, 'record-install.cjs')), + mode: 0o644, + }, +]); +mkdirSync(path.join(root, 'tarballs'), { recursive: true }); +writeFileSync(path.join(root, 'tarballs/create-1.0.0.tgz'), tarball); +writeFileSync( + path.join(root, 'mock-manifest.json'), + JSON.stringify( + { + [pkg.name]: { + name: pkg.name, + 'dist-tags': { latest: pkg.version }, + versions: { + [pkg.version]: { + ...pkg, + dist: { + tarball: '{REGISTRY}/@override/create/-/create-1.0.0.tgz', + integrity: `sha512-${createHash('sha512').update(tarball).digest('base64')}`, + }, + }, + }, + }, + }, + null, + 2, + ) + '\n', +); diff --git a/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/create_package_manager_override/package.json b/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/create_package_manager_override/package.json new file mode 100644 index 0000000000..5c15e74c36 --- /dev/null +++ b/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/create_package_manager_override/package.json @@ -0,0 +1,8 @@ +{ + "name": "create-override-parent", + "private": true, + "devEngines": { + "packageManager": { "name": "pnpm", "version": "12.11.2", "onFail": "download" } + }, + "scripts": { "postinstall": "node record-install.cjs" } +} diff --git a/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/create_package_manager_override/record-install.cjs b/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/create_package_manager_override/record-install.cjs new file mode 100644 index 0000000000..b64fc121c9 --- /dev/null +++ b/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/create_package_manager_override/record-install.cjs @@ -0,0 +1,6 @@ +const [packageManager, version] = process.env.npm_config_user_agent.split(' ')[0].split('/'); + +require('node:fs').writeFileSync( + 'installed-with.json', + JSON.stringify({ packageManager, version }, null, 2) + '\n', +); diff --git a/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/create_package_manager_override/snapshots.toml b/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/create_package_manager_override/snapshots.toml new file mode 100644 index 0000000000..b02449db97 --- /dev/null +++ b/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/create_package_manager_override/snapshots.toml @@ -0,0 +1,47 @@ +[[case]] +name = "create_package_manager_override_version" +vp = ["global", "local"] +local-registry = true +unset-env = ["VP_SKIP_INSTALL", "CI"] +env = { VP_PACKAGE_MANAGER = "pnpm@10.6.1" } +steps = [ + { argv = ["node", "capture-create.mjs", "@override:demo", "--directory", "demo", "--package-manager", "pnpm", "--no-interactive", "--no-agent", "--no-editor", "--no-hooks"], timeout = 180000 }, + { argv = ["vpt", "print-file", "create-summary.json"], comment = "the exact package-manager version reported in the summary" }, + { argv = ["vpt", "print-file", "demo/package.json"], comment = "pnpm 10.6.1 reads settings from package.json" }, + { argv = ["node", "-p", "require('./demo/package.json').devEngines.packageManager.version"], comment = "record the exact pin separately from manifest version redaction" }, + { argv = ["vpt", "print-file", "demo/installed-with.json"], comment = "package manager recorded by the install lifecycle script" }, + { argv = ["vpt", "print-file", "demo/pnpm-workspace.yaml"] }, + { argv = ["vpt", "stat-file", "demo/pnpm-lock.yaml"] }, +] + +[[case]] +name = "create_package_manager_override_family" +vp = ["global", "local"] +local-registry = true +unset-env = ["VP_SKIP_INSTALL", "CI"] +env = { VP_PACKAGE_MANAGER = "npm@10.9.2" } +steps = [ + { argv = ["node", "capture-create.mjs", "@override:demo", "--directory", "demo", "--package-manager", "pnpm", "--no-interactive", "--no-agent", "--no-editor", "--no-hooks"], timeout = 180000 }, + { argv = ["vpt", "print-file", "create-summary.json"], comment = "the exact package-manager version reported in the summary" }, + { argv = ["vpt", "print-file", "demo/package.json"], comment = "the npm override takes precedence over the pnpm selection" }, + { argv = ["node", "-p", "require('./demo/package.json').devEngines.packageManager.version"], comment = "record the exact pin separately from manifest version redaction" }, + { argv = ["vpt", "print-file", "demo/installed-with.json"], comment = "package manager recorded by the install lifecycle script" }, + { argv = ["vpt", "stat-file", "demo/package-lock.json", "demo/pnpm-workspace.yaml"] }, +] + +[[case]] +name = "create_package_manager_override_monorepo" +vp = ["global", "local"] +local-registry = true +unset-env = ["VP_SKIP_INSTALL", "CI"] +env = { VP_PACKAGE_MANAGER = "pnpm@10.6.1" } +steps = [ + { argv = ["vpt", "write-file", "pnpm-workspace.yaml", "packages:\n - packages/*\n"], snapshot = false }, + { argv = ["node", "capture-create.mjs", "@override:demo", "--directory", "packages/demo", "--package-manager", "pnpm", "--no-interactive", "--no-agent", "--no-editor", "--no-hooks"], timeout = 180000 }, + { argv = ["vpt", "print-file", "create-summary.json"], comment = "the exact package-manager version reported in the summary" }, + { argv = ["vpt", "print-file", "package.json"], comment = "the session override preserves the existing project pin" }, + { argv = ["node", "-p", "require('./package.json').devEngines.packageManager.version"], comment = "record the exact existing pin separately from manifest version redaction" }, + { argv = ["vpt", "print-file", "installed-with.json"], comment = "the install uses the session override" }, + { argv = ["vpt", "print-file", "pnpm-workspace.yaml"], comment = "preserve the workspace patterns without adding a standalone root" }, + { argv = ["vpt", "stat-file", "pnpm-lock.yaml"] }, +] diff --git a/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/create_package_manager_override/snapshots/create_package_manager_override_family.global.md b/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/create_package_manager_override/snapshots/create_package_manager_override_family.global.md new file mode 100644 index 0000000000..5af3890253 --- /dev/null +++ b/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/create_package_manager_override/snapshots/create_package_manager_override_family.global.md @@ -0,0 +1,74 @@ +# create_package_manager_override_family + +## `node capture-create.mjs @override:demo --directory demo --package-manager pnpm --no-interactive --no-agent --no-editor --no-hooks` + +``` +◇ Scaffolded demo +• Node npm +✓ Dependencies installed in +→ Next: cd demo && vp run +``` + +## `vpt print-file create-summary.json` + +the exact package-manager version reported in the summary + +``` +{ + "packageManager": "npm", + "version": "10.9.2" +} +``` + +## `vpt print-file demo/package.json` + +the npm override takes precedence over the pnpm selection + +``` +{ + "name": "demo", + "version": "0.0.0", + "scripts": { + "postinstall": "node record-install.cjs" + }, + "devDependencies": { + "vite-plus": "" + }, + "overrides": { + "vite": "npm:@voidzero-dev/vite-plus-core@" + }, + "devEngines": { + "packageManager": { + "name": "npm", + "version": "", + "onFail": "download" + } + } +} +``` + +## `node -p require('./demo/package.json').devEngines.packageManager.version` + +record the exact pin separately from manifest version redaction + +``` +10.9.2 +``` + +## `vpt print-file demo/installed-with.json` + +package manager recorded by the install lifecycle script + +``` +{ + "packageManager": "npm", + "version": "10.9.2" +} +``` + +## `vpt stat-file demo/package-lock.json demo/pnpm-workspace.yaml` + +``` +demo/package-lock.json: file +demo/pnpm-workspace.yaml: missing +``` diff --git a/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/create_package_manager_override/snapshots/create_package_manager_override_family.local.md b/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/create_package_manager_override/snapshots/create_package_manager_override_family.local.md new file mode 100644 index 0000000000..5af3890253 --- /dev/null +++ b/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/create_package_manager_override/snapshots/create_package_manager_override_family.local.md @@ -0,0 +1,74 @@ +# create_package_manager_override_family + +## `node capture-create.mjs @override:demo --directory demo --package-manager pnpm --no-interactive --no-agent --no-editor --no-hooks` + +``` +◇ Scaffolded demo +• Node npm +✓ Dependencies installed in +→ Next: cd demo && vp run +``` + +## `vpt print-file create-summary.json` + +the exact package-manager version reported in the summary + +``` +{ + "packageManager": "npm", + "version": "10.9.2" +} +``` + +## `vpt print-file demo/package.json` + +the npm override takes precedence over the pnpm selection + +``` +{ + "name": "demo", + "version": "0.0.0", + "scripts": { + "postinstall": "node record-install.cjs" + }, + "devDependencies": { + "vite-plus": "" + }, + "overrides": { + "vite": "npm:@voidzero-dev/vite-plus-core@" + }, + "devEngines": { + "packageManager": { + "name": "npm", + "version": "", + "onFail": "download" + } + } +} +``` + +## `node -p require('./demo/package.json').devEngines.packageManager.version` + +record the exact pin separately from manifest version redaction + +``` +10.9.2 +``` + +## `vpt print-file demo/installed-with.json` + +package manager recorded by the install lifecycle script + +``` +{ + "packageManager": "npm", + "version": "10.9.2" +} +``` + +## `vpt stat-file demo/package-lock.json demo/pnpm-workspace.yaml` + +``` +demo/package-lock.json: file +demo/pnpm-workspace.yaml: missing +``` diff --git a/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/create_package_manager_override/snapshots/create_package_manager_override_monorepo.global.md b/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/create_package_manager_override/snapshots/create_package_manager_override_monorepo.global.md new file mode 100644 index 0000000000..3a04cd2984 --- /dev/null +++ b/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/create_package_manager_override/snapshots/create_package_manager_override_monorepo.global.md @@ -0,0 +1,75 @@ +# create_package_manager_override_monorepo + +## `vpt write-file pnpm-workspace.yaml 'packages: + - packages/* +'` + + +## `node capture-create.mjs @override:demo --directory packages/demo --package-manager pnpm --no-interactive --no-agent --no-editor --no-hooks` + +``` +◇ Scaffolded packages/demo +• Node pnpm +✓ Dependencies installed in +→ Next: cd packages/demo && vp run +``` + +## `vpt print-file create-summary.json` + +the exact package-manager version reported in the summary + +``` +{ + "packageManager": "pnpm", + "version": "10.6.1" +} +``` + +## `vpt print-file package.json` + +the session override preserves the existing project pin + +``` +{ + "name": "create-override-parent", + "private": true, + "devEngines": { + "packageManager": { "name": "pnpm", "version": "", "onFail": "download" } + }, + "scripts": { "postinstall": "node record-install.cjs" } +} +``` + +## `node -p require('./package.json').devEngines.packageManager.version` + +record the exact existing pin separately from manifest version redaction + +``` +12.11.2 +``` + +## `vpt print-file installed-with.json` + +the install uses the session override + +``` +{ + "packageManager": "pnpm", + "version": "10.6.1" +} +``` + +## `vpt print-file pnpm-workspace.yaml` + +preserve the workspace patterns without adding a standalone root + +``` +packages: + - packages/* +``` + +## `vpt stat-file pnpm-lock.yaml` + +``` +pnpm-lock.yaml: file +``` diff --git a/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/create_package_manager_override/snapshots/create_package_manager_override_monorepo.local.md b/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/create_package_manager_override/snapshots/create_package_manager_override_monorepo.local.md new file mode 100644 index 0000000000..3a04cd2984 --- /dev/null +++ b/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/create_package_manager_override/snapshots/create_package_manager_override_monorepo.local.md @@ -0,0 +1,75 @@ +# create_package_manager_override_monorepo + +## `vpt write-file pnpm-workspace.yaml 'packages: + - packages/* +'` + + +## `node capture-create.mjs @override:demo --directory packages/demo --package-manager pnpm --no-interactive --no-agent --no-editor --no-hooks` + +``` +◇ Scaffolded packages/demo +• Node pnpm +✓ Dependencies installed in +→ Next: cd packages/demo && vp run +``` + +## `vpt print-file create-summary.json` + +the exact package-manager version reported in the summary + +``` +{ + "packageManager": "pnpm", + "version": "10.6.1" +} +``` + +## `vpt print-file package.json` + +the session override preserves the existing project pin + +``` +{ + "name": "create-override-parent", + "private": true, + "devEngines": { + "packageManager": { "name": "pnpm", "version": "", "onFail": "download" } + }, + "scripts": { "postinstall": "node record-install.cjs" } +} +``` + +## `node -p require('./package.json').devEngines.packageManager.version` + +record the exact existing pin separately from manifest version redaction + +``` +12.11.2 +``` + +## `vpt print-file installed-with.json` + +the install uses the session override + +``` +{ + "packageManager": "pnpm", + "version": "10.6.1" +} +``` + +## `vpt print-file pnpm-workspace.yaml` + +preserve the workspace patterns without adding a standalone root + +``` +packages: + - packages/* +``` + +## `vpt stat-file pnpm-lock.yaml` + +``` +pnpm-lock.yaml: file +``` diff --git a/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/create_package_manager_override/snapshots/create_package_manager_override_version.global.md b/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/create_package_manager_override/snapshots/create_package_manager_override_version.global.md new file mode 100644 index 0000000000..9de5f23cc1 --- /dev/null +++ b/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/create_package_manager_override/snapshots/create_package_manager_override_version.global.md @@ -0,0 +1,93 @@ +# create_package_manager_override_version + +## `node capture-create.mjs @override:demo --directory demo --package-manager pnpm --no-interactive --no-agent --no-editor --no-hooks` + +``` +◇ Scaffolded demo +• Node pnpm +✓ Dependencies installed in +→ Next: cd demo && vp run +``` + +## `vpt print-file create-summary.json` + +the exact package-manager version reported in the summary + +``` +{ + "packageManager": "pnpm", + "version": "10.6.1" +} +``` + +## `vpt print-file demo/package.json` + +pnpm 10.6.1 reads settings from package.json + +``` +{ + "name": "demo", + "version": "0.0.0", + "scripts": { + "postinstall": "node record-install.cjs" + }, + "devDependencies": { + "vite-plus": "catalog:" + }, + "devEngines": { + "packageManager": { + "name": "pnpm", + "version": "", + "onFail": "download" + } + }, + "pnpm": { + "overrides": { + "vite@*": "npm:@voidzero-dev/vite-plus-core@" + }, + "peerDependencyRules": { + "allowAny": [ + "vite" + ], + "allowedVersions": { + "vite": "*" + } + } + } +} +``` + +## `node -p require('./demo/package.json').devEngines.packageManager.version` + +record the exact pin separately from manifest version redaction + +``` +10.6.1 +``` + +## `vpt print-file demo/installed-with.json` + +package manager recorded by the install lifecycle script + +``` +{ + "packageManager": "pnpm", + "version": "10.6.1" +} +``` + +## `vpt print-file demo/pnpm-workspace.yaml` + +``` +catalog: + vite: npm:@voidzero-dev/vite-plus-core@ + vite-plus: +packages: + - . +``` + +## `vpt stat-file demo/pnpm-lock.yaml` + +``` +demo/pnpm-lock.yaml: file +``` diff --git a/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/create_package_manager_override/snapshots/create_package_manager_override_version.local.md b/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/create_package_manager_override/snapshots/create_package_manager_override_version.local.md new file mode 100644 index 0000000000..9de5f23cc1 --- /dev/null +++ b/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/create_package_manager_override/snapshots/create_package_manager_override_version.local.md @@ -0,0 +1,93 @@ +# create_package_manager_override_version + +## `node capture-create.mjs @override:demo --directory demo --package-manager pnpm --no-interactive --no-agent --no-editor --no-hooks` + +``` +◇ Scaffolded demo +• Node pnpm +✓ Dependencies installed in +→ Next: cd demo && vp run +``` + +## `vpt print-file create-summary.json` + +the exact package-manager version reported in the summary + +``` +{ + "packageManager": "pnpm", + "version": "10.6.1" +} +``` + +## `vpt print-file demo/package.json` + +pnpm 10.6.1 reads settings from package.json + +``` +{ + "name": "demo", + "version": "0.0.0", + "scripts": { + "postinstall": "node record-install.cjs" + }, + "devDependencies": { + "vite-plus": "catalog:" + }, + "devEngines": { + "packageManager": { + "name": "pnpm", + "version": "", + "onFail": "download" + } + }, + "pnpm": { + "overrides": { + "vite@*": "npm:@voidzero-dev/vite-plus-core@" + }, + "peerDependencyRules": { + "allowAny": [ + "vite" + ], + "allowedVersions": { + "vite": "*" + } + } + } +} +``` + +## `node -p require('./demo/package.json').devEngines.packageManager.version` + +record the exact pin separately from manifest version redaction + +``` +10.6.1 +``` + +## `vpt print-file demo/installed-with.json` + +package manager recorded by the install lifecycle script + +``` +{ + "packageManager": "pnpm", + "version": "10.6.1" +} +``` + +## `vpt print-file demo/pnpm-workspace.yaml` + +``` +catalog: + vite: npm:@voidzero-dev/vite-plus-core@ + vite-plus: +packages: + - . +``` + +## `vpt stat-file demo/pnpm-lock.yaml` + +``` +demo/pnpm-lock.yaml: file +``` diff --git a/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/create_package_manager_override/tarballs/create-1.0.0.tgz b/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/create_package_manager_override/tarballs/create-1.0.0.tgz new file mode 100644 index 0000000000..efc9bb0058 Binary files /dev/null and b/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/create_package_manager_override/tarballs/create-1.0.0.tgz differ diff --git a/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/create_package_manager_override/template/package.json b/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/create_package_manager_override/template/package.json new file mode 100644 index 0000000000..700a36c3f3 --- /dev/null +++ b/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/create_package_manager_override/template/package.json @@ -0,0 +1,5 @@ +{ + "name": "override-template", + "version": "0.0.0", + "scripts": { "postinstall": "node record-install.cjs" } +} diff --git a/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/migration_add_git_hooks/snapshots/migration_add_git_hooks.md b/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/migration_add_git_hooks/snapshots/migration_add_git_hooks.md index 54af3c6544..76cead136e 100644 --- a/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/migration_add_git_hooks/snapshots/migration_add_git_hooks.md +++ b/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/migration_add_git_hooks/snapshots/migration_add_git_hooks.md @@ -48,6 +48,8 @@ peerDependencyRules: - vite allowedVersions: vite: '*' +packages: + - . ``` ## `vpt print-file .vite-hooks/pre-commit` diff --git a/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/migration_auto_create_vite_config/snapshots/migration_auto_create_vite_config.md b/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/migration_auto_create_vite_config/snapshots/migration_auto_create_vite_config.md index d206896401..c434d8d182 100644 --- a/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/migration_auto_create_vite_config/snapshots/migration_auto_create_vite_config.md +++ b/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/migration_auto_create_vite_config/snapshots/migration_auto_create_vite_config.md @@ -95,4 +95,6 @@ peerDependencyRules: - vite allowedVersions: vite: '*' +packages: + - . ``` diff --git a/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/migration_baseurl_tsconfig/snapshots/migration_baseurl_tsconfig.md b/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/migration_baseurl_tsconfig/snapshots/migration_baseurl_tsconfig.md index 786b036a0d..aad8905b3e 100644 --- a/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/migration_baseurl_tsconfig/snapshots/migration_baseurl_tsconfig.md +++ b/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/migration_baseurl_tsconfig/snapshots/migration_baseurl_tsconfig.md @@ -102,4 +102,6 @@ peerDependencyRules: - vite allowedVersions: vite: '*' +packages: + - . ``` diff --git a/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/migration_chained_lint_staged_pre_commit/snapshots/migration_chained_lint_staged_pre_commit.md b/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/migration_chained_lint_staged_pre_commit/snapshots/migration_chained_lint_staged_pre_commit.md index 41101ccc53..5047134009 100644 --- a/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/migration_chained_lint_staged_pre_commit/snapshots/migration_chained_lint_staged_pre_commit.md +++ b/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/migration_chained_lint_staged_pre_commit/snapshots/migration_chained_lint_staged_pre_commit.md @@ -53,6 +53,8 @@ peerDependencyRules: - vite allowedVersions: vite: '*' +packages: + - . ``` ## `vpt print-file vite.config.ts` diff --git a/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/migration_composed_husky_custom_dir/snapshots/migration_composed_husky_custom_dir.md b/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/migration_composed_husky_custom_dir/snapshots/migration_composed_husky_custom_dir.md index 8f9a9de90b..83fcc4b2f5 100644 --- a/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/migration_composed_husky_custom_dir/snapshots/migration_composed_husky_custom_dir.md +++ b/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/migration_composed_husky_custom_dir/snapshots/migration_composed_husky_custom_dir.md @@ -62,6 +62,8 @@ peerDependencyRules: - vite allowedVersions: vite: '*' +packages: + - . ``` ## `vpt print-file .config/husky/pre-commit` diff --git a/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/migration_composed_husky_prepare/snapshots/migration_composed_husky_prepare.md b/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/migration_composed_husky_prepare/snapshots/migration_composed_husky_prepare.md index f3126ccd6e..88f3d14536 100644 --- a/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/migration_composed_husky_prepare/snapshots/migration_composed_husky_prepare.md +++ b/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/migration_composed_husky_prepare/snapshots/migration_composed_husky_prepare.md @@ -49,4 +49,6 @@ peerDependencyRules: - vite allowedVersions: vite: '*' +packages: + - . ``` diff --git a/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/migration_env_prefix_lint_staged/snapshots/migration_env_prefix_lint_staged.md b/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/migration_env_prefix_lint_staged/snapshots/migration_env_prefix_lint_staged.md index 8448cf35d6..6ca4348f84 100644 --- a/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/migration_env_prefix_lint_staged/snapshots/migration_env_prefix_lint_staged.md +++ b/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/migration_env_prefix_lint_staged/snapshots/migration_env_prefix_lint_staged.md @@ -53,6 +53,8 @@ peerDependencyRules: - vite allowedVersions: vite: '*' +packages: + - . ``` ## `vpt print-file vite.config.ts` diff --git a/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/migration_eslint/snapshots/migration_eslint.md b/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/migration_eslint/snapshots/migration_eslint.md index 6fd722d9e2..8a3a60d51e 100644 --- a/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/migration_eslint/snapshots/migration_eslint.md +++ b/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/migration_eslint/snapshots/migration_eslint.md @@ -49,6 +49,8 @@ peerDependencyRules: - vite allowedVersions: vite: '*' +packages: + - . ``` ## `vpt stat-file eslint.config.mjs --assert-not file` diff --git a/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/migration_eslint_lint_staged/snapshots/migration_eslint_lint_staged.md b/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/migration_eslint_lint_staged/snapshots/migration_eslint_lint_staged.md index 6e787aae18..5e574c6b5b 100644 --- a/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/migration_eslint_lint_staged/snapshots/migration_eslint_lint_staged.md +++ b/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/migration_eslint_lint_staged/snapshots/migration_eslint_lint_staged.md @@ -46,6 +46,8 @@ peerDependencyRules: - vite allowedVersions: vite: '*' +packages: + - . ``` ## `vpt print-file vite.config.ts` diff --git a/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/migration_eslint_lintstagedrc/snapshots/migration_eslint_lintstagedrc.md b/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/migration_eslint_lintstagedrc/snapshots/migration_eslint_lintstagedrc.md index 6bb47ada0e..12365c9fb1 100644 --- a/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/migration_eslint_lintstagedrc/snapshots/migration_eslint_lintstagedrc.md +++ b/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/migration_eslint_lintstagedrc/snapshots/migration_eslint_lintstagedrc.md @@ -46,6 +46,8 @@ peerDependencyRules: - vite allowedVersions: vite: '*' +packages: + - . ``` ## `vpt stat-file .lintstagedrc.json --assert-not file` diff --git a/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/migration_eslint_npx_wrapper/snapshots/migration_eslint_npx_wrapper.md b/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/migration_eslint_npx_wrapper/snapshots/migration_eslint_npx_wrapper.md index cb125d95b5..39c5152429 100644 --- a/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/migration_eslint_npx_wrapper/snapshots/migration_eslint_npx_wrapper.md +++ b/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/migration_eslint_npx_wrapper/snapshots/migration_eslint_npx_wrapper.md @@ -51,6 +51,8 @@ peerDependencyRules: - vite allowedVersions: vite: '*' +packages: + - . ``` ## `vpt stat-file eslint.config.mjs --assert-not file` diff --git a/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/migration_existing_husky/snapshots/migration_existing_husky.md b/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/migration_existing_husky/snapshots/migration_existing_husky.md index 38647dd192..ce0da32b57 100644 --- a/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/migration_existing_husky/snapshots/migration_existing_husky.md +++ b/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/migration_existing_husky/snapshots/migration_existing_husky.md @@ -49,6 +49,8 @@ peerDependencyRules: - vite allowedVersions: vite: '*' +packages: + - . ``` ## `vpt print-file .husky/pre-commit` diff --git a/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/migration_existing_husky_lint_staged/snapshots/migration_existing_husky_lint_staged.md b/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/migration_existing_husky_lint_staged/snapshots/migration_existing_husky_lint_staged.md index fc0951692c..0b072079b9 100644 --- a/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/migration_existing_husky_lint_staged/snapshots/migration_existing_husky_lint_staged.md +++ b/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/migration_existing_husky_lint_staged/snapshots/migration_existing_husky_lint_staged.md @@ -53,6 +53,8 @@ peerDependencyRules: - vite allowedVersions: vite: '*' +packages: + - . ``` ## `vpt print-file vite.config.ts` diff --git a/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/migration_existing_husky_v8_hooks/snapshots/migration_existing_husky_v8_hooks.md b/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/migration_existing_husky_v8_hooks/snapshots/migration_existing_husky_v8_hooks.md index 45966828d4..1f514359d4 100644 --- a/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/migration_existing_husky_v8_hooks/snapshots/migration_existing_husky_v8_hooks.md +++ b/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/migration_existing_husky_v8_hooks/snapshots/migration_existing_husky_v8_hooks.md @@ -50,6 +50,8 @@ peerDependencyRules: - vite allowedVersions: vite: '*' +packages: + - . ``` ## `vpt print-file .husky/pre-commit` diff --git a/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/migration_existing_husky_v8_multi_hooks/snapshots/migration_existing_husky_v8_multi_hooks.md b/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/migration_existing_husky_v8_multi_hooks/snapshots/migration_existing_husky_v8_multi_hooks.md index a6511ad5c9..797482d041 100644 --- a/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/migration_existing_husky_v8_multi_hooks/snapshots/migration_existing_husky_v8_multi_hooks.md +++ b/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/migration_existing_husky_v8_multi_hooks/snapshots/migration_existing_husky_v8_multi_hooks.md @@ -50,6 +50,8 @@ peerDependencyRules: - vite allowedVersions: vite: '*' +packages: + - . ``` ## `vpt print-file .husky/pre-commit` diff --git a/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/migration_existing_lint_staged_config/snapshots/migration_existing_lint_staged_config.md b/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/migration_existing_lint_staged_config/snapshots/migration_existing_lint_staged_config.md index 2729823751..d1a3898616 100644 --- a/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/migration_existing_lint_staged_config/snapshots/migration_existing_lint_staged_config.md +++ b/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/migration_existing_lint_staged_config/snapshots/migration_existing_lint_staged_config.md @@ -48,6 +48,8 @@ peerDependencyRules: - vite allowedVersions: vite: '*' +packages: + - . ``` ## `vpt stat-file .lintstagedrc.json --assert-not file` diff --git a/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/migration_existing_pnpm_exec_lint_staged/snapshots/migration_existing_pnpm_exec_lint_staged.md b/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/migration_existing_pnpm_exec_lint_staged/snapshots/migration_existing_pnpm_exec_lint_staged.md index a40a4a8bb7..755a5a1cb8 100644 --- a/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/migration_existing_pnpm_exec_lint_staged/snapshots/migration_existing_pnpm_exec_lint_staged.md +++ b/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/migration_existing_pnpm_exec_lint_staged/snapshots/migration_existing_pnpm_exec_lint_staged.md @@ -53,6 +53,8 @@ peerDependencyRules: - vite allowedVersions: vite: '*' +packages: + - . ``` ## `vpt print-file vite.config.ts` diff --git a/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/migration_existing_prepare_script/snapshots/migration_existing_prepare_script.md b/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/migration_existing_prepare_script/snapshots/migration_existing_prepare_script.md index 4de69944ad..bfebdffe1a 100644 --- a/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/migration_existing_prepare_script/snapshots/migration_existing_prepare_script.md +++ b/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/migration_existing_prepare_script/snapshots/migration_existing_prepare_script.md @@ -49,6 +49,8 @@ peerDependencyRules: - vite allowedVersions: vite: '*' +packages: + - . ``` ## `vpt print-file .vite-hooks/pre-commit` diff --git a/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/migration_from_tsdown/snapshots/migration_from_tsdown.md b/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/migration_from_tsdown/snapshots/migration_from_tsdown.md index e715a94cef..fa1d9112f3 100644 --- a/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/migration_from_tsdown/snapshots/migration_from_tsdown.md +++ b/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/migration_from_tsdown/snapshots/migration_from_tsdown.md @@ -90,6 +90,8 @@ peerDependencyRules: - vite allowedVersions: vite: '*' +packages: + - . ``` ## `vp migrate --no-interactive` diff --git a/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/migration_from_tsdown_json_config/snapshots/migration_from_tsdown_json_config.md b/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/migration_from_tsdown_json_config/snapshots/migration_from_tsdown_json_config.md index 7e226727f1..7c7d8798d8 100644 --- a/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/migration_from_tsdown_json_config/snapshots/migration_from_tsdown_json_config.md +++ b/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/migration_from_tsdown_json_config/snapshots/migration_from_tsdown_json_config.md @@ -91,6 +91,8 @@ peerDependencyRules: - vite allowedVersions: vite: '*' +packages: + - . ``` ## `vp migrate --no-interactive` diff --git a/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/migration_from_vitest_config/snapshots/migration_from_vitest_config.md b/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/migration_from_vitest_config/snapshots/migration_from_vitest_config.md index bcd8c684ae..c199ec6345 100644 --- a/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/migration_from_vitest_config/snapshots/migration_from_vitest_config.md +++ b/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/migration_from_vitest_config/snapshots/migration_from_vitest_config.md @@ -113,4 +113,6 @@ peerDependencyRules: allowedVersions: vite: '*' vitest: '*' +packages: + - . ``` diff --git a/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/migration_from_vitest_files/snapshots/migration_from_vitest_files.md b/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/migration_from_vitest_files/snapshots/migration_from_vitest_files.md index 41978da470..a67dd54d0a 100644 --- a/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/migration_from_vitest_files/snapshots/migration_from_vitest_files.md +++ b/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/migration_from_vitest_files/snapshots/migration_from_vitest_files.md @@ -57,6 +57,8 @@ peerDependencyRules: allowedVersions: vite: '*' vitest: '*' +packages: + - . ``` ## `vpt print-file test/hello.ts` diff --git a/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/migration_hooks_skip_on_existing_hookspath/snapshots/migration_hooks_skip_on_existing_hookspath.md b/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/migration_hooks_skip_on_existing_hookspath/snapshots/migration_hooks_skip_on_existing_hookspath.md index ef9b150f19..d3315a3f58 100644 --- a/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/migration_hooks_skip_on_existing_hookspath/snapshots/migration_hooks_skip_on_existing_hookspath.md +++ b/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/migration_hooks_skip_on_existing_hookspath/snapshots/migration_hooks_skip_on_existing_hookspath.md @@ -48,6 +48,8 @@ peerDependencyRules: - vite allowedVersions: vite: '*' +packages: + - . ``` ## `git config --local core.hooksPath` diff --git a/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/migration_husky_latest_dist_tag/snapshots/migration_husky_latest_dist_tag.md b/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/migration_husky_latest_dist_tag/snapshots/migration_husky_latest_dist_tag.md index 70af6b9a4b..816489a7b3 100644 --- a/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/migration_husky_latest_dist_tag/snapshots/migration_husky_latest_dist_tag.md +++ b/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/migration_husky_latest_dist_tag/snapshots/migration_husky_latest_dist_tag.md @@ -49,4 +49,6 @@ peerDependencyRules: - vite allowedVersions: vite: '*' +packages: + - . ``` diff --git a/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/migration_husky_latest_dist_tag_v9_installed/snapshots/migration_husky_latest_dist_tag_v9_installed.md b/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/migration_husky_latest_dist_tag_v9_installed/snapshots/migration_husky_latest_dist_tag_v9_installed.md index 2e5b05206c..5d3020f710 100644 --- a/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/migration_husky_latest_dist_tag_v9_installed/snapshots/migration_husky_latest_dist_tag_v9_installed.md +++ b/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/migration_husky_latest_dist_tag_v9_installed/snapshots/migration_husky_latest_dist_tag_v9_installed.md @@ -53,4 +53,6 @@ peerDependencyRules: - vite allowedVersions: vite: '*' +packages: + - . ``` diff --git a/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/migration_husky_or_prepare/snapshots/migration_husky_or_prepare.md b/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/migration_husky_or_prepare/snapshots/migration_husky_or_prepare.md index 9b895203cb..335bf4cc17 100644 --- a/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/migration_husky_or_prepare/snapshots/migration_husky_or_prepare.md +++ b/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/migration_husky_or_prepare/snapshots/migration_husky_or_prepare.md @@ -53,4 +53,6 @@ peerDependencyRules: - vite allowedVersions: vite: '*' +packages: + - . ``` diff --git a/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/migration_husky_semicolon_prepare/snapshots/migration_husky_semicolon_prepare.md b/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/migration_husky_semicolon_prepare/snapshots/migration_husky_semicolon_prepare.md index 1cca97e5b1..fa2430a7d8 100644 --- a/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/migration_husky_semicolon_prepare/snapshots/migration_husky_semicolon_prepare.md +++ b/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/migration_husky_semicolon_prepare/snapshots/migration_husky_semicolon_prepare.md @@ -53,4 +53,6 @@ peerDependencyRules: - vite allowedVersions: vite: '*' +packages: + - . ``` diff --git a/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/migration_husky_v8_preserves_lint_staged/snapshots/migration_husky_v8_preserves_lint_staged.md b/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/migration_husky_v8_preserves_lint_staged/snapshots/migration_husky_v8_preserves_lint_staged.md index b775701d03..5457b990a3 100644 --- a/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/migration_husky_v8_preserves_lint_staged/snapshots/migration_husky_v8_preserves_lint_staged.md +++ b/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/migration_husky_v8_preserves_lint_staged/snapshots/migration_husky_v8_preserves_lint_staged.md @@ -53,4 +53,6 @@ peerDependencyRules: - vite allowedVersions: vite: '*' +packages: + - . ``` diff --git a/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/migration_lazy_plugins_await/snapshots/migration_lazy_plugins_await.md b/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/migration_lazy_plugins_await/snapshots/migration_lazy_plugins_await.md index 0f2a1951b1..09e7e06638 100644 --- a/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/migration_lazy_plugins_await/snapshots/migration_lazy_plugins_await.md +++ b/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/migration_lazy_plugins_await/snapshots/migration_lazy_plugins_await.md @@ -67,4 +67,6 @@ peerDependencyRules: - vite allowedVersions: vite: '*' +packages: + - . ``` diff --git a/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/migration_lint_staged_in_scripts/snapshots/migration_lint_staged_in_scripts.md b/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/migration_lint_staged_in_scripts/snapshots/migration_lint_staged_in_scripts.md index 467fd26f76..8b01460233 100644 --- a/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/migration_lint_staged_in_scripts/snapshots/migration_lint_staged_in_scripts.md +++ b/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/migration_lint_staged_in_scripts/snapshots/migration_lint_staged_in_scripts.md @@ -54,6 +54,8 @@ peerDependencyRules: - vite allowedVersions: vite: '*' +packages: + - . ``` ## `vpt print-file vite.config.ts` diff --git a/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/migration_lint_staged_merge_fail/snapshots/migration_lint_staged_merge_fail.md b/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/migration_lint_staged_merge_fail/snapshots/migration_lint_staged_merge_fail.md index 23fb3a8a00..e6a1da2430 100644 --- a/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/migration_lint_staged_merge_fail/snapshots/migration_lint_staged_merge_fail.md +++ b/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/migration_lint_staged_merge_fail/snapshots/migration_lint_staged_merge_fail.md @@ -55,6 +55,8 @@ peerDependencyRules: - vite allowedVersions: vite: '*' +packages: + - . ``` ## `vpt print-file vite.config.ts` diff --git a/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/migration_lint_staged_ts_config/snapshots/migration_lint_staged_ts_config.md b/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/migration_lint_staged_ts_config/snapshots/migration_lint_staged_ts_config.md index e13263d45d..12502ec5f6 100644 --- a/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/migration_lint_staged_ts_config/snapshots/migration_lint_staged_ts_config.md +++ b/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/migration_lint_staged_ts_config/snapshots/migration_lint_staged_ts_config.md @@ -51,6 +51,8 @@ peerDependencyRules: - vite allowedVersions: vite: '*' +packages: + - . ``` ## `vpt print-file lint-staged.config.ts` diff --git a/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/migration_lintstagedrc_json/snapshots/migration_lintstagedrc_json.md b/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/migration_lintstagedrc_json/snapshots/migration_lintstagedrc_json.md index 4134ba0d43..5c500112f3 100644 --- a/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/migration_lintstagedrc_json/snapshots/migration_lintstagedrc_json.md +++ b/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/migration_lintstagedrc_json/snapshots/migration_lintstagedrc_json.md @@ -103,6 +103,8 @@ peerDependencyRules: - vite allowedVersions: vite: '*' +packages: + - . ``` ## `vpt print-file vite.config.ts` diff --git a/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/migration_lintstagedrc_merge_fail/snapshots/migration_lintstagedrc_merge_fail.md b/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/migration_lintstagedrc_merge_fail/snapshots/migration_lintstagedrc_merge_fail.md index fe4904d1e5..e03db8eb9c 100644 --- a/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/migration_lintstagedrc_merge_fail/snapshots/migration_lintstagedrc_merge_fail.md +++ b/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/migration_lintstagedrc_merge_fail/snapshots/migration_lintstagedrc_merge_fail.md @@ -52,6 +52,8 @@ peerDependencyRules: - vite allowedVersions: vite: '*' +packages: + - . ``` ## `vpt print-file .lintstagedrc.json` diff --git a/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/migration_lintstagedrc_not_support/snapshots/migration_lintstagedrc_not_support.md b/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/migration_lintstagedrc_not_support/snapshots/migration_lintstagedrc_not_support.md index beff4d8795..4670ab7b2a 100644 --- a/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/migration_lintstagedrc_not_support/snapshots/migration_lintstagedrc_not_support.md +++ b/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/migration_lintstagedrc_not_support/snapshots/migration_lintstagedrc_not_support.md @@ -79,4 +79,6 @@ peerDependencyRules: - vite allowedVersions: vite: '*' +packages: + - . ``` diff --git a/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/migration_lintstagedrc_staged_exists/snapshots/migration_lintstagedrc_staged_exists.md b/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/migration_lintstagedrc_staged_exists/snapshots/migration_lintstagedrc_staged_exists.md index e3662eebe4..cdb562a9c1 100644 --- a/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/migration_lintstagedrc_staged_exists/snapshots/migration_lintstagedrc_staged_exists.md +++ b/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/migration_lintstagedrc_staged_exists/snapshots/migration_lintstagedrc_staged_exists.md @@ -49,6 +49,8 @@ peerDependencyRules: - vite allowedVersions: vite: '*' +packages: + - . ``` ## `vpt stat-file .lintstagedrc.json --assert file` diff --git a/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/migration_merge_vite_config_js/snapshots/migration_merge_vite_config_js.md b/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/migration_merge_vite_config_js/snapshots/migration_merge_vite_config_js.md index 165f3445bf..c53a0df297 100644 --- a/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/migration_merge_vite_config_js/snapshots/migration_merge_vite_config_js.md +++ b/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/migration_merge_vite_config_js/snapshots/migration_merge_vite_config_js.md @@ -89,4 +89,6 @@ peerDependencyRules: - vite allowedVersions: vite: '*' +packages: + - . ``` diff --git a/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/migration_merge_vite_config_ts/snapshots/migration_merge_vite_config_ts.md b/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/migration_merge_vite_config_ts/snapshots/migration_merge_vite_config_ts.md index 64ac0df171..78d6ed6c22 100644 --- a/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/migration_merge_vite_config_ts/snapshots/migration_merge_vite_config_ts.md +++ b/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/migration_merge_vite_config_ts/snapshots/migration_merge_vite_config_ts.md @@ -169,4 +169,6 @@ peerDependencyRules: allowedVersions: vite: '*' vitest: '*' +packages: + - . ``` diff --git a/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/migration_no_git_repo/snapshots/migration_no_git_repo.md b/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/migration_no_git_repo/snapshots/migration_no_git_repo.md index cb103d8e0f..87652a65c2 100644 --- a/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/migration_no_git_repo/snapshots/migration_no_git_repo.md +++ b/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/migration_no_git_repo/snapshots/migration_no_git_repo.md @@ -44,6 +44,8 @@ peerDependencyRules: - vite allowedVersions: vite: '*' +packages: + - . ``` ## `vpt stat-file .vite-hooks --assert dir` diff --git a/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/migration_no_hooks/snapshots/migration_no_hooks.md b/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/migration_no_hooks/snapshots/migration_no_hooks.md index 830b4912ea..7afca60e77 100644 --- a/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/migration_no_hooks/snapshots/migration_no_hooks.md +++ b/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/migration_no_hooks/snapshots/migration_no_hooks.md @@ -44,6 +44,8 @@ peerDependencyRules: - vite allowedVersions: vite: '*' +packages: + - . ``` ## `vpt stat-file .vite-hooks --assert-not dir` diff --git a/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/migration_no_hooks_with_husky/snapshots/migration_no_hooks_with_husky.md b/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/migration_no_hooks_with_husky/snapshots/migration_no_hooks_with_husky.md index 4d0cd34d8b..93a89b3ca5 100644 --- a/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/migration_no_hooks_with_husky/snapshots/migration_no_hooks_with_husky.md +++ b/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/migration_no_hooks_with_husky/snapshots/migration_no_hooks_with_husky.md @@ -53,6 +53,8 @@ peerDependencyRules: - vite allowedVersions: vite: '*' +packages: + - . ``` ## `vpt stat-file .husky --assert-not dir` diff --git a/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/migration_other_hook_tool/snapshots/migration_other_hook_tool.md b/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/migration_other_hook_tool/snapshots/migration_other_hook_tool.md index cade69a2f6..71241f025e 100644 --- a/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/migration_other_hook_tool/snapshots/migration_other_hook_tool.md +++ b/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/migration_other_hook_tool/snapshots/migration_other_hook_tool.md @@ -53,4 +53,6 @@ peerDependencyRules: - vite allowedVersions: vite: '*' +packages: + - . ``` diff --git a/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/migration_oxlintrc_json_with_comments/snapshots/migration_oxlintrc_json_with_comments.md b/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/migration_oxlintrc_json_with_comments/snapshots/migration_oxlintrc_json_with_comments.md index 0bce7e8eea..43b539f059 100644 --- a/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/migration_oxlintrc_json_with_comments/snapshots/migration_oxlintrc_json_with_comments.md +++ b/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/migration_oxlintrc_json_with_comments/snapshots/migration_oxlintrc_json_with_comments.md @@ -86,4 +86,6 @@ peerDependencyRules: - vite allowedVersions: vite: '*' +packages: + - . ``` diff --git a/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/migration_oxlintrc_jsonc/snapshots/migration_oxlintrc_jsonc.md b/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/migration_oxlintrc_jsonc/snapshots/migration_oxlintrc_jsonc.md index 494f0ccc1d..052c98baf1 100644 --- a/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/migration_oxlintrc_jsonc/snapshots/migration_oxlintrc_jsonc.md +++ b/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/migration_oxlintrc_jsonc/snapshots/migration_oxlintrc_jsonc.md @@ -95,4 +95,6 @@ peerDependencyRules: - vite allowedVersions: vite: '*' +packages: + - . ``` diff --git a/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/migration_partially_migrated_pre_commit/snapshots/migration_partially_migrated_pre_commit.md b/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/migration_partially_migrated_pre_commit/snapshots/migration_partially_migrated_pre_commit.md index 5bb81236bb..dba95bb230 100644 --- a/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/migration_partially_migrated_pre_commit/snapshots/migration_partially_migrated_pre_commit.md +++ b/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/migration_partially_migrated_pre_commit/snapshots/migration_partially_migrated_pre_commit.md @@ -50,6 +50,8 @@ peerDependencyRules: - vite allowedVersions: vite: '*' +packages: + - . ``` ## `vpt print-file .husky/pre-commit` diff --git a/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/migration_prettier/snapshots/migration_prettier.md b/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/migration_prettier/snapshots/migration_prettier.md index bd736ea504..e20cef5d59 100644 --- a/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/migration_prettier/snapshots/migration_prettier.md +++ b/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/migration_prettier/snapshots/migration_prettier.md @@ -50,6 +50,8 @@ peerDependencyRules: - vite allowedVersions: vite: '*' +packages: + - . ``` ## `vpt stat-file .prettierrc.json --assert-not file` diff --git a/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/migration_prettier_eslint_combo/snapshots/migration_prettier_eslint_combo.md b/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/migration_prettier_eslint_combo/snapshots/migration_prettier_eslint_combo.md index 53f8b36cda..55cd6daba1 100644 --- a/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/migration_prettier_eslint_combo/snapshots/migration_prettier_eslint_combo.md +++ b/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/migration_prettier_eslint_combo/snapshots/migration_prettier_eslint_combo.md @@ -52,6 +52,8 @@ peerDependencyRules: - vite allowedVersions: vite: '*' +packages: + - . ``` ## `vpt stat-file eslint.config.mjs --assert-not file` diff --git a/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/migration_prettier_ignore_unknown/snapshots/migration_prettier_ignore_unknown.md b/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/migration_prettier_ignore_unknown/snapshots/migration_prettier_ignore_unknown.md index 69ad496ca8..5192a5bb29 100644 --- a/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/migration_prettier_ignore_unknown/snapshots/migration_prettier_ignore_unknown.md +++ b/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/migration_prettier_ignore_unknown/snapshots/migration_prettier_ignore_unknown.md @@ -50,6 +50,8 @@ peerDependencyRules: - vite allowedVersions: vite: '*' +packages: + - . ``` ## `vpt stat-file .prettierrc.json --assert-not file` diff --git a/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/migration_prettier_lint_staged/snapshots/migration_prettier_lint_staged.md b/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/migration_prettier_lint_staged/snapshots/migration_prettier_lint_staged.md index 09e6ef9c66..8b7eb0bbdf 100644 --- a/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/migration_prettier_lint_staged/snapshots/migration_prettier_lint_staged.md +++ b/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/migration_prettier_lint_staged/snapshots/migration_prettier_lint_staged.md @@ -47,6 +47,8 @@ peerDependencyRules: - vite allowedVersions: vite: '*' +packages: + - . ``` ## `vpt print-file vite.config.ts` diff --git a/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/migration_prettier_pkg_json/snapshots/migration_prettier_pkg_json.md b/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/migration_prettier_pkg_json/snapshots/migration_prettier_pkg_json.md index b0dd73997e..62a5409fce 100644 --- a/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/migration_prettier_pkg_json/snapshots/migration_prettier_pkg_json.md +++ b/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/migration_prettier_pkg_json/snapshots/migration_prettier_pkg_json.md @@ -48,6 +48,8 @@ peerDependencyRules: - vite allowedVersions: vite: '*' +packages: + - . ``` ## `vpt print-file vite.config.ts` diff --git a/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/migration_rewrite_declare_module/snapshots/migration_rewrite_declare_module.md b/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/migration_rewrite_declare_module/snapshots/migration_rewrite_declare_module.md index 16d65ed4e1..a04785d1a2 100644 --- a/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/migration_rewrite_declare_module/snapshots/migration_rewrite_declare_module.md +++ b/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/migration_rewrite_declare_module/snapshots/migration_rewrite_declare_module.md @@ -89,4 +89,6 @@ peerDependencyRules: allowedVersions: vite: '*' vitest: '*' +packages: + - . ``` diff --git a/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/migration_skip_vite_dependency/snapshots/migration_skip_vite_dependency.md b/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/migration_skip_vite_dependency/snapshots/migration_skip_vite_dependency.md index 6681cd8c83..a72e0a1dd2 100644 --- a/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/migration_skip_vite_dependency/snapshots/migration_skip_vite_dependency.md +++ b/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/migration_skip_vite_dependency/snapshots/migration_skip_vite_dependency.md @@ -79,4 +79,6 @@ peerDependencyRules: - vite allowedVersions: vite: '*' +packages: + - . ``` diff --git a/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/migration_skip_vite_peer_dependency/snapshots/migration_skip_vite_peer_dependency.md b/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/migration_skip_vite_peer_dependency/snapshots/migration_skip_vite_peer_dependency.md index 3e2ad38e8c..b3182d0e43 100644 --- a/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/migration_skip_vite_peer_dependency/snapshots/migration_skip_vite_peer_dependency.md +++ b/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/migration_skip_vite_peer_dependency/snapshots/migration_skip_vite_peer_dependency.md @@ -79,4 +79,6 @@ peerDependencyRules: - vite allowedVersions: vite: '*' +packages: + - . ``` diff --git a/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/migration_standalone_pnpm/snapshots/migration_standalone_pnpm.md b/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/migration_standalone_pnpm/snapshots/migration_standalone_pnpm.md index 190803a2df..5a612f56f5 100644 --- a/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/migration_standalone_pnpm/snapshots/migration_standalone_pnpm.md +++ b/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/migration_standalone_pnpm/snapshots/migration_standalone_pnpm.md @@ -45,4 +45,6 @@ peerDependencyRules: - vite allowedVersions: vite: "*" +packages: + - . ``` diff --git a/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/migration_subpath/snapshots/migration_subpath.md b/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/migration_subpath/snapshots/migration_subpath.md index bea45e89e0..ea8534c3cd 100644 --- a/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/migration_subpath/snapshots/migration_subpath.md +++ b/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/migration_subpath/snapshots/migration_subpath.md @@ -74,4 +74,6 @@ peerDependencyRules: - vite allowedVersions: vite: '*' +packages: + - . ``` diff --git a/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/migration_tsconfig_esmoduleinterop/snapshots/migration_tsconfig_esmoduleinterop.md b/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/migration_tsconfig_esmoduleinterop/snapshots/migration_tsconfig_esmoduleinterop.md index 02ac9a1233..df2d36dd15 100644 --- a/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/migration_tsconfig_esmoduleinterop/snapshots/migration_tsconfig_esmoduleinterop.md +++ b/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/migration_tsconfig_esmoduleinterop/snapshots/migration_tsconfig_esmoduleinterop.md @@ -76,4 +76,6 @@ peerDependencyRules: - vite allowedVersions: vite: '*' +packages: + - . ``` diff --git a/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/migration_vite_version/snapshots/migration_vite_version.md b/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/migration_vite_version/snapshots/migration_vite_version.md index 2e5cc07b7f..da57d2c40f 100644 --- a/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/migration_vite_version/snapshots/migration_vite_version.md +++ b/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/migration_vite_version/snapshots/migration_vite_version.md @@ -46,4 +46,6 @@ peerDependencyRules: - vite allowedVersions: vite: '*' +packages: + - . ``` diff --git a/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/migration_vitest_import_only/snapshots/migration_vitest_import_only.md b/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/migration_vitest_import_only/snapshots/migration_vitest_import_only.md index d20d676a0a..07dd8a8d78 100644 --- a/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/migration_vitest_import_only/snapshots/migration_vitest_import_only.md +++ b/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/migration_vitest_import_only/snapshots/migration_vitest_import_only.md @@ -55,4 +55,6 @@ peerDependencyRules: - vite allowedVersions: vite: '*' +packages: + - . ``` diff --git a/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/migration_vitest_peer_dep/snapshots/migration_vitest_peer_dep.md b/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/migration_vitest_peer_dep/snapshots/migration_vitest_peer_dep.md index f67ce74fd3..f0cfdb9b20 100644 --- a/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/migration_vitest_peer_dep/snapshots/migration_vitest_peer_dep.md +++ b/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/migration_vitest_peer_dep/snapshots/migration_vitest_peer_dep.md @@ -56,4 +56,6 @@ peerDependencyRules: allowedVersions: vite: '*' vitest: '*' +packages: + - . ``` diff --git a/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/migration_vitest_unmanaged_override/snapshots/migration_vitest_unmanaged_override.md b/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/migration_vitest_unmanaged_override/snapshots/migration_vitest_unmanaged_override.md index 093f671893..222f55cac6 100644 --- a/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/migration_vitest_unmanaged_override/snapshots/migration_vitest_unmanaged_override.md +++ b/crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/migration_vitest_unmanaged_override/snapshots/migration_vitest_unmanaged_override.md @@ -47,6 +47,8 @@ peerDependencyRules: - vite allowedVersions: vite: '*' +packages: + - . ``` ## `vp migrate --no-interactive` diff --git a/crates/vp_global_cli/src/commands/env/package_manager.rs b/crates/vp_global_cli/src/commands/env/package_manager.rs index 96aa878118..0da70a23a3 100644 --- a/crates/vp_global_cli/src/commands/env/package_manager.rs +++ b/crates/vp_global_cli/src/commands/env/package_manager.rs @@ -91,14 +91,7 @@ pub(crate) async fn resolve_current_or_fallback_for( pub(crate) async fn resolve_current_spec( cwd: &AbsolutePath, ) -> Result, Error> { - let env = vp_shared::EnvConfig::get(); - let selected = env - .package_manager - .as_deref() - .map(str::trim) - .filter(|spec| !spec.is_empty()) - .map(parse_package_manager_spec_with_hash) - .transpose()?; + let selected = vp_pm_cli::package_manager_override()?; let mut resolution = resolve_environment_package_manager_spec( cwd, selected.as_ref().map(|(kind, version, hash)| (*kind, version.as_str(), hash.as_deref())), diff --git a/crates/vp_global_cli/src/commands/env/spec.rs b/crates/vp_global_cli/src/commands/env/spec.rs index bf5c679634..4abfd0abf4 100644 --- a/crates/vp_global_cli/src/commands/env/spec.rs +++ b/crates/vp_global_cli/src/commands/env/spec.rs @@ -95,20 +95,7 @@ impl EnvSpecs { pub(crate) fn parse_package_manager_spec_with_hash( value: &str, ) -> Result<(PackageManagerType, String, Option), Error> { - let Some((name, version)) = value.split_once('@') else { - return Err(invalid_spec(value)); - }; - let package_manager = PackageManagerType::from_name(name).ok_or_else(|| invalid_spec(value))?; - if version.is_empty() { - return Err(invalid_spec(value)); - } - let (version, hash) = version - .split_once('+') - .map_or((version, None), |(version, hash)| (version, Some(hash.to_string()))); - if version.is_empty() || hash.as_deref() == Some("") { - return Err(invalid_spec(value)); - } - Ok((package_manager, version.to_string(), hash)) + vp_pm_cli::parse_package_manager_spec(value).map_err(|_| invalid_spec(value)) } fn invalid_scope(value: &str) -> Error { diff --git a/crates/vp_pm_cli/src/dispatch.rs b/crates/vp_pm_cli/src/dispatch.rs index 225be29721..d4697bb81a 100644 --- a/crates/vp_pm_cli/src/dispatch.rs +++ b/crates/vp_pm_cli/src/dispatch.rs @@ -10,7 +10,7 @@ use vt_path::AbsolutePath; use crate::{ EnvironmentPackageManagerResolution, PackageManager, PackageManagerType, cli::PackageManagerCommand, download_package_manager_for_cwd, error::Error, - resolution::run_resolution, + package_manager_override, resolution::run_resolution, }; #[derive(Debug)] @@ -63,13 +63,23 @@ async fn dispatch_with_manager( let render_diagnostics = command.should_render_diagnostics(); let manager = match source { ManagerSource::Detect => { - PackageManager::builder(cwd) - .package_manager_type(PackageManagerType::Pnpm) - .build() - .await? + if let Some((kind, version, hash)) = package_manager_override()? { + build_selected_package_manager(cwd, kind, &version, hash.as_deref()).await? + } else { + PackageManager::builder(cwd) + .package_manager_type(PackageManagerType::Pnpm) + .build() + .await? + } } ManagerSource::Environment(package_manager) => { - build_selected_package_manager(cwd, package_manager).await? + build_selected_package_manager( + cwd, + package_manager.package_manager_type, + &package_manager.version, + package_manager.hash.as_deref(), + ) + .await? } ManagerSource::Resolved(manager) => manager, }; @@ -82,15 +92,11 @@ async fn dispatch_with_manager( async fn build_selected_package_manager( cwd: &AbsolutePath, - package_manager: &EnvironmentPackageManagerResolution, + kind: PackageManagerType, + version: &str, + hash: Option<&str>, ) -> Result { - let (install_dir, _, version) = download_package_manager_for_cwd( - cwd, - package_manager.package_manager_type, - &package_manager.version, - package_manager.hash.as_deref(), - ) - .await - .map_err(Error::Install)?; - Ok(PackageManager::from_install_dir(package_manager.package_manager_type, version, install_dir)) + let (install_dir, _, version) = + download_package_manager_for_cwd(cwd, kind, version, hash).await.map_err(Error::Install)?; + Ok(PackageManager::from_install_dir(kind, version, install_dir)) } diff --git a/crates/vp_pm_cli/src/error.rs b/crates/vp_pm_cli/src/error.rs index 11de599488..0f65cf34fc 100644 --- a/crates/vp_pm_cli/src/error.rs +++ b/crates/vp_pm_cli/src/error.rs @@ -20,6 +20,11 @@ pub enum Error { #[error("JSON error: {0}")] Json(#[from] serde_json::Error), + #[error( + "invalid environment specification {0:?}; expected a Node.js version or node|npm|pnpm|yarn|bun@" + )] + InvalidPackageManagerSpec(String), + #[error("Invalid {manager} version {version}: {source}")] InvalidPackageManagerVersion { manager: crate::PackageManagerType, diff --git a/crates/vp_pm_cli/src/lib.rs b/crates/vp_pm_cli/src/lib.rs index 509b6979bc..ee369b6dea 100644 --- a/crates/vp_pm_cli/src/lib.rs +++ b/crates/vp_pm_cli/src/lib.rs @@ -16,6 +16,7 @@ mod package_manager; mod request; pub(crate) mod resolution; mod shim; +mod spec; pub use cli::{ManagedGlobalCommand, PackageManagerCommand, PmCommand}; pub use config::{ @@ -47,3 +48,4 @@ pub use resolution::{ PublishArgs, RebuildArgs, RemoveArgs, SearchArgs, StageCommand, TeamCommand, TokenCommand, UnlinkArgs, UpdateArgs, VersionArgs, ViewArgs, WhoamiArgs, WhyArgs, }; +pub use spec::{PackageManagerSpec, package_manager_override, parse_package_manager_spec}; diff --git a/crates/vp_pm_cli/src/spec.rs b/crates/vp_pm_cli/src/spec.rs new file mode 100644 index 0000000000..2efef252d9 --- /dev/null +++ b/crates/vp_pm_cli/src/spec.rs @@ -0,0 +1,68 @@ +use vp_shared::EnvConfig; + +use crate::{Error, PackageManagerType}; + +pub type PackageManagerSpec = (PackageManagerType, String, Option); + +/// Parse a package manager requirement, including an optional Corepack integrity hash. +pub fn parse_package_manager_spec(value: &str) -> Result { + let invalid_spec = || Error::InvalidPackageManagerSpec(value.to_string()); + let (name, version) = value.split_once('@').ok_or_else(invalid_spec)?; + let package_manager = PackageManagerType::from_name(name).ok_or_else(invalid_spec)?; + let (version, hash) = version + .split_once('+') + .map_or((version, None), |(version, hash)| (version, Some(hash.to_string()))); + if version.is_empty() || hash.as_deref() == Some("") { + return Err(invalid_spec()); + } + Ok((package_manager, version.to_string(), hash)) +} + +/// Read the package manager override used by `vp` commands. +pub fn package_manager_override() -> Result, Error> { + EnvConfig::get() + .package_manager + .as_deref() + .map(str::trim) + .filter(|spec| !spec.is_empty()) + .map(parse_package_manager_spec) + .transpose() +} + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn override_preserves_version_and_integrity() { + EnvConfig::with_vars( + [("VP_PACKAGE_MANAGER", " pnpm@10.6.1+sha512.0123456789abcdef ")], + |_| { + assert_eq!( + package_manager_override().unwrap(), + Some(( + PackageManagerType::Pnpm, + "10.6.1".into(), + Some("sha512.0123456789abcdef".into()) + )) + ); + }, + ); + } + + #[test] + fn empty_override_is_ignored() { + EnvConfig::with_vars([("VP_PACKAGE_MANAGER", " ")], |_| { + assert_eq!(package_manager_override().unwrap(), None); + }); + } + + #[test] + fn invalid_override_is_rejected() { + for value in ["pnpm", "pnpm@", "pnpm@+sha512.abc", "pnpm@10.6.1+", "other@1"] { + EnvConfig::with_vars([("VP_PACKAGE_MANAGER", value)], |_| { + assert!(package_manager_override().is_err(), "{value}"); + }); + } + } +} diff --git a/packages/cli/binding/index.cjs b/packages/cli/binding/index.cjs index b616595e5f..a1248292b1 100644 --- a/packages/cli/binding/index.cjs +++ b/packages/cli/binding/index.cjs @@ -1108,6 +1108,7 @@ module.exports.documentationUrl = nativeBinding.documentationUrl; module.exports.downloadPackageManager = nativeBinding.downloadPackageManager; module.exports.ensureBlockingStdio = nativeBinding.ensureBlockingStdio; module.exports.findMonorepoRoot = nativeBinding.findMonorepoRoot; +module.exports.getPackageManagerOverride = nativeBinding.getPackageManagerOverride; module.exports.getVpDirs = nativeBinding.getVpDirs; module.exports.hasConfigKey = nativeBinding.hasConfigKey; module.exports.isDirectoryGitignored = nativeBinding.isDirectoryGitignored; diff --git a/packages/cli/binding/index.d.cts b/packages/cli/binding/index.d.cts index 3f25e0aab7..42d608349c 100644 --- a/packages/cli/binding/index.d.cts +++ b/packages/cli/binding/index.d.cts @@ -3787,6 +3787,9 @@ export declare function ensureBlockingStdio(): void; */ export declare function findMonorepoRoot(cwd: string): string | null; +/** Read the same `VP_PACKAGE_MANAGER` override used by `vp install`. */ +export declare function getPackageManagerOverride(): PackageManagerOverride | null; + /** * Resolved on-disk category roots from [`vp_shared::EnvConfig`]. * @@ -3919,6 +3922,12 @@ export interface MigrateArgs { */ export declare function migrateTaskCacheConfig(viteConfigPath: string): TaskCacheConfigResult; +export interface PackageManagerOverride { + name: string; + version: string; + expectedHash?: string; +} + export declare function parseConfigArgs(argv: Array): ParseConfigArgsOutcome; export type ParseConfigArgsOutcome = diff --git a/packages/cli/binding/src/package_manager.rs b/packages/cli/binding/src/package_manager.rs index 1ed2e201a5..17a0004650 100644 --- a/packages/cli/binding/src/package_manager.rs +++ b/packages/cli/binding/src/package_manager.rs @@ -24,6 +24,25 @@ pub struct DownloadPackageManagerResult { pub version: String, } +#[napi(object)] +pub struct PackageManagerOverride { + pub name: String, + pub version: String, + pub expected_hash: Option, +} + +/// Read the same `VP_PACKAGE_MANAGER` override used by `vp install`. +#[napi] +pub fn get_package_manager_override() -> Result> { + Ok(vp_pm_cli::package_manager_override().map_err(anyhow::Error::from)?.map( + |(name, version, expected_hash)| PackageManagerOverride { + name: name.to_string(), + version, + expected_hash, + }, + )) +} + /// Download a package manager /// /// ## Parameters diff --git a/packages/cli/src/create/bin.ts b/packages/cli/src/create/bin.ts index bca384dd70..3f651b1b17 100644 --- a/packages/cli/src/create/bin.ts +++ b/packages/cli/src/create/bin.ts @@ -4,7 +4,7 @@ import { styleText } from 'node:util'; import * as prompts from '@voidzero-dev/vite-plus-prompts'; -import { parseCreateArgs, vitePlusHeader } from '../../binding/index.js'; +import { getPackageManagerOverride, parseCreateArgs, vitePlusHeader } from '../../binding/index.js'; import { addFrameworkShim, createCatalogDependencyResolver, @@ -675,20 +675,24 @@ Use \`vp create --list\` to list all available templates, or run \`vp create --h } } - // Resolve package manager: existing monorepo > CLI flag > ambient detection > launcher > prompt/default + // The installer applies VP_PACKAGE_MANAGER before project pins or the create CLI flag. + const packageManagerOverride = getPackageManagerOverride(); + // Otherwise: existing monorepo > CLI flag > ambient detection > launcher > prompt/default. const requestedPackageManager = options.packageManager; const detectedPackageManager = workspaceInfoOptional.packageManager; const launcherPackageManager = detectLauncherPackageManager(); const packageManager = + (packageManagerOverride?.name as PackageManager | undefined) ?? (isMonorepo ? (detectedPackageManager ?? requestedPackageManager) : (requestedPackageManager ?? detectedPackageManager)) ?? launcherPackageManager ?? (await selectPackageManager(options.interactive, compactOutput)); const packageManagerVersion = - packageManager === detectedPackageManager + packageManagerOverride?.version ?? + (packageManager === detectedPackageManager ? workspaceInfoOptional.packageManagerVersion - : 'latest'; + : 'latest'); const shouldSilencePackageManagerInstallLog = compactOutput || (isMonorepo && workspaceInfoOptional.packageManager !== undefined); // ensure the package manager is installed by vite-plus @@ -698,10 +702,15 @@ Use \`vp create --list\` to list all available templates, or run \`vp create --h options.interactive, shouldSilencePackageManagerInstallLog, workspaceInfoOptional.rootDir, + packageManagerOverride?.expectedHash ?? undefined, ); + const resolvedPackageManagerOverride = packageManagerOverride + ? `${packageManager}@${downloadResult.version}${packageManagerOverride.expectedHash ? `+${packageManagerOverride.expectedHash}` : ''}` + : undefined; const workspaceInfo: WorkspaceInfo = { ...workspaceInfoOptional, packageManager, + packageManagerVersion: downloadResult.version, downloadPackageManager: downloadResult, }; // Only the global CLI puts `vp` on PATH; launches through a package manager reach it through the project's package manager. @@ -974,6 +983,7 @@ Use \`vp create --list\` to list all available templates, or run \`vp create --h silent: compactOutput, packageManager: workspaceInfo.packageManager, packageManagerVersion: workspaceInfo.downloadPackageManager.version, + packageManagerOverride: resolvedPackageManagerOverride, detectIgnoredBuilds: true, }); await handleIgnoredBuilds(fullPath, fullPath, installSummary); @@ -1167,6 +1177,7 @@ Use \`vp create --list\` to list all available templates, or run \`vp create --h silent: compactOutput, packageManager: workspaceInfo.packageManager, packageManagerVersion: workspaceInfo.downloadPackageManager.version, + packageManagerOverride: resolvedPackageManagerOverride, detectIgnoredBuilds: true, }); if (installSummary.status !== 'installed') { @@ -1288,6 +1299,7 @@ Use \`vp create --list\` to list all available templates, or run \`vp create --h silent: compactOutput, packageManager: workspaceInfo.packageManager, packageManagerVersion: workspaceInfo.downloadPackageManager.version, + packageManagerOverride: resolvedPackageManagerOverride, detectIgnoredBuilds: true, }); await handleIgnoredBuilds(fullPath, workspaceInfo.rootDir, installSummary); @@ -1337,6 +1349,7 @@ Use \`vp create --list\` to list all available templates, or run \`vp create --h silent: compactOutput, packageManager: workspaceInfo.packageManager, packageManagerVersion: workspaceInfo.downloadPackageManager.version, + packageManagerOverride: resolvedPackageManagerOverride, detectIgnoredBuilds: true, }); await handleIgnoredBuilds(fullPath, fullPath, installSummary); diff --git a/packages/cli/src/migration/__tests__/migrator.spec.ts b/packages/cli/src/migration/__tests__/migrator.spec.ts index c1bcb66131..6ea9d1d64c 100644 --- a/packages/cli/src/migration/__tests__/migrator.spec.ts +++ b/packages/cli/src/migration/__tests__/migrator.spec.ts @@ -4837,6 +4837,7 @@ describe('rewriteStandaloneProject pnpm workspace yaml', () => { expect(yaml).toContain('overrides:'); expect(yaml).toContain('peerDependencyRules:'); expect(yaml).toContain('catalog:'); + expect(readYamlObject(path.join(tmpDir, 'pnpm-workspace.yaml')).packages).toEqual(['.']); // package.json should not have pnpm section const pkg = readJson(path.join(tmpDir, 'package.json')); @@ -4846,6 +4847,10 @@ describe('rewriteStandaloneProject pnpm workspace yaml', () => { const devDeps = pkg.devDependencies as Record; expect(devDeps.vite).toBe('catalog:'); expect(devDeps['vite-plus']).toBe('catalog:'); + + const firstMigration = fs.readFileSync(path.join(tmpDir, 'pnpm-workspace.yaml'), 'utf8'); + rewriteStandaloneProject(tmpDir, makeWorkspaceInfo(tmpDir, PackageManager.pnpm), true, true); + expect(fs.readFileSync(path.join(tmpDir, 'pnpm-workspace.yaml'), 'utf8')).toBe(firstMigration); }); // PR #1891 review (P1): pnpm 9.5.0-10.6.1 supports catalogs (>= 9.5.0) but not @@ -4875,6 +4880,7 @@ describe('rewriteStandaloneProject pnpm workspace yaml', () => { expect(yaml).toContain('catalog:'); expect(yaml).toContain('vite-plus:'); expect(yaml).not.toContain('overrides:'); + expect(readYamlObject(path.join(tmpDir, 'pnpm-workspace.yaml')).packages).toEqual(['.']); }); it('does not duplicate vite-plus into devDependencies when it already lives in dependencies', () => { diff --git a/packages/cli/src/migration/migrator/orchestrators.ts b/packages/cli/src/migration/migrator/orchestrators.ts index dc4a2c5550..a775250c61 100644 --- a/packages/cli/src/migration/migrator/orchestrators.ts +++ b/packages/cli/src/migration/migrator/orchestrators.ts @@ -312,6 +312,11 @@ export function rewriteStandaloneProject( if (packageManager === PackageManager.pnpm) { ensurePnpmWorkspaceExoticSubdepsSetting(projectPath); + if (fs.existsSync(path.join(projectPath, 'pnpm-workspace.yaml'))) { + // pnpm reads settings from this file for standalone projects too. Declare + // the root package so workspace-aware installs can resolve it. + ensurePnpmWorkspacePackages(projectPath, ['.']); + } } if (packageManager === PackageManager.yarn) { diff --git a/packages/cli/src/utils/__tests__/prompts.spec.ts b/packages/cli/src/utils/__tests__/prompts.spec.ts index 2ff55bcc3d..aaa3ec4a81 100644 --- a/packages/cli/src/utils/__tests__/prompts.spec.ts +++ b/packages/cli/src/utils/__tests__/prompts.spec.ts @@ -30,6 +30,31 @@ describe('downloadPackageManager', () => { name: 'pnpm', version: 'latest', cwd: '/target/workspace', + expectedHash: undefined, + }); + }); + + it('preserves the integrity hash from a package manager override', async () => { + vi.mocked(downloadPackageManagerBinding).mockResolvedValueOnce({ + name: 'pnpm', + version: '10.6.1', + installDir: '/cache/pnpm', + binPrefix: '/cache/pnpm/bin', + packageName: 'pnpm', + }); + await downloadPackageManager( + PackageManager.pnpm, + '10.6.1', + false, + true, + '/target/workspace', + 'sha512.0123456789abcdef', + ); + expect(downloadPackageManagerBinding).toHaveBeenLastCalledWith({ + name: 'pnpm', + version: '10.6.1', + cwd: '/target/workspace', + expectedHash: 'sha512.0123456789abcdef', }); }); }); diff --git a/packages/cli/src/utils/prompts.ts b/packages/cli/src/utils/prompts.ts index 95a9f5900d..7289af7768 100644 --- a/packages/cli/src/utils/prompts.ts +++ b/packages/cli/src/utils/prompts.ts @@ -81,6 +81,7 @@ export async function downloadPackageManager( interactive?: boolean, silent = false, cwd?: string, + expectedHash?: string, ) { const spinner = silent ? getSilentSpinner() : getSpinner(interactive); spinner.start(`${packageManager}@${version} installing...`); @@ -88,6 +89,7 @@ export async function downloadPackageManager( name: packageManager, version, cwd, + expectedHash, }); spinner.stop(`${packageManager}@${downloadResult.version} installed`); return downloadResult; @@ -101,6 +103,8 @@ export async function runViteInstall( silent?: boolean; packageManager?: PackageManager; packageManagerVersion?: string; + /** Keep creation's resolved version when installation runs in the generated project. */ + packageManagerOverride?: string; /** * Surface the package manager's gated build scripts instead of suppressing * them. When set, the auto `--ignore-scripts` workaround is skipped (so @@ -147,7 +151,9 @@ export async function runViteInstall( const { exitCode, stderr, stdout } = await runCommandSilently({ ...getVpCommand(['install', ...installArgs]), cwd, - envs: process.env, + envs: options?.packageManagerOverride + ? { ...process.env, VP_PACKAGE_MANAGER: options.packageManagerOverride } + : process.env, }); const combinedOutput = `${stdout.toString()}\n${stderr.toString()}`; const pendingBuilds = detectIgnoredBuilds