vite-plus 0.2.9 → 0.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (98) hide show
  1. package/LICENSE +29 -29
  2. package/README.md +6 -5
  3. package/binding/index.cjs +63 -55
  4. package/binding/index.d.cts +218 -14
  5. package/dist/{agent-DQU8uS6P.js → agent-C5jMYVfB.js} +3 -2
  6. package/dist/bin.js +101 -60
  7. package/dist/cli-parse-DHE8NrBU.js +13 -0
  8. package/dist/client/bundledDevClient.mjs +1 -1
  9. package/dist/client/client.mjs +1 -1
  10. package/dist/client/env.mjs +1 -1
  11. package/dist/client.d.ts +1 -1
  12. package/dist/command-CLJK5jGW.js +2 -0
  13. package/dist/command-CguLh2KL.js +471 -0
  14. package/dist/config/bin.js +85 -55
  15. package/dist/{constants-CG513DRa.js → constants-0IAVgpox.js} +5 -3
  16. package/dist/create/bin.d.ts +13 -5
  17. package/dist/create/bin.js +55 -232
  18. package/dist/{define-config-DyNLA_f0.cjs → define-config-DIE9de46.cjs} +2 -2
  19. package/dist/{define-config-DWoAkNdp.d.ts → define-config-DPNEJxPz.d.ts} +5 -9
  20. package/dist/{define-config-CV4bQG_8.js → define-config-U3_xg7i-.js} +2 -2
  21. package/dist/define-config.cjs +1 -1
  22. package/dist/define-config.d.ts +1 -1
  23. package/dist/define-config.js +1 -1
  24. package/dist/dist-DfmT__Aw.js +619 -0
  25. package/dist/{editor-g4PosU99.js → editor-B5-lvRaU.js} +619 -88
  26. package/dist/{terminal-Bz-ps6rJ.js → help-BmKpeOP9.js} +1 -38
  27. package/dist/hooks/bin.js +9 -113
  28. package/dist/{hooks-pNCBWtFT.js → hooks-C-4gykWR.js} +5 -2
  29. package/dist/index.cjs +2 -2
  30. package/dist/index.d.ts +2 -2
  31. package/dist/index.js +2 -2
  32. package/dist/internal.d.ts +1 -1
  33. package/dist/internal.js +1 -1
  34. package/dist/migration/bin.js +76 -146
  35. package/dist/migration/compat/worker.js +1 -1
  36. package/dist/module-runner.d.ts +1 -1
  37. package/dist/module-runner.js +1 -1
  38. package/dist/{oxlint-plugin-config-BEZ9IUf7.js → oxlint-plugin-config-Drdl67Xp.js} +1 -1
  39. package/dist/oxlint-plugin.d.ts +2 -2
  40. package/dist/oxlint-plugin.js +1 -1
  41. package/dist/{pack-PvUg_xpv.d.ts → pack-BK38MLVZ.d.ts} +1 -1
  42. package/dist/pack-bin.d.ts +2 -3
  43. package/dist/pack-bin.js +9 -625
  44. package/dist/pack-client.d.ts +1 -1
  45. package/dist/pack.d.ts +2 -2
  46. package/dist/pack.js +1 -1
  47. package/dist/{package-B4T8RGMG.js → package-BZz2Ij68.js} +2 -2
  48. package/dist/{prompts-CHz_98bJ.js → prompts-CtzEgFY-.js} +7 -1872
  49. package/dist/{report-BS7ULx7A.js → report-CK5TnTsr.js} +2 -0
  50. package/dist/{resolve-vite-config-Dmeyeyj-.js → resolve-vite-config-CGks1xR7.js} +3 -3
  51. package/dist/resolve-vite-config-Dnmc-lBc.js +2 -0
  52. package/dist/semver-CaDAb8vV.js +1400 -0
  53. package/dist/staged/bin.js +82 -187
  54. package/dist/sync-versions/bin.d.ts +1 -0
  55. package/dist/sync-versions/bin.js +3884 -0
  56. package/dist/sync-versions/bin.mjs +13323 -0
  57. package/dist/terminal-MKGAuy-p.js +39 -0
  58. package/dist/toolchain.js +11 -11
  59. package/dist/toolchain.json +11 -11
  60. package/dist/{tsconfig-7v_BHagU.js → tsconfig-CUggNuJR.js} +5 -4
  61. package/dist/tsconfig-VAbm4ZzJ.js +2 -0
  62. package/dist/tsgolint-path.d.ts +3 -4
  63. package/dist/types/customEvent.d.ts +1 -1
  64. package/dist/types/hmrPayload.d.ts +1 -1
  65. package/dist/types/hot.d.ts +1 -1
  66. package/dist/types/import-meta.d.ts +1 -1
  67. package/dist/types/importGlob.d.ts +1 -1
  68. package/dist/types/importMeta.d.ts +1 -1
  69. package/dist/types/metadata.d.ts +1 -1
  70. package/dist/version.d.ts +2 -3
  71. package/dist/version.js +4 -3
  72. package/dist/versions.js +6 -6
  73. package/dist/vitest-ecosystem-BiRqcaRI.js +23 -0
  74. package/docs/guide/check.md +1 -0
  75. package/docs/guide/ci.md +42 -2
  76. package/docs/guide/env.md +136 -50
  77. package/docs/guide/ide-integration.md +14 -2
  78. package/docs/guide/index.md +1 -1
  79. package/docs/guide/install.md +5 -2
  80. package/docs/guide/installer-env-vars.md +51 -5
  81. package/docs/guide/migrate-rules.md +66 -2
  82. package/docs/guide/migrate.md +5 -5
  83. package/docs/guide/test.md +8 -0
  84. package/docs/guide/upgrade.md +48 -1
  85. package/package.json +34 -37
  86. package/dist/lib-L3DWSRQp.js +0 -75
  87. package/docs/_data/team.ts +0 -131
  88. package/docs/package.json +0 -30
  89. package/docs/pnpm-lock.yaml +0 -4003
  90. package/docs/pnpm-workspace.yaml +0 -13
  91. package/docs/public/checkmark.svg +0 -1
  92. package/docs/public/cta-background.jpg +0 -0
  93. package/docs/public/favicon.svg +0 -1
  94. package/docs/public/icon.svg +0 -1
  95. package/docs/public/logo.svg +0 -1
  96. package/docs/public/og.jpg +0 -0
  97. package/docs/vite.config.ts +0 -20
  98. package/dist/{json-qlK6UH0r.js → json-cULBl7Pi.js} +107 -107
@@ -1,4 +1,3 @@
1
- import { shouldPrintVitePlusHeader, vitePlusHeader } from "../binding/index.js";
2
1
  import { stripVTControlCharacters, styleText } from "node:util";
3
2
  //#region src/utils/help.ts
4
3
  const HELP_RIGHT_MARGIN = 4;
@@ -89,40 +88,4 @@ function renderCliDoc(doc, options = {}) {
89
88
  return output.join("\n");
90
89
  }
91
90
  //#endregion
92
- //#region src/utils/terminal.ts
93
- function log(message) {
94
- console.log(message);
95
- }
96
- /**
97
- * Emit the Vite+ banner (header line + trailing blank line) to stdout.
98
- * Gating (non-TTY, git hooks) lives in `shouldPrintVitePlusHeader` on the
99
- * Rust side so both CLIs stay in sync.
100
- */
101
- function printHeader() {
102
- if (!shouldPrintVitePlusHeader()) return;
103
- log(vitePlusHeader());
104
- log("");
105
- }
106
- function accent(text) {
107
- return styleText("blue", text);
108
- }
109
- function muted(text) {
110
- return styleText("gray", text);
111
- }
112
- function success(text) {
113
- return styleText("green", text);
114
- }
115
- function formatDuration(durationMs) {
116
- if (durationMs < 1e3) return `${Math.max(1, durationMs)}ms`;
117
- const durationSeconds = durationMs / 1e3;
118
- if (durationSeconds < 10) return `${durationSeconds.toFixed(1)}s`;
119
- return `${Math.round(durationSeconds)}s`;
120
- }
121
- function warnMsg(msg) {
122
- console.error(styleText(["yellow", "bold"], "warn:"), msg);
123
- }
124
- function errorMsg(msg) {
125
- console.error(styleText(["red", "bold"], "error:"), msg);
126
- }
127
- //#endregion
128
- export { muted as a, warnMsg as c, log as i, renderCliDoc as l, errorMsg as n, printHeader as o, formatDuration as r, success as s, accent as t };
91
+ export { renderCliDoc as t };
package/dist/hooks/bin.js CHANGED
@@ -1,127 +1,23 @@
1
- import { i as log, l as renderCliDoc, o as printHeader } from "../terminal-Bz-ps6rJ.js";
2
- import { t as lib_default } from "../lib-L3DWSRQp.js";
3
- import { i as enable, l as status, r as disable, t as DEFAULT_HOOKS_DIR } from "../hooks-pNCBWtFT.js";
4
- //#region src/hooks/args.ts
5
- const KNOWN_HOOKS_ARG_KEYS = /* @__PURE__ */ new Set([
6
- "_",
7
- "help",
8
- "h",
9
- "hooks-dir"
10
- ]);
11
- /**
12
- * Reject leftover positionals and unknown flags before enable/disable mutate state.
13
- */
14
- function unexpectedHooksArgsError(args) {
15
- const extra = args._.map(String).filter((value) => value !== "");
16
- if (extra.length > 0) return `Unexpected argument "${extra[0]}". Use --hooks-dir <path> to set a custom hooks directory.`;
17
- for (const key of Object.keys(args)) if (!KNOWN_HOOKS_ARG_KEYS.has(key)) return `Unknown option "--${key}".`;
18
- return null;
19
- }
20
- //#endregion
1
+ import { i as log } from "../terminal-MKGAuy-p.js";
2
+ import { l as status, n as disable, r as enable } from "../hooks-C-4gykWR.js";
3
+ import { t as unwrapCliParseOutcome } from "../cli-parse-DHE8NrBU.js";
4
+ import { parseHooksArgs } from "../../binding/index.js";
21
5
  //#region src/hooks/bin.ts
22
- const SUBCOMMANDS = [
23
- "enable",
24
- "disable",
25
- "status"
26
- ];
27
- function isSubcommand(value) {
28
- return !!value && SUBCOMMANDS.includes(value);
29
- }
30
- function printHelp() {
31
- const helpMessage = renderCliDoc({
32
- usage: "vp hooks <COMMAND> [OPTIONS]",
33
- summary: "Manage the Vite+ Git hook dispatcher for this repository.",
34
- documentationUrl: "https://viteplus.dev/guide/commit-hooks",
35
- sections: [
36
- {
37
- title: "Commands",
38
- rows: [
39
- {
40
- label: "enable",
41
- description: "Install or refresh the hook dispatcher (sets core.hooksPath)"
42
- },
43
- {
44
- label: "disable",
45
- description: "Disable hooks: unset core.hooksPath, remove <dir>/_, persist preference"
46
- },
47
- {
48
- label: "status",
49
- description: "Show preference, core.hooksPath, and dispatcher state"
50
- }
51
- ]
52
- },
53
- {
54
- title: "Options",
55
- rows: [{
56
- label: "--hooks-dir <path>",
57
- description: `Custom hooks directory (default: ${DEFAULT_HOOKS_DIR}, or last used)`
58
- }, {
59
- label: "-h, --help",
60
- description: "Show this help message"
61
- }]
62
- },
63
- {
64
- title: "Environment",
65
- rows: [{
66
- label: "VP_GIT_HOOKS=0",
67
- description: "Skip dispatcher install in enable (and skip hooks at commit time)"
68
- }]
69
- },
70
- {
71
- title: "Examples",
72
- lines: [
73
- " vp hooks enable",
74
- " vp hooks enable --hooks-dir .custom-hooks",
75
- " vp hooks disable",
76
- " vp hooks status"
77
- ]
78
- }
79
- ]
80
- });
81
- printHeader();
82
- log(helpMessage);
83
- }
84
6
  function applyResult(result) {
85
7
  if (result.message) log(result.message);
86
8
  if (result.isError) process.exit(1);
87
9
  }
88
10
  async function main() {
89
- const raw = process.argv.slice(3);
90
- const first = raw[0];
91
- const wantsHelp = raw.includes("-h") || raw.includes("--help");
92
- if (!first || first === "-h" || first === "--help") {
93
- printHelp();
94
- return;
95
- }
96
- if (!isSubcommand(first)) {
97
- log(`Unknown hooks command "${first}". Expected one of: ${SUBCOMMANDS.join(", ")}`);
98
- process.exit(1);
99
- }
100
- const subcommand = first;
101
- const args = lib_default(raw.slice(1), {
102
- boolean: ["help"],
103
- string: ["hooks-dir"],
104
- alias: { h: "help" }
105
- });
106
- if (args.help || wantsHelp) {
107
- printHelp();
108
- return;
109
- }
110
- const unexpected = unexpectedHooksArgsError(args);
111
- if (unexpected) {
112
- log(unexpected);
113
- process.exit(1);
114
- }
115
- const dirFlag = args["hooks-dir"];
116
- switch (subcommand) {
11
+ const args = unwrapCliParseOutcome(parseHooksArgs(process.argv.slice(3)));
12
+ switch (args.command) {
117
13
  case "enable":
118
- applyResult(enable(dirFlag));
14
+ applyResult(enable(args.hooksDir));
119
15
  return;
120
16
  case "disable":
121
- applyResult(disable(dirFlag));
17
+ applyResult(disable(args.hooksDir));
122
18
  return;
123
19
  case "status":
124
- applyResult(status(dirFlag));
20
+ applyResult(status(args.hooksDir));
125
21
  return;
126
22
  }
127
23
  }
@@ -380,8 +380,11 @@ function unsetOwnedHooksPath(target) {
380
380
  };
381
381
  return null;
382
382
  }
383
+ function isGitHooksEnvDisabled() {
384
+ return process.env.HUSKY === "0" || process.env.VP_GIT_HOOKS === "0" || process.env.VITE_GIT_HOOKS === "0";
385
+ }
383
386
  function install(dir, options = {}) {
384
- if (process.env.HUSKY === "0" || process.env.VP_GIT_HOOKS === "0" || process.env.VITE_GIT_HOOKS === "0") return {
387
+ if (isGitHooksEnvDisabled()) return {
385
388
  message: "skip install (git hooks disabled)",
386
389
  isError: false
387
390
  };
@@ -567,4 +570,4 @@ function status(dir) {
567
570
  };
568
571
  }
569
572
  //#endregion
570
- export { findUnsafeHookInstallPath as a, resolveHooksLocation as c, enable as i, status as l, SUPPORTED_GIT_HOOK_NAMES as n, install as o, disable as r, isHooksUserDisabled as s, DEFAULT_HOOKS_DIR as t };
573
+ export { install as a, resolveHooksLocation as c, findUnsafeHookInstallPath as i, status as l, disable as n, isGitHooksEnvDisabled as o, enable as r, isHooksUserDisabled as s, SUPPORTED_GIT_HOOK_NAMES as t };
package/dist/index.cjs CHANGED
@@ -1,6 +1,6 @@
1
- const require_define_config = require("./define-config-DyNLA_f0.cjs");
1
+ const require_define_config = require("./define-config-DIE9de46.cjs");
2
2
  //#region src/index.cts
3
- const vite = require("@voidzero-dev/vite-plus-core");
3
+ const vite = require("vite");
4
4
  const { configDefaults, coverageConfigDefaults, defaultBrowserPort, defaultExclude, defaultInclude } = require("vitest/config");
5
5
  const { defineConfig, defineProject, lazyPlugins } = (require_define_config.init_define_config(), require_define_config.__toCommonJS(require_define_config.define_config_exports));
6
6
  module.exports = {
package/dist/index.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { a as defineConfig, c as lazyPlugins, o as defineProject } from "./define-config-DWoAkNdp.js";
1
+ import { a as defineConfig, c as lazyPlugins, o as defineProject } from "./define-config-DPNEJxPz.js";
2
2
  import { TestProjectConfiguration, TestProjectInlineConfiguration, TestTagDefinition, TestUserConfig, UserProjectConfigExport, UserProjectConfigFn, UserWorkspaceConfig, ViteUserConfig, ViteUserConfigExport, ViteUserConfigFn, ViteUserConfigFnObject, ViteUserConfigFnPromise, WatcherTriggerPattern, configDefaults, coverageConfigDefaults, defaultBrowserPort, defaultExclude, defaultInclude } from "vitest/config";
3
- export * from "@voidzero-dev/vite-plus-core";
3
+ export * from "vite";
4
4
  export { type TestProjectConfiguration, type TestProjectInlineConfiguration, type TestTagDefinition, type TestUserConfig, type UserProjectConfigExport, type UserProjectConfigFn, type UserWorkspaceConfig, type ViteUserConfig, type ViteUserConfigExport, type ViteUserConfigFn, type ViteUserConfigFnObject, type ViteUserConfigFnPromise, type WatcherTriggerPattern, configDefaults, coverageConfigDefaults, defaultBrowserPort, defaultExclude, defaultInclude, defineConfig, defineProject, lazyPlugins };
package/dist/index.js CHANGED
@@ -1,4 +1,4 @@
1
- import { a as defineConfig, c as lazyPlugins, o as defineProject } from "./define-config-CV4bQG_8.js";
1
+ import { a as defineConfig, c as lazyPlugins, o as defineProject } from "./define-config-U3_xg7i-.js";
2
2
  import { configDefaults, coverageConfigDefaults, defaultBrowserPort, defaultExclude, defaultInclude } from "vitest/config";
3
- export * from "@voidzero-dev/vite-plus-core";
3
+ export * from "vite";
4
4
  export { configDefaults, coverageConfigDefaults, defaultBrowserPort, defaultExclude, defaultInclude, defineConfig, defineProject, lazyPlugins };
@@ -1 +1 @@
1
- export * from '@voidzero-dev/vite-plus-core/internal';
1
+ export * from 'vite/internal';
package/dist/internal.js CHANGED
@@ -1 +1 @@
1
- export * from '@voidzero-dev/vite-plus-core/internal';
1
+ export * from 'vite/internal';
@@ -1,17 +1,20 @@
1
1
  import { r as __toESM } from "../rolldown-runtime-CMFfr-1z.js";
2
- import { a as muted, c as warnMsg, i as log, l as renderCliDoc, o as printHeader, r as formatDuration, t as accent } from "../terminal-Bz-ps6rJ.js";
3
- import { f as isForceOverrideMode, u as VITE_PLUS_VERSION } from "../constants-CG513DRa.js";
4
- import { A as isCancel, C as log$1, D as spinner, E as select, M as runCommandSilently, T as outro, b as require_semver, c as selectPackageManager, i as promptGitHooks, l as upgradeYarn, n as defaultInteractive, o as runViteFmt, r as downloadPackageManager, s as runViteInstall, t as cancelAndExit, x as confirm, y as PackageManager } from "../prompts-CHz_98bJ.js";
5
- import { a as writeJsonFile, i as readJsonFile } from "../json-qlK6UH0r.js";
6
- import { i as hasBaseUrlInTsconfig, r as fixBaseUrlInTsconfig, t as confirmBaseUrlFix } from "../tsconfig-7v_BHagU.js";
7
- import { t as lib_default } from "../lib-L3DWSRQp.js";
8
- import { a as readNearestPackageJson, i as hasVitePlusDependency } from "../package-B4T8RGMG.js";
9
- import { i as selectAgentTargetPaths, l as displayRelative, n as detectAgentConflicts, r as detectExistingAgentTargetPaths, s as writeAgentInstructions } from "../agent-DQU8uS6P.js";
10
- import { n as addMigrationWarning, r as createMigrationReport } from "../report-BS7ULx7A.js";
11
- import { B as warnPackageLevelPrettier, C as mergeViteConfigFiles, D as configureYarnNodeModulesMode, E as ensureVitePlusBootstrap, F as hasFrameworkShim, H as detectEslintProject, I as confirmPrettierMigration, J as warnPackageLevelEslint, K as warnIncompatibleEslintIntegration, L as detectPrettierProject, N as addFrameworkShim, O as detectYarnPnpMode, P as detectFramework, R as migratePrettierToOxfmt, S as injectLintTypeCheckDefaults, T as detectVitePlusBootstrapPending, U as detectIncompatibleEslintIntegration, V as confirmEslintMigration, W as migrateEslintToOxlint, X as checkVitestVersion, Y as checkViteVersion, _ as preflightGitHooksSetup, d as finalizeCoreMigrationForExistingVitePlus, f as detectNodeVersionManagerFile, g as installGitHooks, h as detectLegacyGitHooksMigrationCandidate, i as selectEditor, k as detectWorkspace, l as rewriteStandaloneProject, o as writeEditorConfigs, p as migrateNodeVersionManagerFile, q as warnLegacyEslintConfig, r as isJsonLikeFile, s as rewriteMonorepo, t as detectEditorConflicts, u as detectPendingCoreMigration, v as shouldSkipStagedMigrationForHooks, w as collectToolchainVersionChanges } from "../editor-g4PosU99.js";
2
+ import { a as muted, c as warnMsg, i as log, o as printHeader, r as formatDuration, t as accent } from "../terminal-MKGAuy-p.js";
3
+ import { a as SETUP_VP_VERSION, f as VITE_PLUS_VERSION, m as isForceOverrideMode } from "../constants-0IAVgpox.js";
4
+ import { a as writeJsonFile, i as readJsonFile } from "../json-cULBl7Pi.js";
5
+ import { a as readNearestPackageJson, i as hasVitePlusDependency } from "../package-BZz2Ij68.js";
6
+ import { E as spinner, S as log$1, T as select, b as confirm, c as selectPackageManager, i as promptGitHooks, k as isCancel, l as upgradeYarn, n as defaultInteractive, o as runViteFmt, r as downloadPackageManager$1, s as runViteInstall, t as cancelAndExit, w as outro, y as PackageManager } from "../prompts-CtzEgFY-.js";
7
+ import { t as require_semver } from "../semver-CaDAb8vV.js";
8
+ import { i as selectAgentTargetPaths, l as displayRelative, n as detectAgentConflicts, r as detectExistingAgentTargetPaths, s as writeAgentInstructions } from "../agent-C5jMYVfB.js";
9
+ import { n as addMigrationWarning, r as createMigrationReport } from "../report-CK5TnTsr.js";
10
+ import { $ as warnIncompatibleEslintIntegration, A as detectYarnPnpMode, B as migrateTsupToTsdown, C as injectLintTypeCheckDefaults, D as detectVitePlusBootstrapPending, E as collectToolchainVersionChanges, F as addFrameworkShim, G as migratePrettierToOxfmt, H as warnMissingTsupConfig, I as detectFramework, J as confirmEslintMigration, L as hasFrameworkShim, O as ensureVitePlusBootstrap, R as confirmTsupMigration, T as mergeViteConfigFiles, U as confirmPrettierMigration, W as detectPrettierProject, X as detectIncompatibleEslintIntegration, Y as detectEslintProject, Z as migrateEslintToOxlint, _ as installGitHooks, d as finalizeCoreMigrationForExistingVitePlus, et as warnLegacyEslintConfig, f as detectNodeVersionManagerFile, g as detectLegacyGitHooksMigrationCandidate, i as selectEditor, j as detectWorkspace$1, k as configureYarnNodeModulesMode, l as rewriteStandaloneProject, m as migrateSetupVpVersion, nt as checkViteVersion, o as writeEditorConfigs, p as migrateNodeVersionManagerFile, q as warnPackageLevelPrettier, r as isJsonLikeFile, rt as checkVitestVersion, s as rewriteMonorepo, t as detectEditorConflicts, tt as warnPackageLevelEslint, u as detectPendingCoreMigration, v as preflightGitHooksSetup, w as mergeTsdownConfigFile, y as shouldSkipStagedMigrationForHooks, z as detectTsupProject } from "../editor-B5-lvRaU.js";
11
+ import { n as runCommandSilently } from "../command-CguLh2KL.js";
12
+ import { a as hasBaseUrlInTsconfig, i as fixBaseUrlInTsconfig, t as confirmBaseUrlFix } from "../tsconfig-CUggNuJR.js";
13
+ import { t as unwrapCliParseOutcome } from "../cli-parse-DHE8NrBU.js";
12
14
  import { t as ROLLDOWN_COMPAT_RESULT_PREFIX } from "../protocol-D99W10Qi.js";
13
15
  import path from "node:path";
14
16
  import { fileURLToPath } from "node:url";
17
+ import { parseMigrateArgs } from "../../binding/index.js";
15
18
  import { styleText } from "node:util";
16
19
  import fs, { existsSync } from "node:fs";
17
20
  //#region src/migration/compat/runner.ts
@@ -381,6 +384,16 @@ async function collectEslintMigrationDecision(rootDir, options, packages) {
381
384
  eslintConfigFile: eslintProject.configFile
382
385
  };
383
386
  }
387
+ async function collectTsupMigrationDecision(rootDir, options, packages) {
388
+ const tsupProject = detectTsupProject(rootDir, packages);
389
+ let migrateTsup = false;
390
+ if (tsupProject.hasDependency && tsupProject.hasConfig) migrateTsup = await confirmTsupMigration(options.interactive);
391
+ else if (tsupProject.hasDependency) warnMissingTsupConfig();
392
+ return {
393
+ migrateTsup,
394
+ tsupConfigFile: tsupProject.configFile
395
+ };
396
+ }
384
397
  async function collectMigrationSetupPlan(rootDir, packageManager, options, packages, includeEslint = true) {
385
398
  const shouldSetupHooks = await collectGitHooksDecision(rootDir, packageManager, options, packages);
386
399
  const agentPlan = await collectAgentInstructionPlan(rootDir, options);
@@ -474,136 +487,12 @@ async function checkWorkspaceRolldownCompatibility(workspaceInfo, report, update
474
487
  await checkRolldownCompatibility(projectPath, report);
475
488
  }
476
489
  }
477
- const helpMessage = renderCliDoc({
478
- usage: "vp migrate [PATH] [OPTIONS]",
479
- summary: "Migrate standalone Vite, Vitest, Oxlint, Oxfmt, and Prettier projects to unified Vite+.",
480
- documentationUrl: "https://viteplus.dev/guide/migrate",
481
- sections: [
482
- {
483
- title: "Arguments",
484
- rows: [{
485
- label: "PATH",
486
- description: "Target directory to migrate (default: current directory)"
487
- }]
488
- },
489
- {
490
- title: "Options",
491
- rows: [
492
- {
493
- label: "--agent NAME",
494
- description: "Write coding agent instructions to AGENTS.md, CLAUDE.md, etc."
495
- },
496
- {
497
- label: "--no-agent",
498
- description: "Skip writing coding agent instructions"
499
- },
500
- {
501
- label: "--editor NAME",
502
- description: "Write editor config files into the project."
503
- },
504
- {
505
- label: "--no-editor",
506
- description: "Skip writing editor config files"
507
- },
508
- {
509
- label: "--hooks",
510
- description: "Set up pre-commit hooks (default in non-interactive mode)"
511
- },
512
- {
513
- label: "--no-hooks",
514
- description: "Skip pre-commit hooks setup"
515
- },
516
- {
517
- label: "--full",
518
- description: "Existing Vite+ projects: also run the full setup (hooks, editor, agent files, ESLint/Prettier migration, framework shims, tsconfig baseUrl, .node-version). Without it, `vp migrate` only upgrades the toolchain version."
519
- },
520
- {
521
- label: "--no-interactive",
522
- description: "Run in non-interactive mode (skip prompts and use defaults)"
523
- },
524
- {
525
- label: "-h, --help",
526
- description: "Show this help message"
527
- }
528
- ]
529
- },
530
- {
531
- title: "Examples",
532
- lines: [
533
- ` ${muted("# Migrate current package")}`,
534
- ` ${accent("vp migrate")}`,
535
- "",
536
- ` ${muted("# Migrate specific directory")}`,
537
- ` ${accent("vp migrate my-app")}`,
538
- "",
539
- ` ${muted("# Non-interactive mode")}`,
540
- ` ${accent("vp migrate --no-interactive")}`
541
- ]
542
- },
543
- {
544
- title: "Migration Prompt",
545
- lines: [
546
- " Give this to a coding agent when you want it to drive the migration:",
547
- "",
548
- " Migrate this project to Vite+.",
549
- " Vite+ replaces the current split tooling around runtime management, package",
550
- " management, dev/build/test commands, linting, formatting, and packaging.",
551
- " Run `vp help` and `vp help migrate` before making changes.",
552
- ` Use ${accent("vp migrate --no-interactive")} in the workspace root.`,
553
- " Make sure the project is using Vite 8+ and Vitest 4.1+ before migrating.",
554
- "",
555
- " After the migration:",
556
- " - Confirm `vite` imports were rewritten to `vite-plus` where needed",
557
- " - Confirm `vitest` imports were rewritten to `vite-plus/test` where needed",
558
- " - On pnpm, keep the `vite` / `vitest` entries that `vp migrate` aliased to",
559
- " the Vite+ packages so the workspace override stays effective; with other",
560
- " package managers you can remove them once those rewrites are confirmed",
561
- " - Move remaining tool-specific config into the appropriate blocks in",
562
- " `vite.config.ts`",
563
- "",
564
- " Command mapping:",
565
- " - `vp run <script>` is the equivalent of `pnpm run <script>`",
566
- " - `vp dev` and `vp test` always run the built-ins; `vp run dev` and",
567
- " `vp run test` run the `dev` and `test` scripts from `package.json`",
568
- " - `vp install`, `vp add`, and `vp remove` delegate through the package",
569
- " manager declared by `packageManager`",
570
- " - `vp dev`, `vp build`, `vp preview`, `vp lint`, `vp fmt`, `vp check`,",
571
- " and `vp pack` replace the corresponding standalone tools",
572
- " - Prefer `vp check` for validation loops",
573
- "",
574
- " Finally, verify the migration by running:",
575
- ` - ${accent("vp install")}`,
576
- ` - ${accent("vp check")}`,
577
- ` - ${accent("vp test")}`,
578
- ` - ${accent("vp build")}`,
579
- "",
580
- " Summarize the migration at the end and report any manual follow-up still",
581
- " required."
582
- ]
583
- }
584
- ]
585
- });
586
490
  function parseArgs() {
587
- const args = process.argv.slice(3);
588
- const parsed = lib_default(args, {
589
- alias: { h: "help" },
590
- boolean: [
591
- "help",
592
- "interactive",
593
- "hooks",
594
- "full"
595
- ],
596
- default: { interactive: defaultInteractive() }
597
- });
598
- const interactive = parsed.interactive;
599
- let projectPath = parsed._[0];
600
- if (projectPath) projectPath = path.resolve(process.cwd(), projectPath);
601
- else projectPath = process.cwd();
491
+ const parsed = unwrapCliParseOutcome(parseMigrateArgs(process.argv.slice(3)));
602
492
  return {
603
- projectPath,
493
+ projectPath: parsed.path ? path.resolve(process.cwd(), parsed.path) : process.cwd(),
604
494
  options: {
605
- interactive,
606
- help: parsed.help,
495
+ interactive: parsed.interactive ?? defaultInteractive(),
607
496
  agent: parsed.agent,
608
497
  editor: parsed.editor,
609
498
  hooks: parsed.hooks,
@@ -656,7 +545,8 @@ function hasExplicitExistingVitePlusSetupRequest(options) {
656
545
  function hasExistingVitePlusMigrationCandidates(workspaceInfo, options) {
657
546
  const eslintProject = detectEslintProject(workspaceInfo.rootDir, workspaceInfo.packages);
658
547
  const prettierProject = detectPrettierProject(workspaceInfo.rootDir, workspaceInfo.packages);
659
- return hasExplicitExistingVitePlusSetupRequest(options) || detectLegacyGitHooksMigrationCandidate(workspaceInfo.rootDir) || hasBaseUrlInWorkspace(workspaceInfo) || eslintProject.hasDependency || prettierProject.hasDependency || detectNodeVersionManagerFile(workspaceInfo.rootDir) !== void 0 || getFrameworkShimCandidates(workspaceInfo.rootDir, workspaceInfo.packages).length > 0;
548
+ const tsupProject = detectTsupProject(workspaceInfo.rootDir, workspaceInfo.packages);
549
+ return hasExplicitExistingVitePlusSetupRequest(options) || detectLegacyGitHooksMigrationCandidate(workspaceInfo.rootDir) || hasBaseUrlInWorkspace(workspaceInfo) || eslintProject.hasDependency || prettierProject.hasDependency || tsupProject.hasDependency || detectNodeVersionManagerFile(workspaceInfo.rootDir) !== void 0 || getFrameworkShimCandidates(workspaceInfo.rootDir, workspaceInfo.packages).length > 0;
660
550
  }
661
551
  function getExistingVitePlusSetupOptions(options, useFullMigrationDefaults = false) {
662
552
  if (useFullMigrationDefaults) return options;
@@ -675,6 +565,7 @@ async function collectMigrationPlan(rootDir, detectedPackageManager, detectedPac
675
565
  let migratePrettier = false;
676
566
  if (prettierProject.hasDependency && prettierProject.configFile) migratePrettier = await confirmPrettierMigration(options.interactive);
677
567
  else if (prettierProject.hasDependency) warnPackageLevelPrettier();
568
+ const { migrateTsup, tsupConfigFile } = await collectTsupMigrationDecision(rootDir, options, packages);
678
569
  const fixBaseUrl = hasBaseUrlInWorkspace({
679
570
  rootDir,
680
571
  packages
@@ -690,6 +581,8 @@ async function collectMigrationPlan(rootDir, detectedPackageManager, detectedPac
690
581
  migratePrettier,
691
582
  hasPrettierDependency: prettierProject.hasDependency,
692
583
  prettierConfigFile: prettierProject.configFile,
584
+ migrateTsup,
585
+ tsupConfigFile,
693
586
  fixBaseUrl,
694
587
  migrateNodeVersionFile,
695
588
  nodeVersionDetection,
@@ -745,7 +638,13 @@ function showMigrationSummary(options) {
745
638
  if (report.preservedUpstreamVitestImportFileCount > 0) log(`${styleText("gray", "•")} Kept upstream \`vitest\` imports in ${report.preservedUpstreamVitestImportFileCount} ${report.preservedUpstreamVitestImportFileCount === 1 ? "file" : "files"} for @nuxt/test-utils compatibility`);
746
639
  if (report.eslintMigrated) log(`${styleText("gray", "•")} ESLint rules migrated to Oxlint`);
747
640
  if (report.prettierMigrated) log(`${styleText("gray", "•")} Prettier migrated to Oxfmt`);
641
+ if (report.tsupMigrated) log(`${styleText("gray", "•")} tsup config migrated to tsdown (\`vp pack\`)`);
748
642
  if (report.nodeVersionFileMigrated) log(`${styleText("gray", "•")} Node version manager file migrated to .node-version`);
643
+ const setupVpFileCount = report.setupVpVersionUpdatedFileCount;
644
+ if (setupVpFileCount > 0) {
645
+ const fileLabel = setupVpFileCount === 1 ? "file" : "files";
646
+ log(`${styleText("gray", "•")} setup-vp updated to ${SETUP_VP_VERSION} in ${setupVpFileCount} GitHub Actions ${fileLabel}`);
647
+ }
749
648
  if (report.wrappedPluginConfigCount > 0) log(`${styleText("gray", "•")} Inline Vite plugins wrapped with lazyPlugins for check/lint/fmt`);
750
649
  if (report.gitHooksConfigured) log(`${styleText("gray", "•")} Git hooks configured`);
751
650
  if (report.frameworkShimAdded) log(`${styleText("gray", "•")} TypeScript shim added for framework component files`);
@@ -763,7 +662,7 @@ function showMigrationSummary(options) {
763
662
  async function downloadSupportedPackageManager(options) {
764
663
  const { rootDir, packageManager, packageManagerVersion, interactive, updateMigrationProgress, failMigrationProgress } = options;
765
664
  updateMigrationProgress("Preparing migration");
766
- const downloadResult = await downloadPackageManager(packageManager, packageManagerVersion, interactive, true);
665
+ const downloadResult = await downloadPackageManager$1(packageManager, packageManagerVersion, interactive, true);
767
666
  if (packageManager === PackageManager.yarn && import_semver.default.satisfies(downloadResult.version, ">=4.0.0 <4.10.0")) {
768
667
  updateMigrationProgress("Upgrading Yarn");
769
668
  await upgradeYarn(rootDir, interactive, true);
@@ -825,6 +724,8 @@ async function executeMigrationPlan(workspaceInfoOptional, plan, interactive, pr
825
724
  updateMigrationProgress("Migrating node version file");
826
725
  migrateNodeVersionManagerFile(workspaceInfo.rootDir, plan.nodeVersionDetection, report);
827
726
  }
727
+ updateMigrationProgress("Updating setup-vp workflows");
728
+ migrateSetupVpVersion(workspaceInfo.rootDir, report);
828
729
  updateMigrationProgress("Installing dependencies");
829
730
  const initialInstallSummary = await runViteInstall(workspaceInfo.rootDir, interactive, void 0, {
830
731
  silent: true,
@@ -860,6 +761,16 @@ async function executeMigrationPlan(workspaceInfoOptional, plan, interactive, pr
860
761
  cancelAndExit("Prettier migration failed. Fix the issue and re-run `vp migrate`.", 1);
861
762
  }
862
763
  }
764
+ if (plan.migrateTsup) {
765
+ updateMigrationProgress("Migrating tsup");
766
+ if (!await migrateTsupToTsdown(workspaceInfo.rootDir, interactive, plan.packageManager, plan.tsupConfigFile, workspaceInfo.packages, {
767
+ silent: true,
768
+ report
769
+ })) {
770
+ failMigrationProgress("Migration failed");
771
+ cancelAndExit("Complete the tsup migration manually, then re-run `vp migrate`.", 1);
772
+ }
773
+ }
863
774
  const skipStagedMigration = shouldSkipStagedMigrationForHooks(workspaceInfo.rootDir, plan.shouldSetupHooks, plan.packageManager, workspaceInfo.packages);
864
775
  updateMigrationProgress("Rewriting configs");
865
776
  if (workspaceInfo.isMonorepo) rewriteMonorepo(workspaceInfo, skipStagedMigration, true, report);
@@ -909,13 +820,8 @@ async function executeMigrationPlan(workspaceInfoOptional, plan, interactive, pr
909
820
  }
910
821
  async function main() {
911
822
  const { projectPath, options } = parseArgs();
912
- if (options.help) {
913
- printHeader();
914
- log(helpMessage);
915
- return;
916
- }
917
823
  printHeader();
918
- const workspaceInfoOptional = await detectWorkspace(projectPath);
824
+ const workspaceInfoOptional = await detectWorkspace$1(projectPath);
919
825
  if (workspaceInfoOptional.isMonorepo && path.resolve(projectPath) !== path.resolve(workspaceInfoOptional.rootDir)) cancelAndExit(`Vite+ cannot migrate a workspace member. Run \`vp migrate\` from the workspace root at ${workspaceInfoOptional.rootDir}.`, 1);
920
826
  const initialChangedPaths = await collectChangedFormatPaths(workspaceInfoOptional.rootDir);
921
827
  const preExistingChangedPaths = initialChangedPaths ? new Set(initialChangedPaths) : void 0;
@@ -951,6 +857,8 @@ async function main() {
951
857
  migrationProgressStarted = false;
952
858
  }
953
859
  };
860
+ updateMigrationProgress("Updating setup-vp workflows");
861
+ if (migrateSetupVpVersion(workspaceInfoOptional.rootDir, report).length > 0) didMigrate = true;
954
862
  const pendingCoreMigration = detectPendingCoreMigration(workspaceInfoOptional);
955
863
  const vitePlusBootstrapPending = detectVitePlusBootstrapPending(workspaceInfoOptional.rootDir, workspaceInfoOptional.packageManager, workspaceInfoOptional.packages, workspaceInfoOptional.packageManagerVersion);
956
864
  let packageManager = vitePlusBootstrapPending ? workspaceInfoOptional.packageManager ?? await selectPackageManager(options.interactive, true) : workspaceInfoOptional.packageManager;
@@ -1049,6 +957,23 @@ async function main() {
1049
957
  }
1050
958
  } else if (prettierProject.hasDependency) warnPackageLevelPrettier();
1051
959
  }
960
+ let tsupMigrated = false;
961
+ if (fullSetup) {
962
+ if (options.interactive) clearMigrationProgress();
963
+ const { migrateTsup, tsupConfigFile } = await collectTsupMigrationDecision(workspaceInfoOptional.rootDir, setupOptions, workspaceInfoOptional.packages);
964
+ if (migrateTsup) {
965
+ await ensureExistingPackageManager();
966
+ updateMigrationProgress("Migrating tsup");
967
+ if (!await migrateTsupToTsdown(workspaceInfoOptional.rootDir, options.interactive, packageManager, tsupConfigFile, workspaceInfoOptional.packages, {
968
+ silent: true,
969
+ report
970
+ })) {
971
+ clearMigrationProgress();
972
+ cancelAndExit("Complete the tsup migration manually, then re-run `vp migrate`.", 1);
973
+ }
974
+ tsupMigrated = true;
975
+ }
976
+ }
1052
977
  if (fullSetup) {
1053
978
  const nodeVersionDetection = detectNodeVersionManagerFile(workspaceInfoOptional.rootDir);
1054
979
  if (nodeVersionDetection) {
@@ -1066,13 +991,18 @@ async function main() {
1066
991
  }
1067
992
  }
1068
993
  if (addFrameworkShimsForWorkspace(workspaceInfoOptional.rootDir, frameworkShimFrameworks, workspaceInfoOptional.packages, report, updateMigrationProgress)) didMigrate = true;
1069
- if (eslintMigrated || prettierMigrated) {
994
+ if (eslintMigrated || prettierMigrated || tsupMigrated) {
1070
995
  updateMigrationProgress("Rewriting configs");
1071
996
  mergeViteConfigFiles(workspaceInfoOptional.rootDir, true, report, workspaceInfoOptional.packages);
997
+ if (tsupMigrated) {
998
+ mergeTsdownConfigFile(workspaceInfoOptional.rootDir, true, report);
999
+ for (const pkg of workspaceInfoOptional.packages ?? []) mergeTsdownConfigFile(path.join(workspaceInfoOptional.rootDir, pkg.path), true, report);
1000
+ }
1072
1001
  needsInstall = true;
1073
1002
  didMigrate = true;
1074
1003
  report.eslintMigrated = eslintMigrated;
1075
1004
  report.prettierMigrated = prettierMigrated;
1005
+ report.tsupMigrated = tsupMigrated;
1076
1006
  }
1077
1007
  if (plan.shouldSetupHooks) {
1078
1008
  await ensureExistingPackageManager();
@@ -1,4 +1,4 @@
1
- import { n as addMigrationWarning, r as createMigrationReport } from "../../report-BS7ULx7A.js";
1
+ import { n as addMigrationWarning, r as createMigrationReport } from "../../report-CK5TnTsr.js";
2
2
  import { t as ROLLDOWN_COMPAT_RESULT_PREFIX } from "../../protocol-D99W10Qi.js";
3
3
  import { writeSync } from "node:fs";
4
4
  //#region src/migration/compat/manual-chunks.ts
@@ -1 +1 @@
1
- export * from '@voidzero-dev/vite-plus-core/module-runner';
1
+ export * from 'vite/module-runner';
@@ -1 +1 @@
1
- export * from '@voidzero-dev/vite-plus-core/module-runner';
1
+ export * from 'vite/module-runner';
@@ -1,4 +1,4 @@
1
- import { c as VITE_PLUS_NAME } from "./constants-CG513DRa.js";
1
+ import { u as VITE_PLUS_NAME } from "./constants-0IAVgpox.js";
2
2
  //#region src/oxlint-plugin-config.ts
3
3
  const VITE_PLUS_OXLINT_PLUGIN_NAME = VITE_PLUS_NAME;
4
4
  const VITE_PLUS_OXLINT_PLUGIN_SPECIFIER = `${VITE_PLUS_NAME}/oxlint-plugin`;
@@ -1,6 +1,6 @@
1
1
  //#region src/oxlint-plugin.d.ts
2
2
  declare function rewriteVitePlusImportSpecifier(specifier: string): string | null;
3
- declare const preferVitePlusImportsRule: import("@oxlint/plugins").Rule;
3
+ export declare const preferVitePlusImportsRule: import("@oxlint/plugins").Rule;
4
4
  declare const plugin: import("@oxlint/plugins").Plugin;
5
5
  //#endregion
6
- export { plugin as default, preferVitePlusImportsRule, rewriteVitePlusImportSpecifier };
6
+ export { plugin as default, rewriteVitePlusImportSpecifier };
@@ -1,4 +1,4 @@
1
- import { n as VITE_PLUS_OXLINT_PLUGIN_NAME, t as PREFER_VITE_PLUS_IMPORTS_RULE_NAME } from "./oxlint-plugin-config-BEZ9IUf7.js";
1
+ import { n as VITE_PLUS_OXLINT_PLUGIN_NAME, t as PREFER_VITE_PLUS_IMPORTS_RULE_NAME } from "./oxlint-plugin-config-Drdl67Xp.js";
2
2
  import path from "node:path";
3
3
  import fs from "node:fs";
4
4
  import { definePlugin, defineRule } from "@oxlint/plugins";
@@ -1,4 +1,4 @@
1
- import { UserConfig } from "@voidzero-dev/vite-plus-core/pack";
1
+ import { UserConfig } from "vite/pack";
2
2
  //#region src/pack.d.ts
3
3
  interface PackUserConfig extends UserConfig {
4
4
  /**
@@ -1,4 +1,3 @@
1
1
  //#region src/pack-bin.d.ts
2
- declare function runCLI(): Promise<void>;
3
- //#endregion
4
- export { runCLI };
2
+ export declare function runCLI(): Promise<void>;
3
+ //#endregion