vite-plus 1.4.0 → 1.5.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 (111) hide show
  1. package/binding/index.cjs +116 -55
  2. package/binding/index.d.cts +31 -0
  3. package/dist/{agent-D8oxxhVR.js → agent-CowvWq3j.js} +2 -2
  4. package/dist/bin.js +30 -8
  5. package/dist/config/bin.js +5 -5
  6. package/dist/{constants-DRUnJ_Dz.js → constants-D5f7inVN.js} +6 -2
  7. package/dist/create/bin.js +115 -65
  8. package/dist/{define-config-Cv2P6NT2.cjs → define-config-BGCfAiIo.cjs} +35 -3
  9. package/dist/{define-config-rPhYIFSn.d.ts → define-config-BrvHRi-G.d.ts} +30 -2
  10. package/dist/{define-config-ChwJcu5e.js → define-config-XKYhw0xH.js} +30 -5
  11. package/dist/define-config.cjs +2 -1
  12. package/dist/define-config.d.ts +2 -2
  13. package/dist/define-config.js +1 -1
  14. package/dist/{editor-ClL78D8u.js → editor-BVaNnIey.js} +1266 -884
  15. package/dist/hooks/bin.js +2 -2
  16. package/dist/{hooks-xRcJPc-O.js → hooks-w_e2whkQ.js} +40 -21
  17. package/dist/index.cjs +4 -3
  18. package/dist/index.d.ts +2 -2
  19. package/dist/index.js +2 -2
  20. package/dist/lint-plugins.cjs +1 -1
  21. package/dist/migration/bin.js +1302 -311
  22. package/dist/migration/compat/worker.js +1 -1
  23. package/dist/{oxlint-plugin-config-BVpqYdcC.js → oxlint-plugin-config-5hVqz4kj.js} +1 -1
  24. package/dist/oxlint-plugin.js +29 -4
  25. package/dist/pack-bin.js +2 -2
  26. package/dist/{package-DzsomcUD.js → package-DLUCo6L_.js} +1 -1
  27. package/dist/{prompts-GL1vj0wk.js → prompts-DLpJGhfK.js} +3 -3
  28. package/dist/register.d.ts +1 -0
  29. package/dist/register.js +12 -0
  30. package/dist/{report-DLHO30yZ.js → report-BEdpIQvC.js} +2 -0
  31. package/dist/{resolve-vite-config-Dn5896A4.js → resolve-vite-config-D-JtjGRa.js} +2 -2
  32. package/dist/{resolve-vite-config-QO6cC0SP.js → resolve-vite-config-D7IUZYKq.js} +1 -1
  33. package/dist/script-esm-hooks.d.ts +5 -2
  34. package/dist/script-esm-hooks.js +5 -2
  35. package/dist/script-preload.cjs +24 -1
  36. package/dist/script-register.js +7 -2
  37. package/dist/script-watch.js +135 -41
  38. package/dist/staged/bin.js +2 -2
  39. package/dist/sync-versions/bin.js +1 -1
  40. package/dist/toolchain.js +14 -14
  41. package/dist/toolchain.json +14 -14
  42. package/dist/{tsconfig-LE_mAwe_.js → tsconfig-D3DiCiW6.js} +2 -2
  43. package/dist/{tsconfig-Do6MAG_f.js → tsconfig-DLERIAbF.js} +1 -1
  44. package/dist/version.js +2 -2
  45. package/dist/versions.js +7 -7
  46. package/docs/config/check.md +2 -0
  47. package/docs/config/fmt.md +1 -1
  48. package/docs/config/lint.md +1 -1
  49. package/docs/config/run.md +6 -2
  50. package/docs/config/staged.md +1 -1
  51. package/docs/guide/check.md +5 -1
  52. package/docs/guide/ci.md +2 -2
  53. package/docs/guide/create.md +1 -1
  54. package/docs/guide/env.md +1 -1
  55. package/docs/guide/global-cli.md +13 -9
  56. package/docs/guide/homebrew.md +127 -0
  57. package/docs/guide/ide-integration.md +1 -3
  58. package/docs/guide/implode.md +5 -3
  59. package/docs/guide/index.md +4 -4
  60. package/docs/guide/local-cli.md +22 -1
  61. package/docs/guide/migrate-rules.md +81 -22
  62. package/docs/guide/migrate.md +9 -9
  63. package/docs/guide/package-management/add.md +84 -0
  64. package/docs/guide/package-management/approve-builds.md +48 -0
  65. package/docs/guide/package-management/audit.md +39 -0
  66. package/docs/guide/package-management/cache.md +53 -0
  67. package/docs/guide/package-management/ci.md +28 -0
  68. package/docs/guide/package-management/config.md +119 -0
  69. package/docs/guide/package-management/dedupe.md +32 -0
  70. package/docs/guide/package-management/deprecate.md +39 -0
  71. package/docs/guide/package-management/dist-tag.md +61 -0
  72. package/docs/guide/package-management/dlx.md +40 -0
  73. package/docs/guide/package-management/fund.md +32 -0
  74. package/docs/guide/package-management/global-packages.md +32 -0
  75. package/docs/guide/package-management/index.md +78 -0
  76. package/docs/guide/package-management/info.md +35 -0
  77. package/docs/guide/package-management/install.md +89 -0
  78. package/docs/guide/package-management/licenses.md +42 -0
  79. package/docs/guide/package-management/link.md +29 -0
  80. package/docs/guide/package-management/list.md +60 -0
  81. package/docs/guide/package-management/login.md +34 -0
  82. package/docs/guide/package-management/logout.md +34 -0
  83. package/docs/guide/package-management/outdated.md +60 -0
  84. package/docs/guide/package-management/owner.md +79 -0
  85. package/docs/guide/package-management/pack.md +40 -0
  86. package/docs/guide/package-management/package-manager-selection.md +60 -0
  87. package/docs/guide/package-management/patch-commit.md +27 -0
  88. package/docs/guide/package-management/patch.md +29 -0
  89. package/docs/guide/package-management/ping.md +32 -0
  90. package/docs/guide/package-management/pkg.md +88 -0
  91. package/docs/guide/package-management/prune.md +34 -0
  92. package/docs/guide/package-management/publish.md +61 -0
  93. package/docs/guide/package-management/rebuild.md +31 -0
  94. package/docs/guide/package-management/remove.md +47 -0
  95. package/docs/guide/package-management/search.md +38 -0
  96. package/docs/guide/package-management/stage.md +175 -0
  97. package/docs/guide/package-management/team.md +140 -0
  98. package/docs/guide/package-management/token.md +87 -0
  99. package/docs/guide/package-management/unlink.md +33 -0
  100. package/docs/guide/package-management/update.md +62 -0
  101. package/docs/guide/package-management/version.md +36 -0
  102. package/docs/guide/package-management/whoami.md +30 -0
  103. package/docs/guide/package-management/why.md +55 -0
  104. package/docs/guide/run.md +23 -1
  105. package/docs/guide/test.md +1 -1
  106. package/docs/guide/troubleshooting.md +1 -1
  107. package/docs/guide/upgrade.md +12 -6
  108. package/docs/guide/vitest-v5.md +2 -2
  109. package/docs/guide/vpx.md +45 -5
  110. package/package.json +40 -34
  111. package/docs/guide/package-management.md +0 -269
package/dist/toolchain.js CHANGED
@@ -4,7 +4,7 @@ export const toolchain = {
4
4
  {
5
5
  "id": "vite-plus",
6
6
  "name": "vite-plus",
7
- "version": "1.4.0",
7
+ "version": "1.5.1",
8
8
  "kind": "package",
9
9
  "delivery": [
10
10
  "dependency"
@@ -14,7 +14,7 @@ export const toolchain = {
14
14
  {
15
15
  "id": "vite-plus-core",
16
16
  "name": "@voidzero-dev/vite-plus-core",
17
- "version": "1.4.0",
17
+ "version": "1.5.1",
18
18
  "kind": "package",
19
19
  "delivery": [
20
20
  "dependency"
@@ -26,7 +26,7 @@ export const toolchain = {
26
26
  {
27
27
  "id": "vite",
28
28
  "name": "vite",
29
- "version": "8.3.5",
29
+ "version": "8.3.7",
30
30
  "kind": "tool",
31
31
  "delivery": [
32
32
  "bundled"
@@ -36,7 +36,7 @@ export const toolchain = {
36
36
  {
37
37
  "id": "rolldown",
38
38
  "name": "rolldown",
39
- "version": "1.2.15",
39
+ "version": "1.2.18",
40
40
  "kind": "tool",
41
41
  "delivery": [
42
42
  "bundled",
@@ -47,7 +47,7 @@ export const toolchain = {
47
47
  {
48
48
  "id": "vitest",
49
49
  "name": "vitest",
50
- "version": "5.0.5",
50
+ "version": "5.1.0",
51
51
  "kind": "tool",
52
52
  "delivery": [
53
53
  "dependency"
@@ -57,7 +57,7 @@ export const toolchain = {
57
57
  {
58
58
  "id": "oxlint",
59
59
  "name": "oxlint",
60
- "version": "1.89.0",
60
+ "version": "1.91.0",
61
61
  "kind": "tool",
62
62
  "delivery": [
63
63
  "dependency"
@@ -67,7 +67,7 @@ export const toolchain = {
67
67
  {
68
68
  "id": "oxfmt",
69
69
  "name": "oxfmt",
70
- "version": "0.74.0",
70
+ "version": "0.76.0",
71
71
  "kind": "tool",
72
72
  "delivery": [
73
73
  "dependency"
@@ -77,7 +77,7 @@ export const toolchain = {
77
77
  {
78
78
  "id": "oxlint-tsgolint",
79
79
  "name": "oxlint-tsgolint",
80
- "version": "7.0.2004",
80
+ "version": "7.0.2005",
81
81
  "kind": "tool",
82
82
  "delivery": [
83
83
  "dependency"
@@ -89,7 +89,7 @@ export const toolchain = {
89
89
  {
90
90
  "id": "tsdown",
91
91
  "name": "tsdown",
92
- "version": "0.23.1",
92
+ "version": "0.23.4",
93
93
  "kind": "tool",
94
94
  "delivery": [
95
95
  "bundled"
@@ -99,8 +99,8 @@ export const toolchain = {
99
99
  {
100
100
  "id": "vite-task",
101
101
  "name": "vite-task",
102
- "revision": "a3c087a771a116f7c60220fc72738703eb45ac2e",
103
- "builtAt": "2026-10-23T02:30:38Z",
102
+ "revision": "40cb9cac46bddbf8aa5ce5373df1a6a1980acc38",
103
+ "builtAt": "2026-11-09T12:28:42Z",
104
104
  "kind": "tool",
105
105
  "delivery": [
106
106
  "compiled"
@@ -110,7 +110,7 @@ export const toolchain = {
110
110
  {
111
111
  "id": "oxc",
112
112
  "name": "oxc",
113
- "version": "0.155.0",
113
+ "version": "0.156.0",
114
114
  "kind": "engine",
115
115
  "delivery": [
116
116
  "compiled"
@@ -130,8 +130,8 @@ export const toolchain = {
130
130
  {
131
131
  "id": "oxc-node",
132
132
  "name": "oxc-node",
133
- "version": "1.0.0",
134
- "revision": "4759cedbda87f67ca646d3277166884cfcd62f81",
133
+ "version": "1.0.1",
134
+ "revision": "7ff14c3b1d15e2ef12310ee209d0b72b58fa880e",
135
135
  "kind": "engine",
136
136
  "delivery": [
137
137
  "compiled"
@@ -4,7 +4,7 @@
4
4
  {
5
5
  "id": "vite-plus",
6
6
  "name": "vite-plus",
7
- "version": "1.4.0",
7
+ "version": "1.5.1",
8
8
  "kind": "package",
9
9
  "delivery": [
10
10
  "dependency"
@@ -14,7 +14,7 @@
14
14
  {
15
15
  "id": "vite-plus-core",
16
16
  "name": "@voidzero-dev/vite-plus-core",
17
- "version": "1.4.0",
17
+ "version": "1.5.1",
18
18
  "kind": "package",
19
19
  "delivery": [
20
20
  "dependency"
@@ -26,7 +26,7 @@
26
26
  {
27
27
  "id": "vite",
28
28
  "name": "vite",
29
- "version": "8.3.5",
29
+ "version": "8.3.7",
30
30
  "kind": "tool",
31
31
  "delivery": [
32
32
  "bundled"
@@ -36,7 +36,7 @@
36
36
  {
37
37
  "id": "rolldown",
38
38
  "name": "rolldown",
39
- "version": "1.2.15",
39
+ "version": "1.2.18",
40
40
  "kind": "tool",
41
41
  "delivery": [
42
42
  "bundled",
@@ -47,7 +47,7 @@
47
47
  {
48
48
  "id": "vitest",
49
49
  "name": "vitest",
50
- "version": "5.0.5",
50
+ "version": "5.1.0",
51
51
  "kind": "tool",
52
52
  "delivery": [
53
53
  "dependency"
@@ -57,7 +57,7 @@
57
57
  {
58
58
  "id": "oxlint",
59
59
  "name": "oxlint",
60
- "version": "1.89.0",
60
+ "version": "1.91.0",
61
61
  "kind": "tool",
62
62
  "delivery": [
63
63
  "dependency"
@@ -67,7 +67,7 @@
67
67
  {
68
68
  "id": "oxfmt",
69
69
  "name": "oxfmt",
70
- "version": "0.74.0",
70
+ "version": "0.76.0",
71
71
  "kind": "tool",
72
72
  "delivery": [
73
73
  "dependency"
@@ -77,7 +77,7 @@
77
77
  {
78
78
  "id": "oxlint-tsgolint",
79
79
  "name": "oxlint-tsgolint",
80
- "version": "7.0.2004",
80
+ "version": "7.0.2005",
81
81
  "kind": "tool",
82
82
  "delivery": [
83
83
  "dependency"
@@ -89,7 +89,7 @@
89
89
  {
90
90
  "id": "tsdown",
91
91
  "name": "tsdown",
92
- "version": "0.23.1",
92
+ "version": "0.23.4",
93
93
  "kind": "tool",
94
94
  "delivery": [
95
95
  "bundled"
@@ -99,8 +99,8 @@
99
99
  {
100
100
  "id": "vite-task",
101
101
  "name": "vite-task",
102
- "revision": "a3c087a771a116f7c60220fc72738703eb45ac2e",
103
- "builtAt": "2026-10-23T02:30:38Z",
102
+ "revision": "40cb9cac46bddbf8aa5ce5373df1a6a1980acc38",
103
+ "builtAt": "2026-11-09T12:28:42Z",
104
104
  "kind": "tool",
105
105
  "delivery": [
106
106
  "compiled"
@@ -110,7 +110,7 @@
110
110
  {
111
111
  "id": "oxc",
112
112
  "name": "oxc",
113
- "version": "0.155.0",
113
+ "version": "0.156.0",
114
114
  "kind": "engine",
115
115
  "delivery": [
116
116
  "compiled"
@@ -130,8 +130,8 @@
130
130
  {
131
131
  "id": "oxc-node",
132
132
  "name": "oxc-node",
133
- "version": "1.0.0",
134
- "revision": "4759cedbda87f67ca646d3277166884cfcd62f81",
133
+ "version": "1.0.1",
134
+ "revision": "7ff14c3b1d15e2ef12310ee209d0b72b58fa880e",
135
135
  "kind": "engine",
136
136
  "delivery": [
137
137
  "compiled"
@@ -1,8 +1,8 @@
1
- import { p as createBaseUrlTsconfigFixArgs, t as BASEURL_TSCONFIG_FIX_PACKAGE } from "./constants-DRUnJ_Dz.js";
1
+ import { C as confirm, M as isCancel, T as log, t as cancelAndExit } from "./prompts-DLpJGhfK.js";
2
2
  import { c as modify, l as parse, o as applyEdits } from "./json-kl84kDyH.js";
3
3
  import { t as vitest_v5_entry_points_default } from "./vitest-v5-entry-points-NyJsFeux.js";
4
- import { C as confirm, M as isCancel, T as log, t as cancelAndExit } from "./prompts-GL1vj0wk.js";
5
4
  import { i as runCommandSilently, n as getVpCommand } from "./command-rY79K5NI.js";
5
+ import { p as createBaseUrlTsconfigFixArgs, t as BASEURL_TSCONFIG_FIX_PACKAGE } from "./constants-D5f7inVN.js";
6
6
  import path from "node:path";
7
7
  import { styleText } from "node:util";
8
8
  import fs from "node:fs";
@@ -1 +1 @@
1
- export { i as fixBaseUrlInTsconfig, a as hasBaseUrlInTsconfig } from "./tsconfig-LE_mAwe_.js";
1
+ export { i as fixBaseUrlInTsconfig, a as hasBaseUrlInTsconfig } from "./tsconfig-D3DiCiW6.js";
package/dist/version.js CHANGED
@@ -1,7 +1,7 @@
1
+ import { y as version } from "./constants-D5f7inVN.js";
1
2
  import { t as renderCliDoc } from "./help-B03t_iQ4.js";
3
+ import { a as hasVitePlusDependency, n as detectPackageMetadata } from "./package-DLUCo6L_.js";
2
4
  import { i as log, o as printHeader, t as accent } from "./terminal-BcuPUy-j.js";
3
- import { y as version } from "./constants-DRUnJ_Dz.js";
4
- import { a as hasVitePlusDependency, n as detectPackageMetadata } from "./package-DzsomcUD.js";
5
5
  import path from "node:path";
6
6
  import { pathToFileURL } from "node:url";
7
7
  import fs from "node:fs";
package/dist/versions.js CHANGED
@@ -1,9 +1,9 @@
1
1
  export const versions = {
2
- "vite": "8.3.5",
3
- "rolldown": "1.2.15",
4
- "vitest": "5.0.5",
5
- "oxfmt": "0.74.0",
6
- "oxlint": "1.89.0",
7
- "oxlint-tsgolint": "7.0.2004",
8
- "tsdown": "0.23.1"
2
+ "vite": "8.3.7",
3
+ "rolldown": "1.2.18",
4
+ "vitest": "5.1.0",
5
+ "oxfmt": "0.76.0",
6
+ "oxlint": "1.91.0",
7
+ "oxlint-tsgolint": "7.0.2005",
8
+ "tsdown": "0.23.4"
9
9
  };
@@ -2,6 +2,8 @@
2
2
 
3
3
  `vp check` runs format, lint, and type checks together. The `check` block in `vite.config.ts` sets defaults for the composite command, mirroring the `--no-fmt` and `--no-lint` CLI flags.
4
4
 
5
+ See [Check usage](/guide/check#usage) for the execution order and how to skip formatting after a failure.
6
+
5
7
  This is useful when a project wants to keep most of the toolchain but skip one step by default. For example, a team that lints but does not format can disable `check.fmt` so a plain `vp check` (the command agents and contributors run most) only lints, without anyone needing to remember `--no-fmt`.
6
8
 
7
9
  ## Example
@@ -21,4 +21,4 @@ export default defineConfig({
21
21
 
22
22
  For file- or package-specific formatting settings, use [`fmt.overrides`](/guide/monorepo#format-overrides) from the root `vite.config.ts`.
23
23
 
24
- Oxfmt disables nested configs in Vite+ mode, so nested format configs do not override settings for individual files. See [troubleshooting](/guide/troubleshooting#nested-lint-or-format-config-is-not-applied) for details.
24
+ Oxfmt disables nested configs in Vite+ mode, so nested format configs do not override settings for individual files. See [Troubleshooting](/guide/troubleshooting#nested-lint-or-format-config-is-not-applied) for details.
@@ -27,4 +27,4 @@ We recommend enabling both `options.typeAware` and `options.typeCheck` so `vp li
27
27
 
28
28
  For file- or package-specific lint rules, use [`lint.overrides`](/guide/monorepo#root-config-with-overrides) from the root `vite.config.ts`.
29
29
 
30
- Oxlint disables nested configs in Vite+ mode, so nested lint configs do not override settings for individual files. See [troubleshooting](/guide/troubleshooting#nested-lint-or-format-config-is-not-applied) for details.
30
+ Oxlint disables nested configs in Vite+ mode, so nested lint configs do not override settings for individual files. See [Troubleshooting](/guide/troubleshooting#nested-lint-or-format-config-is-not-applied) for details.
@@ -90,7 +90,11 @@ Use the object form when a task needs other fields like `cache`, `dependsOn`, or
90
90
 
91
91
  - **Type:** `string | string[]`
92
92
 
93
- 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.
93
+ Defines the command to run for the task.
94
+
95
+ ::: info
96
+ Vite Task parses simple commands and `&&` chains itself instead of passing them to a shell, so they behave the same on every platform. Other shell syntax, such as pipes or redirects, may behave differently across platforms.
97
+ :::
94
98
 
95
99
  ```ts [vite.config.ts]
96
100
  tasks: {
@@ -117,7 +121,7 @@ tasks: {
117
121
 
118
122
  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.
119
123
 
120
- Commands joined with `&&` (or supplied as an array) are automatically split into independently cached sub-tasks. See [Compound Commands](/guide/run#compound-commands).
124
+ Array entries, and `&&` chains without other shell syntax, are automatically split into independently cached sub-tasks. See [Compound Commands](/guide/run#compound-commands).
121
125
 
122
126
  ### `dependsOn`
123
127
 
@@ -1,6 +1,6 @@
1
1
  # Staged Config
2
2
 
3
- `vp staged` reads staged-file rules from the `staged` block in `vite.config.ts`. See the [Commit hooks guide](/guide/commit-hooks).
3
+ `vp staged` reads staged-file rules from the `staged` block in `vite.config.ts`. See the [Commit Hooks](/guide/commit-hooks).
4
4
 
5
5
  ## Example
6
6
 
@@ -22,6 +22,10 @@ vp check --no-lint # Skip lint rules; keep type-check when enabled.
22
22
  vp check --no-fmt --no-lint # Type-check only (requires both `typeAware` and `typeCheck` enabled).
23
23
  ```
24
24
 
25
+ If formatting fails, `vp check` stops before lint and type checks run. To fix formatting and apply available lint fixes, run `vp check --fix`. This command changes files. To skip formatting and run the remaining enabled checks, run `vp check --no-fmt`.
26
+
27
+ Put `vp check` flags before file paths. For example, use `vp check --fix src/index.ts`. Arguments after the first path go to the format and lint tools instead of `vp check`.
28
+
25
29
  ## Configuration
26
30
 
27
31
  `vp check` uses the same configuration you already define for linting and formatting:
@@ -61,4 +65,4 @@ export default defineConfig({
61
65
  });
62
66
  ```
63
67
 
64
- These options only affect `vp check`; standalone `vp fmt` and `vp lint` still run normally. A step is skipped if it is disabled in config or the matching `--no-fmt` / `--no-lint` flag is passed. Because the defaults apply to every `vp check` run, a pre-commit hook that calls `vp check` will skip the disabled step too. See [Check config](/config/check) for the full reference.
68
+ These options only affect `vp check`; standalone `vp fmt` and `vp lint` still run normally. A step is skipped if it is disabled in config or the matching `--no-fmt` / `--no-lint` flag is passed. Because the defaults apply to every `vp check` run, a pre-commit hook that calls `vp check` will skip the disabled step too. See [Check Config](/config/check) for the full reference.
package/docs/guide/ci.md CHANGED
@@ -14,11 +14,11 @@ Run `vp migrate` to replace exact `voidzero-dev/setup-vp@v1` references in GitHu
14
14
 
15
15
  ## Node.js During Installation
16
16
 
17
- The Vite+ installer uses the latest Node.js LTS by default. With versions that support [`VP_SETUP_NODE_VERSION`](/guide/global-cli#vp-setup-node-version), `setup-vp` can use the project's version for installation too. This avoids a second Node.js download when that version supports both the global CLI and its pinned `pnpm`.
17
+ The Vite+ installer uses the Node.js version pinned in the repository's [`.node-version`](https://github.com/voidzero-dev/vite-plus/blob/main/.node-version) by default. Each Vite+ release embeds this version at build time. The dependency-upgrade workflow keeps this pin up to date. With versions that support [`VP_SETUP_NODE_VERSION`](/guide/global-cli#vp-setup-node-version), `setup-vp` can use the project's version for installation too. This avoids a second Node.js download when that version supports both the global CLI and its pinned `pnpm`.
18
18
 
19
19
  `setup-vp` selects the version before it starts the installer. An explicit Node.js version takes precedence over a version-file input. Without either input, it checks the working directory and its parents using the [project declaration order](/guide/env#node-js-selection). The integration passes the selection through `VP_SETUP_NODE_VERSION`; the installer itself does not read project declarations.
20
20
 
21
- Without a selection, with Node.js management disabled, or when the selected version is incompatible, installation uses LTS. Older installers keep their existing behavior. Automatic project discovery does not create a session override, so later commands retain normal directory-based version selection.
21
+ Without a selection, with Node.js management disabled, or when the selected version is incompatible, installation uses the embedded default. Older installers keep their existing behavior. Automatic project discovery does not create a session override, so later commands retain normal directory-based version selection.
22
22
 
23
23
  The integration handles these installer variables automatically. Configure `node-version` or `node-version-file` in GitHub Actions and GitLab CI/CD, or `nodeVersion` or `nodeVersionFile` in Azure Pipelines. See the [`setup-vp` documentation](https://github.com/voidzero-dev/setup-vp#inputs) for the complete input reference.
24
24
 
@@ -95,7 +95,7 @@ Run `vp create --list` to see the built-in templates and the common shorthand te
95
95
  `--git` and `--no-git` are not available when adding a package to an existing monorepo.
96
96
  :::
97
97
 
98
- After create, manage the dispatcher with `vp hooks status`, `vp hooks disable`, and `vp hooks enable`. See the [Commit hooks guide](/guide/commit-hooks).
98
+ After create, manage the dispatcher with `vp hooks status`, `vp hooks disable`, and `vp hooks enable`. See the [Commit Hooks](/guide/commit-hooks).
99
99
 
100
100
  ### Dependency build scripts
101
101
 
package/docs/guide/env.md CHANGED
@@ -41,7 +41,7 @@ To select the project's Node.js version, Vite+ checks the current directory firs
41
41
 
42
42
  If no directory declares a version, Vite+ uses the global default (`vp env default`) and then the latest LTS.
43
43
 
44
- These rules select Node.js for project commands. The installer uses the latest LTS by default. Only [`VP_SETUP_NODE_VERSION`](/guide/global-cli#vp-setup-node-version) changes its dependency-installation runtime; [`setup-vp`](/guide/ci#node-js-during-installation) supplies this override from the CI inputs or project declarations.
44
+ The `lts` alias selects the newest LTS release. The `latest` alias selects the newest stable release, LTS or not, and skips pre-releases such as `27.0.0-alpha.0.0.0`. To use a pre-release, specify its exact version.
45
45
 
46
46
  `devEngines.runtime` ranks above `engines.node` because it declares the development-environment requirement, while `engines.node` is a consumer-facing support range. `vp env doctor` warns when declared sources conflict.
47
47
 
@@ -71,7 +71,9 @@ irm https://vite.plus/ps1 | iex
71
71
 
72
72
  On Windows, you can instead download and run [`vp-setup.exe`](https://setup.viteplus.dev).
73
73
 
74
- The installer uses the latest Node.js LTS to install its JavaScript dependencies. CI integrations can select another compatible version through [`VP_SETUP_NODE_VERSION`](#vp-setup-node-version).
74
+ For macOS and Linux, see the [Homebrew tap guide](/guide/homebrew) for installation instructions.
75
+
76
+ The installer uses the Node.js version pinned in the Vite+ repository's [`.node-version`](https://github.com/voidzero-dev/vite-plus/blob/main/.node-version) to install its JavaScript dependencies. Each Vite+ release embeds this version at build time. Development and CI use the same file, which the dependency-upgrade workflow keeps up to date. CI integrations can select another compatible version through [`VP_SETUP_NODE_VERSION`](#vp-setup-node-version).
75
77
 
76
78
  After installation, open a new shell and run:
77
79
 
@@ -111,14 +113,14 @@ These variables control the installer scripts and the standalone Windows install
111
113
 
112
114
  - **Purpose**: Select the Node.js version used to install the global CLI's JavaScript dependencies. CI integrations such as [`setup-vp`](/guide/ci#node-js-during-installation) set this variable to reuse the project's runtime.
113
115
  - **Values**: An exact version, a version range, or an alias such as `22.23.1`, `22`, `^22.18.0`, `lts`, or `latest`. The installer resolves the value once to an exact version.
114
- - **Default**: Unset or empty (use the latest Node.js LTS). Project files, `VP_NODE_VERSION`, session overrides, and the user-level default do not change this default.
115
- - **Compatibility**: The resolved version must meet the Node.js requirements of both the global CLI and its pinned `pnpm`. Otherwise, the installer uses LTS. An invalid or unresolvable value causes an error.
116
- - **Scope**: Initial dependency installation only. This variable does not set a project pin, session override, or global default. `vp upgrade` and legacy installers continue to use LTS.
116
+ - **Default**: Unset or empty (use the embedded Node.js default). Project files, `VP_NODE_VERSION`, session overrides, and the user-level default do not change this default.
117
+ - **Compatibility**: The resolved version must meet the Node.js requirements of both the global CLI and its pinned `pnpm`. Otherwise, the installer uses the embedded default. An invalid or unresolvable value causes an error.
118
+ - **Scope**: Initial dependency installation only. This variable does not set a project pin, session override, or global default. [`vp upgrade`](/guide/upgrade#global-vp) does not use this variable.
117
119
 
118
120
  #### `VP_SETUP_NODE_VERSION_FILE`
119
121
 
120
122
  - **Purpose**: Optional output file for integrations that need the exact version resolved from `VP_SETUP_NODE_VERSION`.
121
- - **Contents**: The resolved version, such as `22.23.1`, written after successful dependency installation. If compatibility requires LTS for installation, the file still contains the requested version's resolution.
123
+ - **Contents**: The resolved version, such as `22.23.1`, written after successful dependency installation. If compatibility requires the embedded default for installation, the file still contains the requested version's resolution.
122
124
  - **Default**: Unset (write no file). The installer also writes no file when `VP_SETUP_NODE_VERSION` is unset or empty, or when dependency installation is skipped.
123
125
 
124
126
  `setup-vp` manages this file automatically. Use its Node.js inputs to configure CI jobs.
@@ -426,7 +428,7 @@ For example, `VP_VERSION=1.0.0 vp-setup.exe --version 2.0.0` installs version 2.
426
428
 
427
429
  ### Homebrew
428
430
 
429
- For a Homebrew installation, the first `vp` command sets up your shell, shims, and environment-management preferences. It reuses Homebrew's binary and bundled JavaScript. Setup stores its completion state in your user directories and does not need write access to the Homebrew prefix.
431
+ The [official Homebrew tap](/guide/homebrew) installs the native CLI. The first `vp` command installs matching JavaScript dependencies in your data directory and sets up your shell, shims, and environment-management preferences. Setup stores its state in your directories without writing to the Homebrew prefix.
430
432
 
431
433
  Later commands reuse that setup while the installed binary remains unchanged. Generated shims follow Homebrew's public `vp` entrypoint when Homebrew replaces a version. Setup preserves your saved management preferences during this replacement.
432
434
 
@@ -436,11 +438,13 @@ To prefer your existing Node.js and package managers during the first run, use:
436
438
  VP_NODE_MANAGER=no VP_PM_MANAGER=no vp help
437
439
  ```
438
440
 
439
- After setup, use `vp env off` to change this preference. Commands that need missing runtimes or project dependencies can still download them.
441
+ After setup, use `vp env off` to change this preference. The tap still prepares its pinned Node.js and pnpm to install CLI dependencies. Commands that need missing runtimes or project dependencies can also download them.
440
442
 
441
443
  Use Homebrew to [upgrade](/guide/upgrade#homebrew) or [remove](/guide/implode#homebrew) its package.
442
444
 
443
- `vp env doctor` identifies the Homebrew installation and its binary path. It checks the `vp` command and the user shim directory on `PATH` separately. If only the shim directory is missing, follow its shell setup instructions to enable the shims.
445
+ `vp env doctor` identifies the Homebrew source, formula name, and binary path. It checks the `vp` command and the user shim directory on `PATH` separately. If only the shim directory is missing, follow its shell setup instructions to enable the shims.
446
+
447
+ See the [official tap guide](/guide/homebrew) for registry configuration and migration instructions.
444
448
 
445
449
  ## Use It Without a Local Package
446
450
 
@@ -481,7 +485,7 @@ To see which toolchain is selected for your current project, run `vp toolchain`.
481
485
  ## Next Steps
482
486
 
483
487
  - [Environment](/guide/env) covers Node.js and package-manager selection, pinning, shims, and managed installations.
484
- - [Package Management](/guide/package-management) covers pnpm, npm, Yarn, and Bun workflows.
488
+ - [Package Management](/guide/package-management/) covers pnpm, npm, Yarn, and Bun workflows.
485
489
  - [Run](/guide/run) covers package scripts and cached workspace tasks.
486
490
  - [Upgrading Vite+](/guide/upgrade) explains global CLI upgrades. See [Update Vite+](/guide/upgrade-project) for project-local upgrades.
487
491
  - [Removing Vite+](/guide/implode) removes the global binary and its managed data.
@@ -0,0 +1,127 @@
1
+ # Homebrew tap
2
+
3
+ The official tap supports macOS and glibc Linux on ARM64 and x64. Homebrew manages the native `vp` executable; `vp` manages its JavaScript dependencies, downloaded Node.js versions, package managers, and settings in your user directories.
4
+ Stable installation downloads the executable and its dependency lockfile from GitHub Releases. This step needs no existing Node.js or package manager installation, or npm registry access.
5
+
6
+ ## Install
7
+
8
+ Install the tap:
9
+
10
+ ```bash
11
+ brew tap voidzero-dev/vite-plus https://github.com/voidzero-dev/vite-plus
12
+ brew install voidzero-dev/vite-plus/vp
13
+ vp
14
+ ```
15
+
16
+ The explicit repository URL is required because the formula is part of the Vite+ repository.
17
+ If you already use Vite+, follow the [migration steps](#switch-an-existing-installation).
18
+
19
+ ## First use
20
+
21
+ On first use, `vp` installs its matching CLI dependencies and configures your shell and tool-management preferences. This step needs access to Node.js downloads and your npm registry.
22
+ Setup uses the release's pinned Node.js and pnpm versions, even if you choose to prefer system tools. A compatible [`VP_SETUP_NODE_VERSION`](/guide/global-cli#vp-setup-node-version) can override the installation runtime without changing Node.js selection for your projects.
23
+ `vp` stores dependencies in `<DATA>/cli-packages/<version>/<platform>`.
24
+ `<DATA>` comes from the [Vite+ directory configuration](/guide/global-cli#installation-variables).
25
+
26
+ Open a new terminal after setup so the shims are available on `PATH`. Later invocations reuse the completed setup.
27
+ Use [`vp env on` and `vp env off`](/guide/env) to change which tools `vp` manages.
28
+
29
+ ## Custom npm registry
30
+
31
+ First-run setup reads `~/.npmrc`, including npm-compatible authentication:
32
+
33
+ ```ini
34
+ registry=https://registry.example.com/repository/npm/
35
+ //registry.example.com/repository/npm/:_authToken=${NPM_TOKEN}
36
+ ```
37
+
38
+ Export `NPM_TOKEN` before running `vp`. The native pnpm downloader and pnpm dependency installation both use this configuration.
39
+ You can select another file with `NPM_CONFIG_USERCONFIG` or override the registry with `NPM_CONFIG_REGISTRY`.
40
+ Relative user-config paths resolve from your current directory. No Homebrew-specific npm variables are required.
41
+
42
+ Authentication failures stop setup. Fix the configuration and run `vp` again; setup preserves your management choices.
43
+
44
+ ## Recover from failed setup
45
+
46
+ Run `vp env doctor` to inspect the executable, dependency directory, and shims. Its CLI dependency check reads local files and does not install or repair dependencies. Other checks can fetch Node.js version metadata.
47
+
48
+ Fix the reported configuration, access, or disk-space problem, then run `vp --help` to retry setup.
49
+ For a lockfile error, the [installer recovery option](/guide/global-cli#vp-setup-skip-install-lockfile) also works with Homebrew:
50
+
51
+ ```bash
52
+ VP_SETUP_SKIP_INSTALL_LOCKFILE=1 vp --help
53
+ ```
54
+
55
+ This resolves dependencies without the published lockfile. A later invocation without the override restores the normal lockfile checks and can reinstall those dependencies.
56
+ If pnpm fails, the reported log contains its exit code and recognized error codes, without raw package-manager output.
57
+ Configured tool shims can run cached Node.js, package managers, and global packages independently of CLI dependency repair.
58
+
59
+ ## Switch an existing installation
60
+
61
+ Keep your existing directory settings. Migration preserves your preferences, runtimes, and global packages, and updates their shims to Homebrew's public `vp` command.
62
+ Do not run `vp implode`: it removes that user data. Open a new terminal after switching.
63
+
64
+ ### Switch from the script installer
65
+
66
+ Run the `brew tap` and `brew install` commands above. Then invoke Homebrew's executable directly, so an existing script-install shim cannot take precedence:
67
+
68
+ ```bash
69
+ "$(brew --prefix)/bin/vp" env setup --refresh
70
+ ```
71
+
72
+ ### Switch from Homebrew Core
73
+
74
+ The `vite-plus` formula provides the same commands and must be removed before installing the tap:
75
+
76
+ ```bash
77
+ brew tap voidzero-dev/vite-plus https://github.com/voidzero-dev/vite-plus
78
+ brew uninstall vite-plus
79
+ brew install voidzero-dev/vite-plus/vp
80
+ "$(brew --prefix)/bin/vp" env setup --refresh
81
+ ```
82
+
83
+ ## Upgrade or remove
84
+
85
+ ```bash
86
+ brew upgrade voidzero-dev/vite-plus/vp
87
+ ```
88
+
89
+ Run `vp` after upgrading to prepare its matching dependencies. Setup preserves your preferences.
90
+ `vp upgrade` identifies the official tap and directs you to `brew upgrade voidzero-dev/vite-plus/vp`.
91
+
92
+ For complete removal, remove your user data before uninstalling the executable:
93
+
94
+ ```bash
95
+ vp implode
96
+ brew uninstall voidzero-dev/vite-plus/vp
97
+ ```
98
+
99
+ `brew uninstall` alone keeps user data. On a shared machine, each operating-system account can remove its own data with `vp implode` before the executable is removed.
100
+
101
+ ## Test a preview build
102
+
103
+ Set `HOMEBREW_VP_PR_VERSION` to a PR number or full commit SHA. The PR must have a published `preview-build` that includes Homebrew tap support. Use a full SHA to keep installation and verification on the same commit:
104
+
105
+ ```bash
106
+ brew tap voidzero-dev/vite-plus https://github.com/voidzero-dev/vite-plus
107
+ HOMEBREW_VP_PR_VERSION="<full-commit-sha>" brew install voidzero-dev/vite-plus/vp
108
+ HOMEBREW_VP_PR_VERSION="<full-commit-sha>" brew test voidzero-dev/vite-plus/vp
109
+ ```
110
+
111
+ Use `brew reinstall` instead of `brew install` to replace an installed tap build. If the `vite-plus` formula is installed, run `brew uninstall vite-plus` first; this keeps your user data.
112
+ `brew test` uses temporary user data and does not change your shell configuration. Run `vp` afterward to set up the preview for your account. If switching from the script installer, [refresh its shims](#switch-from-the-script-installer) to use the Homebrew executable.
113
+
114
+ Homebrew downloads only the native preview package from the registry bridge and verifies its checksum. It resolves PR numbers to the latest published commit, which can differ from the current PR head.
115
+ First launch installs the matching dependencies from the bridge. An explicit `NPM_CONFIG_REGISTRY` must point to a registry that also serves those preview packages.
116
+
117
+ The selector is specific to this tap. It does not change other Homebrew formulae, and no npm client is needed during `brew install`.
118
+ To test changes to the formula itself, first check out the PR in the tap repository. Set `HOMEBREW_NO_AUTO_UPDATE=1` for these commands to keep that checkout.
119
+
120
+ To return to a stable release, clear the overrides, restore the tap's `main` branch if you changed its checkout, and update it before reinstalling:
121
+
122
+ ```bash
123
+ unset HOMEBREW_VP_PR_VERSION HOMEBREW_NO_AUTO_UPDATE
124
+ git -C "$(brew --repository voidzero-dev/vite-plus)" switch main
125
+ brew update
126
+ brew reinstall voidzero-dev/vite-plus/vp
127
+ ```
@@ -63,9 +63,7 @@ You can also manually set up the Zed config:
63
63
  "initialization_options": {
64
64
  "settings": {
65
65
  "run": "onType",
66
- "fixKind": "safe_fix",
67
- "typeAware": true,
68
- "unusedDisableDirectives": "deny"
66
+ "fixKind": "safe_fix"
69
67
  }
70
68
  }
71
69
  },
@@ -26,13 +26,15 @@ vp implode --yes
26
26
 
27
27
  ## Homebrew
28
28
 
29
- Run `vp implode` first to remove Vite+-managed runtimes, global packages, configuration, shims, and shell entries. Then remove the Homebrew package:
29
+ For the [official Homebrew tap](/guide/homebrew), run `vp implode` first to remove Vite+-managed runtimes, global packages, configuration, shims, and shell entries. Then remove the Homebrew package:
30
30
 
31
31
  ```bash
32
32
  vp implode
33
- brew uninstall vite-plus
33
+ brew uninstall voidzero-dev/vite-plus/vp
34
34
  ```
35
35
 
36
- The confirmation prompt explains that the Homebrew package will remain installed. After cleanup, `vp implode` directs you to `brew uninstall vite-plus`.
36
+ The confirmation prompt explains that the Homebrew package will remain installed. After cleanup, `vp implode` shows the uninstall command for the owning formula.
37
+
38
+ To keep your data when switching installations, follow the [migration steps](/guide/homebrew#switch-an-existing-installation) instead of running `vp implode`.
37
39
 
38
40
  Restart your terminal before you run `vp` again. In Bash, you can run `hash -r` instead to clear cached command paths. If the Homebrew package is still installed, the next `vp` command starts first-run setup again.
@@ -100,9 +100,9 @@ Vite+ covers the full frontend development cycle, from starting a project throug
100
100
 
101
101
  - [`vp create`](/guide/create) creates new apps, packages, and monorepos.
102
102
  - [`vp migrate`](/guide/migrate) moves existing projects onto Vite+.
103
- - [`vp install`](/guide/package-management) installs dependencies with the right package manager.
104
- - [`vp add`](/guide/package-management), [`vp remove`](/guide/package-management), [`vp update`](/guide/package-management), [`vp dedupe`](/guide/package-management), [`vp outdated`](/guide/package-management), [`vp list`](/guide/package-management), [`vp why`](/guide/package-management), and [`vp info`](/guide/package-management) cover the rest of the package-management workflow.
105
- - [`vp link`](/guide/package-management), [`vp unlink`](/guide/package-management), [`vp rebuild`](/guide/package-management), and [`vp pm <command>`](/guide/package-management) provide lower-level package-manager operations.
103
+ - [`vp install`](/guide/package-management/install) installs dependencies with the right package manager.
104
+ - [`vp add`](/guide/package-management/add), [`vp remove`](/guide/package-management/remove), [`vp update`](/guide/package-management/update), [`vp dedupe`](/guide/package-management/dedupe), [`vp outdated`](/guide/package-management/outdated), [`vp list`](/guide/package-management/list), [`vp why`](/guide/package-management/why), and [`vp info`](/guide/package-management/info) cover the rest of the package-management workflow.
105
+ - [`vp link`](/guide/package-management/link), [`vp unlink`](/guide/package-management/unlink), [`vp rebuild`](/guide/package-management/rebuild), and [`vp pm <command>`](/guide/package-management/) provide lower-level package-manager operations.
106
106
 
107
107
  ### Project Toolchain
108
108
 
@@ -115,7 +115,7 @@ Vite+ covers the full frontend development cycle, from starting a project throug
115
115
  - [`vp toolchain`](/guide/upgrade#show-the-toolchain) shows the active project toolchain; use `--global` to inspect the global installation instead.
116
116
  - [`vp run`](/guide/run) runs tasks across workspaces with caching.
117
117
  - [`vp cache clean`](/guide/cache) clears task cache entries.
118
- - [`vp exec`](/guide/vpx) runs local project binaries, while [`vp dlx`](/guide/vpx) and [`vpx`](/guide/vpx) download and run package binaries.
118
+ - [`vp exec`](/guide/vpx) runs local project binaries, while [`vp dlx`](/guide/package-management/dlx) and [`vpx`](/guide/vpx) download and run package binaries.
119
119
  - [`vp config`](/guide/commit-hooks) installs the Git hook dispatcher and configures agent integration.
120
120
  - [`vp hooks`](/guide/commit-hooks) manages the Git hook dispatcher, and [`vp staged`](/guide/commit-hooks) runs checks on staged files.
121
121
  - [Monorepo Guide](/guide/monorepo) covers multi-package project structure and commands.