vite-plus 0.1.21 → 0.1.23

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 (66) hide show
  1. package/AGENTS.md +1 -0
  2. package/binding/index.cjs +120 -52
  3. package/binding/index.d.cts +3232 -2
  4. package/dist/agent-aSGY0osq.js +2461 -0
  5. package/dist/bin.js +9 -14
  6. package/dist/cli-truncate-CWsmbK3p.js +867 -0
  7. package/dist/{compat-DdC7fHjB.js → compat-DXZgnEyq.js} +1 -1
  8. package/dist/config/bin.js +18 -5
  9. package/dist/constants-DCBWlNrn.js +33 -0
  10. package/dist/create/bin.js +215 -77
  11. package/dist/{define-config-cWg3Z2bC.d.ts → define-config-COdn-tsn.d.ts} +7 -5
  12. package/dist/define-config.cjs +1 -1
  13. package/dist/define-config.d.ts +1 -1
  14. package/dist/define-config.js +1 -1
  15. package/dist/dist-Bapm49IR.js +3 -0
  16. package/dist/{dist-DjG9AYbK.js → dist-BgQuvbtq.js} +136 -110
  17. package/dist/fmt.d.ts +1 -1
  18. package/dist/index.cjs +1 -1
  19. package/dist/index.d.ts +1 -1
  20. package/dist/index.js +1 -1
  21. package/dist/is-fullwidth-code-point-BUNlIICg.js +8 -0
  22. package/dist/lint.d.ts +1 -1
  23. package/dist/{log-update-CLxR0iRf.js → log-update-lyIiuflf.js} +111 -24
  24. package/dist/{main-A6UrSTYb.js → main-DpJl3LoU.js} +1 -28
  25. package/dist/migration/bin.js +71 -30
  26. package/dist/oxlint-plugin-config-B89iKTKN.js +37 -0
  27. package/dist/oxlint-plugin.d.ts +6 -0
  28. package/dist/oxlint-plugin.js +91 -0
  29. package/dist/pack-bin.js +1 -1
  30. package/dist/pack.d.ts +1 -1
  31. package/dist/{package-CrKanQYM.js → package-PmBUZ-ve.js} +2 -1
  32. package/dist/staged/bin.js +10 -10
  33. package/dist/strip-ansi-C3wrWz9t.js +853 -0
  34. package/dist/{agent-D2ocSU01.js → tsconfig-DlUVXT3J.js} +666 -2090
  35. package/dist/version.js +5 -5
  36. package/dist/versions.js +6 -6
  37. package/dist/{workspace-QXeJWs3P.js → workspace-DElv730L.js} +15 -15
  38. package/dist/wrap-ansi-CeQuiQ31.js +2 -0
  39. package/dist/{wrap-ansi-Dy0LjO7Q.js → wrap-ansi-k7Dn4VtV.js} +1 -1
  40. package/docs/config/run.md +39 -4
  41. package/docs/guide/cache.md +10 -1
  42. package/docs/guide/create.md +3 -1
  43. package/docs/guide/env.md +26 -1
  44. package/docs/guide/ide-integration.md +2 -2
  45. package/docs/guide/install.md +6 -0
  46. package/docs/guide/run.md +2 -0
  47. package/docs/guide/troubleshooting.md +5 -2
  48. package/docs/package.json +3 -1
  49. package/docs/pnpm-lock.yaml +798 -62
  50. package/package.json +27 -19
  51. package/templates/monorepo/_gitignore +1 -0
  52. package/dist/cli-truncate-DJcN4dJ8.js +0 -138
  53. package/dist/dist-D2_BiE1V.js +0 -3
  54. package/dist/slice-ansi-CwJYd1aw.js +0 -113
  55. package/dist/strip-ansi-D86nYqKl.js +0 -198
  56. package/dist/tsconfig-lBAWm4sf.js +0 -517
  57. package/dist/wrap-ansi-DbY7Idw_.js +0 -2
  58. /package/dist/{chunk-q7NCDQ7-.js → chunk-DnnnRqeS.js} +0 -0
  59. /package/dist/{define-config-GqLoRwH9.cjs → define-config-BR1Y88zz.cjs} +0 -0
  60. /package/dist/{define-config-B62DkkqH.js → define-config-BRC7qPNE.js} +0 -0
  61. /package/dist/{help-BtkjXtRM.js → help-YP84FSEz.js} +0 -0
  62. /package/dist/{lib-BamM40b7.js → lib-L3DWSRQp.js} +0 -0
  63. /package/dist/{pack-BcBvbQgt.d.ts → pack-Ciiho0Tq.d.ts} +0 -0
  64. /package/dist/{report-DbrfjWiP.js → report-DgSBQUdz.js} +0 -0
  65. /package/dist/{resolve-vite-config-C1KX9CZU.js → resolve-vite-config-TTvhycU1.js} +0 -0
  66. /package/dist/{terminal-CxTMfsxZ.js → terminal-uTv0ZaMr.js} +0 -0
package/dist/version.js CHANGED
@@ -1,11 +1,11 @@
1
- import "./main-A6UrSTYb.js";
2
- import { a as printHeader, r as log, t as accent } from "./terminal-CxTMfsxZ.js";
3
- import { i as hasVitePlusDependency, n as detectPackageMetadata } from "./package-CrKanQYM.js";
4
- import { t as renderCliDoc } from "./help-BtkjXtRM.js";
1
+ import "./constants-DCBWlNrn.js";
2
+ import { a as printHeader, r as log, t as accent } from "./terminal-uTv0ZaMr.js";
3
+ import { i as hasVitePlusDependency, n as detectPackageMetadata } from "./package-PmBUZ-ve.js";
4
+ import { t as renderCliDoc } from "./help-YP84FSEz.js";
5
5
  import path from "node:path";
6
6
  import fs from "node:fs";
7
7
  //#region package.json
8
- var version = "0.0.0";
8
+ var version = "0.1.23";
9
9
  //#endregion
10
10
  //#region src/version.ts
11
11
  /** Tool display names in the order shown by `vp --version`. */
package/dist/versions.js CHANGED
@@ -1,9 +1,9 @@
1
1
  export const versions = {
2
- "vite": "8.0.11",
3
- "rolldown": "1.0.0",
2
+ "vite": "8.0.14",
3
+ "rolldown": "1.0.3",
4
4
  "tsdown": "0.22.0",
5
- "vitest": "4.1.5",
6
- "oxlint": "1.63.0",
7
- "oxfmt": "0.48.0",
8
- "oxlint-tsgolint": "0.22.1"
5
+ "vitest": "4.1.7",
6
+ "oxlint": "1.67.0",
7
+ "oxfmt": "0.52.0",
8
+ "oxlint-tsgolint": "0.23.0"
9
9
  };
@@ -1,6 +1,7 @@
1
- import { $ as multiselect, F as readYamlFile, P as editYamlFile, Q as log, at as q, q as PackageManager, tt as select } from "./agent-D2ocSU01.js";
2
- import { t as require_dist } from "./dist-DjG9AYbK.js";
3
- import { c as editJsonFile, d as writeJsonFile, r as getScopeFromPackageName, u as readJsonFile } from "./package-CrKanQYM.js";
1
+ import { A as q, C as log, E as select, v as PackageManager, w as multiselect } from "./tsconfig-DlUVXT3J.js";
2
+ import { t as require_dist } from "./dist-BgQuvbtq.js";
3
+ import { c as editJsonFile, d as writeJsonFile, r as getScopeFromPackageName, u as readJsonFile } from "./package-PmBUZ-ve.js";
4
+ import { B as editYamlFile, V as readYamlFile } from "./agent-aSGY0osq.js";
4
5
  import path, { posix, win32 } from "node:path";
5
6
  import { detectWorkspace } from "../binding/index.js";
6
7
  import * as actualFS from "node:fs";
@@ -43,7 +44,7 @@ const EDITORS = [{
43
44
  unusedDisableDirectives: "deny"
44
45
  } } },
45
46
  oxfmt: { initialization_options: { settings: {
46
- configPath: "./vite.config.ts",
47
+ "fmt.configPath": "./vite.config.ts",
47
48
  run: "onSave"
48
49
  } } }
49
50
  },
@@ -713,8 +714,8 @@ const justDots = new Set(["..", "."]);
713
714
  const reSpecials = /* @__PURE__ */ new Set("().*{}+?[]^$\\!");
714
715
  const regExpEscape$1 = (s) => s.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&");
715
716
  const qmark = "[^/]";
716
- const star$1 = qmark + "*?";
717
- const starNoEmpty = qmark + "+?";
717
+ const star$1 = "[^/]*?";
718
+ const starNoEmpty = "[^/]+?";
718
719
  let ID = 0;
719
720
  var AST = class {
720
721
  type;
@@ -1061,7 +1062,7 @@ var AST = class {
1061
1062
  let final = "";
1062
1063
  if (this.type === "!" && this.#emptyExt) final = (this.isStart() && !dot ? startNoDot : "") + starNoEmpty;
1063
1064
  else {
1064
- const close = this.type === "!" ? "))" + (this.isStart() && !dot && !allowDot ? startNoDot : "") + star$1 + ")" : this.type === "@" ? ")" : this.type === "?" ? ")?" : this.type === "+" && bodyDotAllowed ? ")" : this.type === "*" && bodyDotAllowed ? `)?` : `)${this.type}`;
1065
+ const close = this.type === "!" ? "))" + (this.isStart() && !dot && !allowDot ? startNoDot : "") + "[^/]*?)" : this.type === "@" ? ")" : this.type === "?" ? ")?" : this.type === "+" && bodyDotAllowed ? ")" : this.type === "*" && bodyDotAllowed ? `)?` : `)${this.type}`;
1065
1066
  final = start + body + close;
1066
1067
  }
1067
1068
  return [
@@ -3247,14 +3248,14 @@ const IFREG = 8;
3247
3248
  const IFLNK = 10;
3248
3249
  const IFSOCK = 12;
3249
3250
  const IFMT = 15;
3250
- const IFMT_UNKNOWN = ~IFMT;
3251
+ const IFMT_UNKNOWN = -16;
3251
3252
  const READDIR_CALLED = 16;
3252
3253
  const LSTAT_CALLED = 32;
3253
3254
  const ENOTDIR = 64;
3254
3255
  const ENOENT = 128;
3255
3256
  const ENOREADLINK = 256;
3256
3257
  const ENOREALPATH = 512;
3257
- const ENOCHILD = ENOENT | 576;
3258
+ const ENOCHILD = 704;
3258
3259
  const TYPEMASK = 1023;
3259
3260
  const entToType = (s) => s.isFile() ? IFREG : s.isDirectory() ? IFDIR : s.isSymbolicLink() ? IFLNK : s.isCharacterDevice() ? IFCHR : s.isBlockDevice() ? IFBLK : s.isSocket() ? IFSOCK : s.isFIFO() ? IFIFO : UNKNOWN;
3260
3261
  const normalizeCache = new L({ max: 2 ** 12 });
@@ -3514,7 +3515,7 @@ var PathBase = class {
3514
3515
  if (cached) return cached;
3515
3516
  const children = Object.assign([], { provisional: 0 });
3516
3517
  this.#children.set(this, children);
3517
- this.#type &= ~READDIR_CALLED;
3518
+ this.#type &= -17;
3518
3519
  return children;
3519
3520
  }
3520
3521
  /**
@@ -4059,7 +4060,7 @@ var PathBase = class {
4059
4060
  */
4060
4061
  async realpath() {
4061
4062
  if (this.#realpath) return this.#realpath;
4062
- if ((ENOREADLINK | 640) & this.#type) return void 0;
4063
+ if (896 & this.#type) return void 0;
4063
4064
  try {
4064
4065
  const rp = await this.#fs.promises.realpath(this.fullpath());
4065
4066
  return this.#realpath = this.resolve(rp);
@@ -4072,7 +4073,7 @@ var PathBase = class {
4072
4073
  */
4073
4074
  realpathSync() {
4074
4075
  if (this.#realpath) return this.#realpath;
4075
- if ((ENOREADLINK | 640) & this.#type) return void 0;
4076
+ if (896 & this.#type) return void 0;
4076
4077
  try {
4077
4078
  const rp = this.#fs.realpathSync(this.fullpath());
4078
4079
  return this.#realpath = this.resolve(rp);
@@ -5809,9 +5810,8 @@ function updatePackageJsonWithDeps(rootDir, projectDir, dependencies, dependency
5809
5810
  }
5810
5811
  function updateWorkspaceConfig(projectPath, workspaceInfo) {
5811
5812
  for (const pattern of workspaceInfo.workspacePatterns) if (minimatch(projectPath, pattern)) return;
5812
- let pattern = path.dirname(projectPath);
5813
- if (!pattern) pattern = projectPath;
5814
- else pattern = `${pattern}/*`;
5813
+ const parentDir = path.dirname(projectPath);
5814
+ const pattern = parentDir === "." ? projectPath : `${parentDir}/*`;
5815
5815
  if (workspaceInfo.packageManager === PackageManager.pnpm) editYamlFile(path.join(workspaceInfo.rootDir, "pnpm-workspace.yaml"), (doc) => {
5816
5816
  let packages = doc.getIn(["packages"]);
5817
5817
  if (!packages) packages = new import_dist.YAMLSeq();
@@ -0,0 +1,2 @@
1
+ import { t as wrapAnsi } from "./wrap-ansi-k7Dn4VtV.js";
2
+ export { wrapAnsi as default };
@@ -1,4 +1,4 @@
1
- import { a as ansiStyles, n as eastAsianWidth, t as stripAnsi } from "./strip-ansi-D86nYqKl.js";
1
+ import { a as ansiStyles, n as eastAsianWidth, t as stripAnsi } from "./strip-ansi-C3wrWz9t.js";
2
2
  //#region ../../node_modules/.pnpm/emoji-regex@10.6.0/node_modules/emoji-regex/index.mjs
3
3
  var emoji_regex_default = () => {
4
4
  return /[#*0-9]\uFE0F?\u20E3|[\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u231A\u231B\u2328\u23CF\u23ED-\u23EF\u23F1\u23F2\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB\u25FC\u25FE\u2600-\u2604\u260E\u2611\u2614\u2615\u2618\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u2648-\u2653\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u267F\u2692\u2694-\u2697\u2699\u269B\u269C\u26A0\u26A7\u26AA\u26B0\u26B1\u26BD\u26BE\u26C4\u26C8\u26CF\u26D1\u26E9\u26F0-\u26F5\u26F7\u26F8\u26FA\u2702\u2708\u2709\u270F\u2712\u2714\u2716\u271D\u2721\u2733\u2734\u2744\u2747\u2757\u2763\u27A1\u2934\u2935\u2B05-\u2B07\u2B1B\u2B1C\u2B55\u3030\u303D\u3297\u3299]\uFE0F?|[\u261D\u270C\u270D](?:\uD83C[\uDFFB-\uDFFF]|\uFE0F)?|[\u270A\u270B](?:\uD83C[\uDFFB-\uDFFF])?|[\u23E9-\u23EC\u23F0\u23F3\u25FD\u2693\u26A1\u26AB\u26C5\u26CE\u26D4\u26EA\u26FD\u2705\u2728\u274C\u274E\u2753-\u2755\u2795-\u2797\u27B0\u27BF\u2B50]|\u26D3\uFE0F?(?:\u200D\uD83D\uDCA5)?|\u26F9(?:\uD83C[\uDFFB-\uDFFF]|\uFE0F)?(?:\u200D[\u2640\u2642]\uFE0F?)?|\u2764\uFE0F?(?:\u200D(?:\uD83D\uDD25|\uD83E\uDE79))?|\uD83C(?:[\uDC04\uDD70\uDD71\uDD7E\uDD7F\uDE02\uDE37\uDF21\uDF24-\uDF2C\uDF36\uDF7D\uDF96\uDF97\uDF99-\uDF9B\uDF9E\uDF9F\uDFCD\uDFCE\uDFD4-\uDFDF\uDFF5\uDFF7]\uFE0F?|[\uDF85\uDFC2\uDFC7](?:\uD83C[\uDFFB-\uDFFF])?|[\uDFC4\uDFCA](?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDFCB\uDFCC](?:\uD83C[\uDFFB-\uDFFF]|\uFE0F)?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDCCF\uDD8E\uDD91-\uDD9A\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF43\uDF45-\uDF4A\uDF4C-\uDF7C\uDF7E-\uDF84\uDF86-\uDF93\uDFA0-\uDFC1\uDFC5\uDFC6\uDFC8\uDFC9\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF8-\uDFFF]|\uDDE6\uD83C[\uDDE8-\uDDEC\uDDEE\uDDF1\uDDF2\uDDF4\uDDF6-\uDDFA\uDDFC\uDDFD\uDDFF]|\uDDE7\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEF\uDDF1-\uDDF4\uDDF6-\uDDF9\uDDFB\uDDFC\uDDFE\uDDFF]|\uDDE8\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDEE\uDDF0-\uDDF7\uDDFA-\uDDFF]|\uDDE9\uD83C[\uDDEA\uDDEC\uDDEF\uDDF0\uDDF2\uDDF4\uDDFF]|\uDDEA\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDED\uDDF7-\uDDFA]|\uDDEB\uD83C[\uDDEE-\uDDF0\uDDF2\uDDF4\uDDF7]|\uDDEC\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEE\uDDF1-\uDDF3\uDDF5-\uDDFA\uDDFC\uDDFE]|\uDDED\uD83C[\uDDF0\uDDF2\uDDF3\uDDF7\uDDF9\uDDFA]|\uDDEE\uD83C[\uDDE8-\uDDEA\uDDF1-\uDDF4\uDDF6-\uDDF9]|\uDDEF\uD83C[\uDDEA\uDDF2\uDDF4\uDDF5]|\uDDF0\uD83C[\uDDEA\uDDEC-\uDDEE\uDDF2\uDDF3\uDDF5\uDDF7\uDDFC\uDDFE\uDDFF]|\uDDF1\uD83C[\uDDE6-\uDDE8\uDDEE\uDDF0\uDDF7-\uDDFB\uDDFE]|\uDDF2\uD83C[\uDDE6\uDDE8-\uDDED\uDDF0-\uDDFF]|\uDDF3\uD83C[\uDDE6\uDDE8\uDDEA-\uDDEC\uDDEE\uDDF1\uDDF4\uDDF5\uDDF7\uDDFA\uDDFF]|\uDDF4\uD83C\uDDF2|\uDDF5\uD83C[\uDDE6\uDDEA-\uDDED\uDDF0-\uDDF3\uDDF7-\uDDF9\uDDFC\uDDFE]|\uDDF6\uD83C\uDDE6|\uDDF7\uD83C[\uDDEA\uDDF4\uDDF8\uDDFA\uDDFC]|\uDDF8\uD83C[\uDDE6-\uDDEA\uDDEC-\uDDF4\uDDF7-\uDDF9\uDDFB\uDDFD-\uDDFF]|\uDDF9\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDED\uDDEF-\uDDF4\uDDF7\uDDF9\uDDFB\uDDFC\uDDFF]|\uDDFA\uD83C[\uDDE6\uDDEC\uDDF2\uDDF3\uDDF8\uDDFE\uDDFF]|\uDDFB\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDEE\uDDF3\uDDFA]|\uDDFC\uD83C[\uDDEB\uDDF8]|\uDDFD\uD83C\uDDF0|\uDDFE\uD83C[\uDDEA\uDDF9]|\uDDFF\uD83C[\uDDE6\uDDF2\uDDFC]|\uDF44(?:\u200D\uD83D\uDFEB)?|\uDF4B(?:\u200D\uD83D\uDFE9)?|\uDFC3(?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D(?:[\u2640\u2642]\uFE0F?(?:\u200D\u27A1\uFE0F?)?|\u27A1\uFE0F?))?|\uDFF3\uFE0F?(?:\u200D(?:\u26A7\uFE0F?|\uD83C\uDF08))?|\uDFF4(?:\u200D\u2620\uFE0F?|\uDB40\uDC67\uDB40\uDC62\uDB40(?:\uDC65\uDB40\uDC6E\uDB40\uDC67|\uDC73\uDB40\uDC63\uDB40\uDC74|\uDC77\uDB40\uDC6C\uDB40\uDC73)\uDB40\uDC7F)?)|\uD83D(?:[\uDC3F\uDCFD\uDD49\uDD4A\uDD6F\uDD70\uDD73\uDD76-\uDD79\uDD87\uDD8A-\uDD8D\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA\uDECB\uDECD-\uDECF\uDEE0-\uDEE5\uDEE9\uDEF0\uDEF3]\uFE0F?|[\uDC42\uDC43\uDC46-\uDC50\uDC66\uDC67\uDC6B-\uDC6D\uDC72\uDC74-\uDC76\uDC78\uDC7C\uDC83\uDC85\uDC8F\uDC91\uDCAA\uDD7A\uDD95\uDD96\uDE4C\uDE4F\uDEC0\uDECC](?:\uD83C[\uDFFB-\uDFFF])?|[\uDC6E-\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4\uDEB5](?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDD74\uDD90](?:\uD83C[\uDFFB-\uDFFF]|\uFE0F)?|[\uDC00-\uDC07\uDC09-\uDC14\uDC16-\uDC25\uDC27-\uDC3A\uDC3C-\uDC3E\uDC40\uDC44\uDC45\uDC51-\uDC65\uDC6A\uDC79-\uDC7B\uDC7D-\uDC80\uDC84\uDC88-\uDC8E\uDC90\uDC92-\uDCA9\uDCAB-\uDCFC\uDCFF-\uDD3D\uDD4B-\uDD4E\uDD50-\uDD67\uDDA4\uDDFB-\uDE2D\uDE2F-\uDE34\uDE37-\uDE41\uDE43\uDE44\uDE48-\uDE4A\uDE80-\uDEA2\uDEA4-\uDEB3\uDEB7-\uDEBF\uDEC1-\uDEC5\uDED0-\uDED2\uDED5-\uDED8\uDEDC-\uDEDF\uDEEB\uDEEC\uDEF4-\uDEFC\uDFE0-\uDFEB\uDFF0]|\uDC08(?:\u200D\u2B1B)?|\uDC15(?:\u200D\uD83E\uDDBA)?|\uDC26(?:\u200D(?:\u2B1B|\uD83D\uDD25))?|\uDC3B(?:\u200D\u2744\uFE0F?)?|\uDC41\uFE0F?(?:\u200D\uD83D\uDDE8\uFE0F?)?|\uDC68(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDC68\uDC69]\u200D\uD83D(?:\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?)|[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?)|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]))|\uD83C(?:\uDFFB(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83D\uDC68\uD83C[\uDFFC-\uDFFF])|\uD83E(?:[\uDD1D\uDEEF]\u200D\uD83D\uDC68\uD83C[\uDFFC-\uDFFF]|[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3])))?|\uDFFC(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83D\uDC68\uD83C[\uDFFB\uDFFD-\uDFFF])|\uD83E(?:[\uDD1D\uDEEF]\u200D\uD83D\uDC68\uD83C[\uDFFB\uDFFD-\uDFFF]|[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3])))?|\uDFFD(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83D\uDC68\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|\uD83E(?:[\uDD1D\uDEEF]\u200D\uD83D\uDC68\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF]|[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3])))?|\uDFFE(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83D\uDC68\uD83C[\uDFFB-\uDFFD\uDFFF])|\uD83E(?:[\uDD1D\uDEEF]\u200D\uD83D\uDC68\uD83C[\uDFFB-\uDFFD\uDFFF]|[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3])))?|\uDFFF(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83D\uDC68\uD83C[\uDFFB-\uDFFE])|\uD83E(?:[\uDD1D\uDEEF]\u200D\uD83D\uDC68\uD83C[\uDFFB-\uDFFE]|[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3])))?))?|\uDC69(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?[\uDC68\uDC69]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?|\uDC69\u200D\uD83D(?:\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?))|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]))|\uD83C(?:\uDFFB(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83D\uDC69\uD83C[\uDFFC-\uDFFF])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFC-\uDFFF]|\uDEEF\u200D\uD83D\uDC69\uD83C[\uDFFC-\uDFFF])))?|\uDFFC(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83D\uDC69\uD83C[\uDFFB\uDFFD-\uDFFF])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB\uDFFD-\uDFFF]|\uDEEF\u200D\uD83D\uDC69\uD83C[\uDFFB\uDFFD-\uDFFF])))?|\uDFFD(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83D\uDC69\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF]|\uDEEF\u200D\uD83D\uDC69\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])))?|\uDFFE(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83D\uDC69\uD83C[\uDFFB-\uDFFD\uDFFF])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB-\uDFFD\uDFFF]|\uDEEF\u200D\uD83D\uDC69\uD83C[\uDFFB-\uDFFD\uDFFF])))?|\uDFFF(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83D\uDC69\uD83C[\uDFFB-\uDFFE])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB-\uDFFE]|\uDEEF\u200D\uD83D\uDC69\uD83C[\uDFFB-\uDFFE])))?))?|\uDD75(?:\uD83C[\uDFFB-\uDFFF]|\uFE0F)?(?:\u200D[\u2640\u2642]\uFE0F?)?|\uDE2E(?:\u200D\uD83D\uDCA8)?|\uDE35(?:\u200D\uD83D\uDCAB)?|\uDE36(?:\u200D\uD83C\uDF2B\uFE0F?)?|\uDE42(?:\u200D[\u2194\u2195]\uFE0F?)?|\uDEB6(?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D(?:[\u2640\u2642]\uFE0F?(?:\u200D\u27A1\uFE0F?)?|\u27A1\uFE0F?))?)|\uD83E(?:[\uDD0C\uDD0F\uDD18-\uDD1F\uDD30-\uDD34\uDD36\uDD77\uDDB5\uDDB6\uDDBB\uDDD2\uDDD3\uDDD5\uDEC3-\uDEC5\uDEF0\uDEF2-\uDEF8](?:\uD83C[\uDFFB-\uDFFF])?|[\uDD26\uDD35\uDD37-\uDD39\uDD3C-\uDD3E\uDDB8\uDDB9\uDDCD\uDDCF\uDDD4\uDDD6-\uDDDD](?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDDDE\uDDDF](?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDD0D\uDD0E\uDD10-\uDD17\uDD20-\uDD25\uDD27-\uDD2F\uDD3A\uDD3F-\uDD45\uDD47-\uDD76\uDD78-\uDDB4\uDDB7\uDDBA\uDDBC-\uDDCC\uDDD0\uDDE0-\uDDFF\uDE70-\uDE7C\uDE80-\uDE8A\uDE8E-\uDEC2\uDEC6\uDEC8\uDECD-\uDEDC\uDEDF-\uDEEA\uDEEF]|\uDDCE(?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D(?:[\u2640\u2642]\uFE0F?(?:\u200D\u27A1\uFE0F?)?|\u27A1\uFE0F?))?|\uDDD1(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3\uDE70]|\uDD1D\u200D\uD83E\uDDD1|\uDDD1\u200D\uD83E\uDDD2(?:\u200D\uD83E\uDDD2)?|\uDDD2(?:\u200D\uD83E\uDDD2)?))|\uD83C(?:\uDFFB(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFC-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83E\uDDD1\uD83C[\uDFFC-\uDFFF])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3\uDE70]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF]|\uDEEF\u200D\uD83E\uDDD1\uD83C[\uDFFC-\uDFFF])))?|\uDFFC(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB\uDFFD-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83E\uDDD1\uD83C[\uDFFB\uDFFD-\uDFFF])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3\uDE70]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF]|\uDEEF\u200D\uD83E\uDDD1\uD83C[\uDFFB\uDFFD-\uDFFF])))?|\uDFFD(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83E\uDDD1\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3\uDE70]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF]|\uDEEF\u200D\uD83E\uDDD1\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])))?|\uDFFE(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB-\uDFFD\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFD\uDFFF])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3\uDE70]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF]|\uDEEF\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFD\uDFFF])))?|\uDFFF(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB-\uDFFE]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFE])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3\uDE70]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF]|\uDEEF\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFE])))?))?|\uDEF1(?:\uD83C(?:\uDFFB(?:\u200D\uD83E\uDEF2\uD83C[\uDFFC-\uDFFF])?|\uDFFC(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB\uDFFD-\uDFFF])?|\uDFFD(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])?|\uDFFE(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB-\uDFFD\uDFFF])?|\uDFFF(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB-\uDFFE])?))?)/g;
@@ -61,15 +61,35 @@ export default defineConfig({
61
61
 
62
62
  ## `run.tasks`
63
63
 
64
- - **Type:** `Record<string, TaskConfig>`
64
+ - **Type:** `Record<string, Task | string | string[]>`
65
65
 
66
66
  Defines tasks that can be run with `vp run <task>`.
67
67
 
68
+ As a shorthand, a task value can be a command string or an array of command strings directly:
69
+
70
+ ```ts [vite.config.ts]
71
+ tasks: {
72
+ build: 'vp build',
73
+ check: ['vp lint', 'vp build'],
74
+ }
75
+ ```
76
+
77
+ These are equivalent to setting only `command` on a task config:
78
+
79
+ ```ts [vite.config.ts]
80
+ tasks: {
81
+ build: { command: 'vp build' },
82
+ check: { command: ['vp lint', 'vp build'] },
83
+ }
84
+ ```
85
+
86
+ Use the object form when a task needs other fields like `cache`, `dependsOn`, `env`, or `input`.
87
+
68
88
  ### `command`
69
89
 
70
- - **Type:** `string`
90
+ - **Type:** `string | string[]`
71
91
 
72
- Defines the shell command to run for the task.
92
+ Defines the shell command to run for the task. The string is interpreted by a shell, so spaces, quoting, `&&`, pipes, and redirects all work as written on the command line.
73
93
 
74
94
  ```ts [vite.config.ts]
75
95
  tasks: {
@@ -79,9 +99,24 @@ tasks: {
79
99
  }
80
100
  ```
81
101
 
102
+ An array runs each entry as its own command, sequentially, equivalent to joining them with `&&`. It is **not** a way to split one command into argv tokens — `['vp', 'build']` would try to run a command called `vp` with no arguments, then a command called `build`, instead of `vp build`.
103
+
104
+ ```ts [vite.config.ts]
105
+ tasks: {
106
+ check: {
107
+ // Two commands, run in order
108
+ command: ['vp lint', 'vp build'],
109
+ },
110
+ bad: {
111
+ // Wrong: this is NOT `vp build`; it is `vp` followed by `build`
112
+ command: ['vp', 'build'],
113
+ },
114
+ }
115
+ ```
116
+
82
117
  Each task defined in `vite.config.ts` must include its own `command`. You cannot define a task in both `vite.config.ts` and `package.json` with the same task name.
83
118
 
84
- Commands joined with `&&` are automatically split into independently cached sub-tasks. See [Compound Commands](/guide/run#compound-commands).
119
+ Commands joined with `&&` (or supplied as an array) are automatically split into independently cached sub-tasks. See [Compound Commands](/guide/run#compound-commands).
85
120
 
86
121
  ### `dependsOn`
87
122
 
@@ -13,9 +13,18 @@ When a task runs successfully (exit code 0), its terminal output (stdout/stderr)
13
13
  If everything matches, the cached output is replayed instantly, and the command does not run.
14
14
 
15
15
  ::: info
16
- Currently, only terminal output is cached and replayed. Output files such as `dist/` are not cached. If you delete them, use `--no-cache` to force a re-run. Output file caching is planned for a future release.
16
+ By default, only terminal output is cached and replayed. To cache files produced by a task, configure [`output`](/config/run#output) globs. Matching files are archived after a successful run and restored on a cache hit.
17
17
  :::
18
18
 
19
+ ```ts [vite.config.ts]
20
+ tasks: {
21
+ build: {
22
+ command: 'vp build',
23
+ output: ['dist/**'],
24
+ },
25
+ }
26
+ ```
27
+
19
28
  When a cache miss occurs, Vite Task tells you exactly why:
20
29
 
21
30
  ```
@@ -45,6 +45,8 @@ Run `vp create --list` to see the built-in templates and the common shorthand te
45
45
  - `--directory <dir>` writes the generated project into a specific target directory
46
46
  - `--agent <name>` creates agent instructions files during scaffolding
47
47
  - `--editor <name>` writes editor config files
48
+ - `--git` initialize a git repository
49
+ - `--no-git` skips git repository initialization
48
50
  - `--hooks` enables pre-commit hook setup
49
51
  - `--no-hooks` skips hook setup
50
52
  - `--no-interactive` runs without prompts
@@ -185,7 +187,7 @@ An invalid manifest is a hard error, not a silent fall-through — a maintainer
185
187
 
186
188
  ### Bundled subdirectory templates
187
189
 
188
- Relative `./...` paths resolve against the enclosing `@org/create` package root — **not** the user's cwd. The referenced directory is copied verbatim into the target project (no template-engine processing). Paths that escape the package root are rejected.
190
+ Relative `./...` paths resolve against the enclosing `@org/create` package root — **not** the user's cwd. The referenced directory is copied into the target project as-is (no template-engine processing); the only exception is that a small set of underscore-prefixed scaffold files (`_gitignore`, `_npmrc`, `_yarnrc.yml`) are renamed to their dotfile equivalents. Paths that escape the package root are rejected.
189
191
 
190
192
  ### Make the org the default in a repo
191
193
 
package/docs/guide/env.md CHANGED
@@ -6,6 +6,8 @@
6
6
 
7
7
  Managed mode is on by default, so `node`, `npm`, and related shims resolve through Vite+ and pick the right Node.js version for the current project.
8
8
 
9
+ When a project declares `packageManager` in `package.json`, matching package-manager shims also use that exact package-manager version. For example, `packageManager: "npm@10.9.4"` makes both `npm` and `npx` run through npm 10.9.4. Alias pairs follow the installed package-manager shims: `npm`/`npx`, `pnpm`/`pnpx`, `yarn`/`yarnpkg`, and `bun`/`bunx`. Vite+ does not translate mismatched commands, so a project pinned to `pnpm` still lets `npm` fall back to the npm that comes with the resolved Node.js runtime.
10
+
9
11
  By default, Vite+ stores its managed runtime and related files in `~/.vite-plus`. If needed, you can override that location with `VP_HOME`.
10
12
 
11
13
  If you want to keep that behavior, run:
@@ -28,11 +30,33 @@ This switches to system-first mode, where the shims prefer your system Node.js a
28
30
 
29
31
  ### Setup
30
32
 
31
- - `vp env setup` creates or updates shims in `VP_HOME/bin`
33
+ - `vp env setup` creates or updates shims in `VP_HOME/bin` (and writes the per-shell setup scripts under `~/.vite-plus/`)
32
34
  - `vp env on` enables managed mode so shims always use Vite+-managed Node.js
33
35
  - `vp env off` enables system-first mode so shims prefer system Node.js first
34
36
  - `vp env print` prints the shell snippet for the current session
35
37
 
38
+ PowerShell needs to dot-source the generated setup script in the current shell before `vp env use` can affect only that shell session:
39
+
40
+ ```powershell
41
+ . "$env:USERPROFILE\.vite-plus\env.ps1"
42
+ ```
43
+
44
+ Add that line to the end of your PowerShell `$PROFILE` to apply it automatically in new shells. It does not require elevated privileges.
45
+
46
+ Create the profile file if it does not already exist:
47
+
48
+ ```powershell
49
+ if (-not (Test-Path $PROFILE)) { New-Item $PROFILE -Force }
50
+ ```
51
+
52
+ Open the profile file for editing:
53
+
54
+ ```powershell
55
+ Invoke-Item $PROFILE
56
+ ```
57
+
58
+ In CI, `vp env use` can still run without shell initialization. It writes a temporary session file under `VP_HOME` so later shim calls in the same job can resolve the selected Node.js version.
59
+
36
60
  ### Manage
37
61
 
38
62
  - `vp env default` sets or shows the global default Node.js version
@@ -77,6 +101,7 @@ vp env use --unset # Remove the session override
77
101
  vp env current # Show current resolved environment
78
102
  vp env current --json # JSON output for automation
79
103
  vp env which node # Show which node binary will be used
104
+ vp env which npx # Show pinned package-manager alias when packageManager matches
80
105
  vp env list-remote --lts # List only LTS versions
81
106
 
82
107
  # Execute
@@ -71,7 +71,7 @@ You can also manually set up the Zed config:
71
71
  "oxfmt": {
72
72
  "initialization_options": {
73
73
  "settings": {
74
- "configPath": "./vite.config.ts",
74
+ "fmt.configPath": "./vite.config.ts",
75
75
  "run": "onSave"
76
76
  }
77
77
  }
@@ -98,4 +98,4 @@ You can also manually set up the Zed config:
98
98
  }
99
99
  ```
100
100
 
101
- Setting `oxfmt.configPath` to `./vite.config.ts` keeps editor format-on-save aligned with the `fmt` block in your Vite+ config. The full generated config covers additional languages (CSS, HTML, JSON, Markdown, etc.) — run `vp create` or `vp migrate` to get the complete file written automatically.
101
+ Setting `oxfmt.fmt.configPath` to `./vite.config.ts` keeps editor format-on-save aligned with the `fmt` block in your Vite+ config. The full generated config covers additional languages (CSS, HTML, JSON, Markdown, etc.) — run `vp create` or `vp migrate` to get the complete file written automatically.
@@ -20,6 +20,8 @@ Vite+ detects the package manager from the workspace root in this order:
20
20
 
21
21
  If none of those files are present, `vp` falls back to `pnpm` by default. Vite+ automatically downloads the matching package manager and uses it for the command you ran.
22
22
 
23
+ The explicit `packageManager` field also affects matching package-manager shims. If a project has `packageManager: "npm@10.9.4"`, `npm` and `npx` use npm 10.9.4. Other generated alias pairs behave the same way: `pnpm`/`pnpx`, `yarn`/`yarnpkg`, and `bun`/`bunx`. Mismatched tools are not translated; `npm` in a `pnpm` project still resolves as npm.
24
+
23
25
  ## Usage
24
26
 
25
27
  ```bash
@@ -121,15 +123,19 @@ Use these when you need to understand the current state of dependencies.
121
123
  Use `vp rebuild` when native modules need to be recompiled, for example after switching Node.js versions or when a C/C++ addon fails to load.
122
124
 
123
125
  - `vp rebuild` rebuilds all native modules
126
+ - `vp rebuild <package...>` rebuilds the listed packages only
124
127
  - `vp rebuild -- <args>` passes extra arguments to the underlying package manager
125
128
 
126
129
  ```bash
127
130
  vp rebuild
131
+ vp rebuild better-sqlite3 sharp
128
132
  vp rebuild -- --update-binary
129
133
  ```
130
134
 
131
135
  `vp rebuild` is a shorthand for `vp pm rebuild`.
132
136
 
137
+ With pnpm v10+, bare `vp rebuild` only rebuilds packages whose build scripts are listed in `onlyBuiltDependencies` (or approved via `pnpm approve-builds`); name the package explicitly to force a rebuild that bypasses the approval gate.
138
+
133
139
  #### Advanced
134
140
 
135
141
  Use these when you need lower-level package-manager behavior.
package/docs/guide/run.md CHANGED
@@ -171,6 +171,8 @@ vp run --filter "@my/*" --filter "!@my/utils" build
171
171
 
172
172
  Multiple `--filter` flags are combined as a union. Exclusion filters are applied after all inclusions.
173
173
 
174
+ When a `--filter` matches no packages, Vite+ prints a warning and exits successfully. Pass `--fail-if-no-match` to abort the run when any filter matches nothing instead.
175
+
174
176
  ### Workspace Root (`-w`)
175
177
 
176
178
  Explicitly run the task in the workspace root package:
@@ -18,9 +18,12 @@ If you are migrating an existing project and it still depends on older Vite or V
18
18
  ## `vp check` does not run type-aware lint rules or type checks
19
19
 
20
20
  - Confirm that `lint.options.typeAware` and `lint.options.typeCheck` are enabled in `vite.config.ts`
21
- - Check whether your `tsconfig.json` uses `compilerOptions.baseUrl`
21
+ - Check whether your `tsconfig.json` still uses `compilerOptions.baseUrl`
22
22
 
23
- The Oxlint type checker path powered by `tsgolint` does not support `baseUrl`, so Vite+ skips `typeAware` and `typeCheck` when that setting is present.
23
+ The Oxlint type checker path powered by `tsgolint` does not support `baseUrl`.
24
+ `vp migrate` and `vp lint --init` try to run the `vp dlx @andrewbranch/ts5to6 --fixBaseUrl .`
25
+ fix before enabling type-aware linting. If that fix fails or is declined, Vite+
26
+ skips `typeAware` and `typeCheck`.
24
27
 
25
28
  ## `vp lint` / `vp fmt` may fail to read `vite.config.ts`
26
29
 
package/docs/package.json CHANGED
@@ -5,7 +5,8 @@
5
5
  "scripts": {
6
6
  "dev": "vitepress dev",
7
7
  "build": "cp ../packages/cli/install.sh ../packages/cli/install.ps1 public/ && vitepress build",
8
- "preview": "vitepress preview"
8
+ "preview": "vitepress preview",
9
+ "update-trusted-stack-stats": "node .vitepress/theme/data/fetch-trusted-stack-stats.ts"
9
10
  },
10
11
  "dependencies": {
11
12
  "@iconify/vue": "^5.0.0",
@@ -13,6 +14,7 @@
13
14
  "reka-ui": "^2.7.0",
14
15
  "typewriter-effect": "^2.22.0",
15
16
  "vitepress-plugin-group-icons": "^1.7.5",
17
+ "vitepress-plugin-llms": "^1.12.2",
16
18
  "vitepress-plugin-mermaid": "^2.0.17",
17
19
  "vue": "^3.5.27",
18
20
  "vue3-carousel": "^0.16.0"