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
@@ -0,0 +1,39 @@
1
+ import { shouldPrintVitePlusHeader, vitePlusHeader } from "../binding/index.js";
2
+ import { styleText } from "node:util";
3
+ //#region src/utils/terminal.ts
4
+ function log(message) {
5
+ console.log(message);
6
+ }
7
+ /**
8
+ * Emit the Vite+ banner (header line + trailing blank line) to stdout.
9
+ * Gating (non-TTY, git hooks) lives in `shouldPrintVitePlusHeader` on the
10
+ * Rust side so both CLIs stay in sync.
11
+ */
12
+ function printHeader() {
13
+ if (!shouldPrintVitePlusHeader()) return;
14
+ log(vitePlusHeader());
15
+ log("");
16
+ }
17
+ function accent(text) {
18
+ return styleText("blue", text);
19
+ }
20
+ function muted(text) {
21
+ return styleText("gray", text);
22
+ }
23
+ function success(text) {
24
+ return styleText("green", text);
25
+ }
26
+ function formatDuration(durationMs) {
27
+ if (durationMs < 1e3) return `${Math.max(1, durationMs)}ms`;
28
+ const durationSeconds = durationMs / 1e3;
29
+ if (durationSeconds < 10) return `${durationSeconds.toFixed(1)}s`;
30
+ return `${Math.round(durationSeconds)}s`;
31
+ }
32
+ function warnMsg(msg) {
33
+ console.error(styleText(["yellow", "bold"], "warn:"), msg);
34
+ }
35
+ function errorMsg(msg) {
36
+ console.error(styleText(["red", "bold"], "error:"), msg);
37
+ }
38
+ //#endregion
39
+ export { muted as a, warnMsg as c, log as i, errorMsg as n, printHeader as o, formatDuration as r, success as s, accent as t };
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": "0.2.9",
7
+ "version": "0.3.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": "0.2.9",
17
+ "version": "0.3.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.2.1",
29
+ "version": "8.2.2",
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.3",
39
+ "version": "1.2.7",
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": "4.1.10",
50
+ "version": "4.1.11",
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.77.0",
60
+ "version": "1.81.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.62.0",
70
+ "version": "0.66.0",
71
71
  "kind": "tool",
72
72
  "delivery": [
73
73
  "dependency"
@@ -89,7 +89,7 @@ export const toolchain = {
89
89
  {
90
90
  "id": "tsdown",
91
91
  "name": "tsdown",
92
- "version": "0.22.14",
92
+ "version": "0.23.0",
93
93
  "kind": "tool",
94
94
  "delivery": [
95
95
  "bundled"
@@ -100,7 +100,7 @@ export const toolchain = {
100
100
  "id": "vite-task",
101
101
  "name": "vite-task",
102
102
  "revision": "d05b1dcdbaabaa69643ee0b89cebe3cd390957e9",
103
- "builtAt": "2026-08-12T02:51:52Z",
103
+ "builtAt": "2026-09-08T13:14:20Z",
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.143.0",
113
+ "version": "0.148.0",
114
114
  "kind": "engine",
115
115
  "delivery": [
116
116
  "compiled"
@@ -120,7 +120,7 @@ export const toolchain = {
120
120
  {
121
121
  "id": "oxc-resolver",
122
122
  "name": "oxc-resolver",
123
- "version": "11.24.2",
123
+ "version": "11.24.3",
124
124
  "kind": "engine",
125
125
  "delivery": [
126
126
  "compiled"
@@ -4,7 +4,7 @@
4
4
  {
5
5
  "id": "vite-plus",
6
6
  "name": "vite-plus",
7
- "version": "0.2.9",
7
+ "version": "0.3.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": "0.2.9",
17
+ "version": "0.3.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.2.1",
29
+ "version": "8.2.2",
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.3",
39
+ "version": "1.2.7",
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": "4.1.10",
50
+ "version": "4.1.11",
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.77.0",
60
+ "version": "1.81.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.62.0",
70
+ "version": "0.66.0",
71
71
  "kind": "tool",
72
72
  "delivery": [
73
73
  "dependency"
@@ -89,7 +89,7 @@
89
89
  {
90
90
  "id": "tsdown",
91
91
  "name": "tsdown",
92
- "version": "0.22.14",
92
+ "version": "0.23.0",
93
93
  "kind": "tool",
94
94
  "delivery": [
95
95
  "bundled"
@@ -100,7 +100,7 @@
100
100
  "id": "vite-task",
101
101
  "name": "vite-task",
102
102
  "revision": "d05b1dcdbaabaa69643ee0b89cebe3cd390957e9",
103
- "builtAt": "2026-08-12T02:51:52Z",
103
+ "builtAt": "2026-09-08T13:14:20Z",
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.143.0",
113
+ "version": "0.148.0",
114
114
  "kind": "engine",
115
115
  "delivery": [
116
116
  "compiled"
@@ -120,7 +120,7 @@
120
120
  {
121
121
  "id": "oxc-resolver",
122
122
  "name": "oxc-resolver",
123
- "version": "11.24.2",
123
+ "version": "11.24.3",
124
124
  "kind": "engine",
125
125
  "delivery": [
126
126
  "compiled"
@@ -1,6 +1,7 @@
1
- import { d as createBaseUrlTsconfigFixArgs, t as BASEURL_TSCONFIG_FIX_PACKAGE } from "./constants-CG513DRa.js";
2
- import { A as isCancel, C as log, M as runCommandSilently, t as cancelAndExit, x as confirm } from "./prompts-CHz_98bJ.js";
3
- import { c as parse, o as applyEdits, s as modify } from "./json-qlK6UH0r.js";
1
+ import { p as createBaseUrlTsconfigFixArgs, t as BASEURL_TSCONFIG_FIX_PACKAGE } from "./constants-0IAVgpox.js";
2
+ import { c as parse, o as applyEdits, s as modify } from "./json-cULBl7Pi.js";
3
+ import { S as log, b as confirm, k as isCancel, t as cancelAndExit } from "./prompts-CtzEgFY-.js";
4
+ import { n as runCommandSilently } from "./command-CguLh2KL.js";
4
5
  import path from "node:path";
5
6
  import { styleText } from "node:util";
6
7
  import fs from "node:fs";
@@ -148,4 +149,4 @@ function rewriteTypesInTsconfig(filePath) {
148
149
  return true;
149
150
  }
150
151
  //#endregion
151
- export { hasTypesToRewriteInTsconfig as a, rewriteTypesInTsconfig as c, hasBaseUrlInTsconfig as i, findTsconfigFiles as n, hasVitestTypesInTsconfig as o, fixBaseUrlInTsconfig as r, removeDeprecatedTsconfigFalseOption as s, confirmBaseUrlFix as t };
152
+ export { hasBaseUrlInTsconfig as a, hasVitestTypesInTsconfig as c, fixBaseUrlInTsconfig as i, removeDeprecatedTsconfigFalseOption as l, findTsconfigFiles as n, hasBaseUrlInTsconfigFile as o, findTsconfigFilesWithBaseUrl as r, hasTypesToRewriteInTsconfig as s, confirmBaseUrlFix as t, rewriteTypesInTsconfig as u };
@@ -0,0 +1,2 @@
1
+ import { a as hasBaseUrlInTsconfig, i as fixBaseUrlInTsconfig } from "./tsconfig-CUggNuJR.js";
2
+ export { fixBaseUrlInTsconfig, hasBaseUrlInTsconfig };
@@ -1,8 +1,7 @@
1
1
  //#region src/utils/tsgolint-path.d.ts
2
- declare function resolveWindowsTsgolintExecutable(pathCandidates: string[], options: {
2
+ export declare function resolveWindowsTsgolintExecutable(pathCandidates: string[], options: {
3
3
  exists: (path: string) => boolean;
4
4
  getRealpathCandidates?: () => string[];
5
5
  }): string;
6
- declare function resolveTsgolintExecutable(tsgolintBinPath: string, scriptUrl: string): string;
7
- //#endregion
8
- export { resolveTsgolintExecutable, resolveWindowsTsgolintExecutable };
6
+ export declare function resolveTsgolintExecutable(tsgolintBinPath: string, scriptUrl: string): string;
7
+ //#endregion
@@ -1 +1 @@
1
- export type * from '@voidzero-dev/vite-plus-core/types/customEvent.d.ts';
1
+ export type * from 'vite/types/customEvent.d.ts';
@@ -1 +1 @@
1
- export type * from '@voidzero-dev/vite-plus-core/types/hmrPayload.d.ts';
1
+ export type * from 'vite/types/hmrPayload.d.ts';
@@ -1 +1 @@
1
- export type * from '@voidzero-dev/vite-plus-core/types/hot.d.ts';
1
+ export type * from 'vite/types/hot.d.ts';
@@ -1 +1 @@
1
- export type * from '@voidzero-dev/vite-plus-core/types/import-meta.d.ts';
1
+ export type * from 'vite/types/import-meta.d.ts';
@@ -1 +1 @@
1
- export type * from '@voidzero-dev/vite-plus-core/types/importGlob.d.ts';
1
+ export type * from 'vite/types/importGlob.d.ts';
@@ -1 +1 @@
1
- export type * from '@voidzero-dev/vite-plus-core/types/importMeta.d.ts';
1
+ export type * from 'vite/types/importMeta.d.ts';
@@ -1 +1 @@
1
- export type * from '@voidzero-dev/vite-plus-core/types/metadata.d.ts';
1
+ export type * from 'vite/types/metadata.d.ts';
package/dist/version.d.ts CHANGED
@@ -2,6 +2,5 @@
2
2
  /**
3
3
  * Print version information
4
4
  */
5
- declare function printVersion(cwd: string): Promise<void>;
6
- //#endregion
7
- export { printVersion };
5
+ export declare function printVersion(cwd: string): Promise<void>;
6
+ //#endregion
package/dist/version.js CHANGED
@@ -1,6 +1,7 @@
1
- import { i as log, l as renderCliDoc, o as printHeader, t as accent } from "./terminal-Bz-ps6rJ.js";
2
- import { h as version } from "./constants-CG513DRa.js";
3
- import { i as hasVitePlusDependency, n as detectPackageMetadata } from "./package-B4T8RGMG.js";
1
+ import { t as renderCliDoc } from "./help-BmKpeOP9.js";
2
+ import { i as log, o as printHeader, t as accent } from "./terminal-MKGAuy-p.js";
3
+ import { _ as version } from "./constants-0IAVgpox.js";
4
+ import { i as hasVitePlusDependency, n as detectPackageMetadata } from "./package-BZz2Ij68.js";
4
5
  import path from "node:path";
5
6
  import fs from "node:fs";
6
7
  //#region src/version.ts
package/dist/versions.js CHANGED
@@ -1,9 +1,9 @@
1
1
  export const versions = {
2
- "vite": "8.2.1",
3
- "rolldown": "1.2.3",
4
- "vitest": "4.1.10",
5
- "oxfmt": "0.62.0",
6
- "oxlint": "1.77.0",
2
+ "vite": "8.2.2",
3
+ "rolldown": "1.2.7",
4
+ "vitest": "4.1.11",
5
+ "oxfmt": "0.66.0",
6
+ "oxlint": "1.81.0",
7
7
  "oxlint-tsgolint": "7.0.2001",
8
- "tsdown": "0.22.14"
8
+ "tsdown": "0.23.0"
9
9
  };
@@ -0,0 +1,23 @@
1
+ //#region src/utils/package-overrides.ts
2
+ function extractOverrideTargetName(key) {
3
+ let target = key.trim();
4
+ for (let delimiter = target.search(/[^ |@]>/); delimiter !== -1; delimiter = target.search(/[^ |@]>/)) target = target.slice(delimiter + 2).trim();
5
+ if (!target) return target;
6
+ if (target.includes("/")) {
7
+ const segments = target.split("/");
8
+ const last = segments[segments.length - 1];
9
+ const scope = segments[segments.length - 2];
10
+ target = scope?.startsWith("@") ? `${scope}/${last}` : last;
11
+ }
12
+ const nameStart = target.startsWith("@") ? target.indexOf("/") + 1 : 0;
13
+ const versionAt = target.indexOf("@", nameStart);
14
+ return versionAt > 0 ? target.slice(0, versionAt) : target;
15
+ }
16
+ //#endregion
17
+ //#region src/utils/vitest-ecosystem.ts
18
+ const VITEST_ALIGN_EXCLUDED = /* @__PURE__ */ new Set(["@vitest/eslint-plugin", "@vitest/coverage-c8"]);
19
+ function isAlignableVitestEcosystemPackage(name) {
20
+ return name.startsWith("@vitest/") && !VITEST_ALIGN_EXCLUDED.has(name);
21
+ }
22
+ //#endregion
23
+ export { extractOverrideTargetName as n, isAlignableVitestEcosystemPackage as t };
@@ -15,6 +15,7 @@ We recommend turning `typeCheck` on so `vp check` becomes the single command for
15
15
  ```bash
16
16
  vp check
17
17
  vp check --fix # Format and run autofixers.
18
+ vp check --quiet # Hide lint warnings; still report and fail on errors.
18
19
  vp check --no-fmt # Skip format; run lint (and type-check if enabled).
19
20
  vp check --no-lint # Skip lint rules; keep type-check when enabled.
20
21
  vp check --no-fmt --no-lint # Type-check only (requires `typeCheck` enabled).
package/docs/guide/ci.md CHANGED
@@ -4,12 +4,17 @@ You can use `voidzero-dev/setup-vp` to use Vite+ in CI environments.
4
4
 
5
5
  ## Overview
6
6
 
7
- [`voidzero-dev/setup-vp`](https://github.com/voidzero-dev/setup-vp) provides integrations for GitHub Actions and GitLab CI/CD. Both install Vite+ and can install project dependencies. The GitHub Action can also set up Node.js and cache package manager data automatically, while the GitLab CI/CD template uses the Node.js runtime and cache configuration provided by the job.
7
+ [`voidzero-dev/setup-vp`](https://github.com/voidzero-dev/setup-vp) provides integrations for GitHub Actions, GitLab CI/CD, and Azure Pipelines. All three install Vite+ and can install project dependencies. The GitHub Action and Azure Pipelines template can also set up Node.js and cache package manager data automatically, while the GitLab CI/CD template uses the Node.js runtime and cache configuration provided by the job.
8
8
 
9
9
  ## setup-vp Versioning
10
10
 
11
11
  Set `<setup-vp-version>` in each example to an exact version from the [`setup-vp` releases page](https://github.com/voidzero-dev/setup-vp/releases). You can use a commit SHA instead. Do not use the `v1` tag. The `v1` tag no longer receives updates.
12
12
 
13
+ Run `vp migrate` to replace exact `voidzero-dev/setup-vp@v1` references in
14
+ GitHub Actions workflows and composite actions under `.github` with the latest
15
+ exact release known to your Vite+ version. Existing exact versions and commit
16
+ SHAs remain unchanged.
17
+
13
18
  ### Automatic Version Updates
14
19
 
15
20
  Dependabot and Renovate can update exact versions in GitHub Actions workflows.
@@ -35,7 +40,7 @@ When you use a commit SHA, add the exact release tag in a comment. Renovate uses
35
40
  - uses: voidzero-dev/setup-vp@<commit-sha> # <setup-vp-version>
36
41
  ```
37
42
 
38
- These settings apply only to GitHub Actions workflows. For GitLab CI/CD, update both version values together.
43
+ These settings apply only to GitHub Actions workflows. For GitLab CI/CD and Azure Pipelines, update both version values together.
39
44
 
40
45
  ## GitHub Actions
41
46
 
@@ -85,6 +90,41 @@ The GitLab CI/CD integration differs from the GitHub Action in a few ways:
85
90
 
86
91
  For advanced configuration and the complete input reference, see the [`setup-vp` GitLab CI/CD documentation](https://github.com/voidzero-dev/setup-vp#gitlab-cicd).
87
92
 
93
+ ## Azure Pipelines
94
+
95
+ Use the reusable `setup-vp` step template in your Azure Pipelines configuration. Create a GitHub service connection named `github`, then reference the template from the `setup-vp` repository:
96
+
97
+ ```yaml [azure-pipelines.yml]
98
+ resources:
99
+ repositories:
100
+ - repository: setupVp
101
+ type: github
102
+ endpoint: github
103
+ name: voidzero-dev/setup-vp
104
+ ref: refs/tags/<setup-vp-version>
105
+
106
+ pool:
107
+ vmImage: ubuntu-latest
108
+
109
+ steps:
110
+ - checkout: self
111
+ - template: azure/setup-vp.yml@setupVp
112
+ parameters:
113
+ setupRef: '<setup-vp-version>'
114
+ nodeVersion: 24.x
115
+ cache: true
116
+ runInstall: true
117
+ - script: vp check
118
+ - script: vp test
119
+ - script: vp build
120
+ ```
121
+
122
+ Pin `ref` and `setupRef` to the same tag or commit SHA for strict reproducibility.
123
+
124
+ The Azure Pipelines template supports Microsoft-hosted Linux, macOS, and Windows agents. It uses Azure's native `UseNode@1` and `Cache@2` tasks to set up Node.js and cache package-manager data.
125
+
126
+ For advanced configuration and the complete parameter reference, see the [`setup-vp` Azure Pipelines documentation](https://github.com/voidzero-dev/setup-vp#azure-pipelines).
127
+
88
128
  ## Simplifying Existing Workflows
89
129
 
90
130
  If you are migrating an existing GitHub Actions workflow, you can often replace large blocks of Node, package-manager, and cache setup with a single `setup-vp` step.