vite-plus 0.1.20-alpha.2 → 0.1.20-alpha.3

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.
@@ -4286,6 +4286,18 @@ function injectLintTypeCheckDefaults(projectPath, silent = false, report) {
4286
4286
  function injectFmtDefaults(projectPath, silent = false, report) {
4287
4287
  injectConfigDefaults(projectPath, "fmt", ".vite-plus-fmt-init.oxfmtrc.json", JSON.stringify({}), silent, report);
4288
4288
  }
4289
+ /**
4290
+ * Wire `create.defaultTemplate: '<scope>'` into the new monorepo's
4291
+ * `vite.config.ts`. The caller is `bin.ts`, only when scaffolding a
4292
+ * monorepo from a bundled `@org` manifest entry — that's the case where
4293
+ * the user just picked a template from a specific org and naturally
4294
+ * wants subsequent `vp create` invocations from the workspace to default
4295
+ * to that same org's picker.
4296
+ */
4297
+ function injectCreateDefaultTemplate(projectPath, scope, silent = false, report) {
4298
+ if (!scope) return;
4299
+ injectConfigDefaults(projectPath, "create", ".vite-plus-create-init.json", JSON.stringify({ defaultTemplate: scope }), silent, report);
4300
+ }
4289
4301
  function injectConfigDefaults(projectPath, configKey, tempFileName, tempFileContent, silent, report) {
4290
4302
  const configs = detectConfigs(projectPath);
4291
4303
  if (configs.viteConfig) {
@@ -5120,4 +5132,4 @@ function getMarkedRange(content, startMarker, endMarker) {
5120
5132
  };
5121
5133
  }
5122
5134
  //#endregion
5123
- export { outro as $, warnLegacyEslintConfig as A, runViteInstall as B, preflightGitHooksSetup as C, rewriteMonorepoProject as D, rewriteMonorepo as E, cancelAndExit as F, DependencyType as G, upgradeYarn as H, defaultInteractive as I, cancel as J, PackageManager as K, downloadPackageManager$1 as L, warnPackageLevelPrettier as M, editYamlFile as N, rewriteStandaloneProject as O, readYamlFile as P, multiselect as Q, promptGitHooks as R, migratePrettierToOxfmt as S, promptPrettierMigration as T, displayRelative as U, selectPackageManager as V, templatesDir as W, intro as X, confirm as Y, log as Z, hasStagedConfigInViteConfig as _, writeAgentInstructions as a, migrateEslintToOxlint as b, checkVitestVersion as c, detectEslintProject as d, select as et, detectFramework as f, hasFrameworkShim as g, ensurePreCommitHook as h, updateExistingAgentInstructions as i, q as it, warnPackageLevelEslint as j, setPackageManager as k, confirmEslintMigration as l, detectPrettierProject as m, detectExistingAgentTargetPaths as n, text as nt, addFrameworkShim as o, detectNodeVersionManagerFile as p, require_semver as q, selectAgentTargetPaths as r, require_picocolors as rt, checkViteVersion as s, detectAgentConflicts as t, spinner as tt, confirmPrettierMigration as u, installGitHooks as v, promptEslintMigration as w, migrateNodeVersionManagerFile as x, mergeViteConfigFiles as y, runViteFmt as z };
5135
+ export { multiselect as $, setPackageManager as A, runViteFmt as B, migratePrettierToOxfmt as C, rewriteMonorepo as D, promptPrettierMigration as E, readYamlFile as F, templatesDir as G, selectPackageManager as H, cancelAndExit as I, require_semver as J, DependencyType as K, defaultInteractive as L, warnPackageLevelEslint as M, warnPackageLevelPrettier as N, rewriteMonorepoProject as O, editYamlFile as P, log as Q, downloadPackageManager$1 as R, migrateNodeVersionManagerFile as S, promptEslintMigration as T, upgradeYarn as U, runViteInstall as V, displayRelative as W, confirm as X, cancel as Y, intro as Z, hasStagedConfigInViteConfig as _, writeAgentInstructions as a, q as at, mergeViteConfigFiles as b, checkVitestVersion as c, detectEslintProject as d, outro as et, detectFramework as f, hasFrameworkShim as g, ensurePreCommitHook as h, updateExistingAgentInstructions as i, require_picocolors as it, warnLegacyEslintConfig as j, rewriteStandaloneProject as k, confirmEslintMigration as l, detectPrettierProject as m, detectExistingAgentTargetPaths as n, spinner as nt, addFrameworkShim as o, detectNodeVersionManagerFile as p, PackageManager as q, selectAgentTargetPaths as r, text as rt, checkViteVersion as s, detectAgentConflicts as t, select as tt, confirmPrettierMigration as u, injectCreateDefaultTemplate as v, preflightGitHooksSetup as w, migrateEslintToOxlint as x, installGitHooks as y, promptGitHooks as z };
@@ -1,5 +1,5 @@
1
1
  import { a as printHeader, r as log } from "../terminal-CxTMfsxZ.js";
2
- import { I as defaultInteractive, R as promptGitHooks, _ as hasStagedConfigInViteConfig, h as ensurePreCommitHook, i as updateExistingAgentInstructions } from "../agent-B8Iy9rtN.js";
2
+ import { L as defaultInteractive, _ as hasStagedConfigInViteConfig, h as ensurePreCommitHook, i as updateExistingAgentInstructions, z as promptGitHooks } from "../agent-C8Me6C5u.js";
3
3
  import { t as lib_default } from "../lib-BamM40b7.js";
4
4
  import { t as renderCliDoc } from "../help-BtkjXtRM.js";
5
5
  import { join } from "node:path";
@@ -2,10 +2,10 @@ import { r as __toESM, t as __commonJSMin } from "../chunk-q7NCDQ7-.js";
2
2
  import { a as require_cross_spawn } from "../tsconfig-DQTf06oN.js";
3
3
  import { a as printHeader, i as muted, o as success, r as log, t as accent } from "../terminal-CxTMfsxZ.js";
4
4
  import { i as resolveViteConfig, n as hasViteConfig, t as findWorkspaceRoot } from "../resolve-vite-config-C1KX9CZU.js";
5
- import { B as runViteInstall, D as rewriteMonorepoProject, E as rewriteMonorepo, G as DependencyType, I as defaultInteractive, J as cancel, K as PackageManager, L as downloadPackageManager$1, O as rewriteStandaloneProject, Q as multiselect, R as promptGitHooks, T as promptPrettierMigration, U as displayRelative, V as selectPackageManager, W as templatesDir, X as intro, Y as confirm, Z as log$1, a as writeAgentInstructions, d as detectEslintProject, et as select, f as detectFramework, g as hasFrameworkShim, it as q, k as setPackageManager, m as detectPrettierProject, n as detectExistingAgentTargetPaths, nt as text, o as addFrameworkShim, r as selectAgentTargetPaths, rt as require_picocolors, tt as spinner, v as installGitHooks, w as promptEslintMigration, z as runViteFmt } from "../agent-B8Iy9rtN.js";
5
+ import { $ as multiselect, A as setPackageManager, B as runViteFmt, D as rewriteMonorepo, E as promptPrettierMigration, G as templatesDir, H as selectPackageManager, K as DependencyType, L as defaultInteractive, O as rewriteMonorepoProject, Q as log$1, R as downloadPackageManager$1, T as promptEslintMigration, V as runViteInstall, W as displayRelative, X as confirm, Y as cancel, Z as intro, a as writeAgentInstructions, at as q, d as detectEslintProject, f as detectFramework, g as hasFrameworkShim, it as require_picocolors, k as rewriteStandaloneProject, m as detectPrettierProject, n as detectExistingAgentTargetPaths, nt as spinner, o as addFrameworkShim, q as PackageManager, r as selectAgentTargetPaths, rt as text, tt as select, v as injectCreateDefaultTemplate, y as installGitHooks, z as promptGitHooks } from "../agent-C8Me6C5u.js";
6
6
  import { t as lib_default } from "../lib-BamM40b7.js";
7
7
  import { c as editJsonFile, o as fetchNpmResource, s as getNpmRegistry, t as checkNpmPackageExists, u as readJsonFile } from "../package-CrKanQYM.js";
8
- import { a as detectExistingEditors, c as writeEditorConfigs, n as updatePackageJsonWithDeps, r as updateWorkspaceConfig, s as selectEditors, t as detectWorkspace$1 } from "../workspace-DKef4Mgk.js";
8
+ import { a as detectExistingEditors, c as writeEditorConfigs, n as updatePackageJsonWithDeps, r as updateWorkspaceConfig, s as selectEditors, t as detectWorkspace$1 } from "../workspace-Du9O0xar.js";
9
9
  import { t as renderCliDoc } from "../help-BtkjXtRM.js";
10
10
  import path from "node:path";
11
11
  import { runCommand, vitePlusHeader } from "../../binding/index.js";
@@ -13,7 +13,7 @@ import fs from "node:fs";
13
13
  import { styleText } from "node:util";
14
14
  import os from "node:os";
15
15
  import fsPromises from "node:fs/promises";
16
- import { createHash } from "node:crypto";
16
+ import { createHash, randomUUID } from "node:crypto";
17
17
  import assert from "node:assert";
18
18
  //#region src/create/command.ts
19
19
  var import_cross_spawn = /* @__PURE__ */ __toESM(require_cross_spawn(), 1);
@@ -368,13 +368,9 @@ function validateEntry(entry, index, packageName) {
368
368
  return value;
369
369
  };
370
370
  const name = requireString("name");
371
+ if (name.startsWith("__vp_")) throw new OrgManifestSchemaError(`createConfig.templates[${index}].name uses the reserved \`__vp_\` prefix`, packageName);
371
372
  const description = requireString("description");
372
373
  const template = requireString("template");
373
- let keywords;
374
- if (raw.keywords !== void 0) {
375
- if (!Array.isArray(raw.keywords) || raw.keywords.some((k) => typeof k !== "string")) throw new OrgManifestSchemaError(`createConfig.templates[${index}].keywords must be an array of strings`, packageName);
376
- keywords = raw.keywords;
377
- }
378
374
  let monorepo;
379
375
  if (raw.monorepo !== void 0) {
380
376
  if (typeof raw.monorepo !== "boolean") throw new OrgManifestSchemaError(`createConfig.templates[${index}].monorepo must be a boolean`, packageName);
@@ -388,7 +384,6 @@ function validateEntry(entry, index, packageName) {
388
384
  name,
389
385
  description,
390
386
  template,
391
- ...keywords !== void 0 ? { keywords } : {},
392
387
  ...monorepo !== void 0 ? { monorepo } : {}
393
388
  };
394
389
  }
@@ -472,9 +467,9 @@ function filterManifestForContext(templates, isMonorepo) {
472
467
  }
473
468
  //#endregion
474
469
  //#region src/create/org-picker.ts
475
- const BUILTIN_ESCAPE_VALUE = "__vp_builtin_escape__";
476
470
  const ORG_PICKER_CANCEL = Symbol("org-picker-cancel");
477
471
  const ORG_PICKER_BUILTIN_ESCAPE = Symbol("org-picker-builtin-escape");
472
+ const ESCAPE_HATCH = Symbol("builtin-escape");
478
473
  /**
479
474
  * Render the interactive picker for an org manifest. Always appends a
480
475
  * trailing "Vite+ built-in templates" escape-hatch entry.
@@ -488,14 +483,20 @@ const ORG_PICKER_BUILTIN_ESCAPE = Symbol("org-picker-builtin-escape");
488
483
  async function pickOrgTemplate(manifest, opts) {
489
484
  const filtered = filterManifestForContext(manifest.templates, opts.isMonorepo);
490
485
  if (filtered.length === 0) return ORG_PICKER_BUILTIN_ESCAPE;
491
- const options = filtered.map((entry) => ({
492
- value: entry.name,
493
- label: entry.name,
494
- hint: entry.description
495
- }));
486
+ const escapeValue = `__vp_builtin_escape__::${randomUUID()}`;
487
+ const lookup = /* @__PURE__ */ new Map();
488
+ const options = filtered.map((entry) => {
489
+ lookup.set(entry.name, entry);
490
+ return {
491
+ value: entry.name,
492
+ label: entry.name,
493
+ hint: entry.description
494
+ };
495
+ });
496
+ lookup.set(escapeValue, ESCAPE_HATCH);
496
497
  const builtinHint = opts.isMonorepo ? "Use defaults (application / library)" : "Use defaults (monorepo / application / library)";
497
498
  options.push({
498
- value: BUILTIN_ESCAPE_VALUE,
499
+ value: escapeValue,
499
500
  label: "Vite+ built-in templates",
500
501
  hint: builtinHint
501
502
  });
@@ -504,12 +505,12 @@ async function pickOrgTemplate(manifest, opts) {
504
505
  options
505
506
  });
506
507
  if (q(picked)) return ORG_PICKER_CANCEL;
507
- if (picked === BUILTIN_ESCAPE_VALUE) return ORG_PICKER_BUILTIN_ESCAPE;
508
- const entry = filtered.find((candidate) => candidate.name === picked);
509
- if (!entry) return ORG_PICKER_CANCEL;
508
+ const found = lookup.get(picked);
509
+ if (found === ESCAPE_HATCH) return ORG_PICKER_BUILTIN_ESCAPE;
510
+ if (!found) throw new Error(`org-picker: prompts.select returned an unregistered value: ${picked}`);
510
511
  return {
511
512
  kind: "entry",
512
- entry
513
+ entry: found
513
514
  };
514
515
  }
515
516
  /**
@@ -685,8 +686,25 @@ function getCacheRoot() {
685
686
  const home = process.env.VP_HOME || path.join(os.homedir(), ".vite-plus");
686
687
  return path.join(home, "tmp", "create-org");
687
688
  }
689
+ /**
690
+ * Replace characters that are illegal in Windows path segments
691
+ * (`\ / : * ? " < > |` plus the IPv6 bracket pair `[ ]`). The host
692
+ * comes from `new URL(...).host` which can carry a port (`:4873`) or
693
+ * IPv6 literal (`[::1]`); both end up in the cache path otherwise.
694
+ */
695
+ function sanitizeHostForPath(host) {
696
+ return host.replaceAll(/[\\/:*?"<>|[\]]/g, "_");
697
+ }
698
+ /**
699
+ * Cache extracted tarballs under `<host>/<scope>/create/<version>` so two
700
+ * repos resolving the same `<scope>@<version>` through different registries
701
+ * (via `.npmrc` scope mappings) don't share a cache slot. The registry
702
+ * guarantees `manifest.tarballUrl` is a valid URL, so any parse failure
703
+ * here is a real bug worth surfacing.
704
+ */
688
705
  function getExtractionDir(manifest) {
689
- return path.join(getCacheRoot(), manifest.scope, "create", manifest.version);
706
+ const { host } = new URL(manifest.tarballUrl);
707
+ return path.join(getCacheRoot(), sanitizeHostForPath(host), manifest.scope, "create", manifest.version);
690
708
  }
691
709
  function parseIntegrity(integrity) {
692
710
  const match = integrity.split(/\s+/)[0].match(/^(sha\d+)-(.+)$/);
@@ -3830,6 +3848,24 @@ function setPackageName(projectDir, packageName) {
3830
3848
  return pkg;
3831
3849
  });
3832
3850
  }
3851
+ /**
3852
+ * Make sure the scaffolded project's `.gitignore` excludes `node_modules`.
3853
+ *
3854
+ * Called right after `git init` so even bundled `@org` templates (which
3855
+ * may ship without a `.gitignore`) don't end up tracking installed
3856
+ * dependencies on the user's first commit. No-op when an existing
3857
+ * `.gitignore` already lists `node_modules`.
3858
+ */
3859
+ function ensureGitignoreNodeModules(projectDir) {
3860
+ const gitignorePath = path.join(projectDir, ".gitignore");
3861
+ let content = "";
3862
+ try {
3863
+ content = fs.readFileSync(gitignorePath, "utf-8");
3864
+ } catch {}
3865
+ if (/^\s*node_modules\/?\s*$/m.test(content)) return;
3866
+ const prefix = content === "" || content.endsWith("\n") ? "" : "\n";
3867
+ fs.appendFileSync(gitignorePath, `${prefix}node_modules\n`);
3868
+ }
3833
3869
  function formatDisplayTargetDir(targetDir) {
3834
3870
  const normalized = targetDir.split(path.sep).join("/");
3835
3871
  if (normalized === "" || normalized === ".") return "./";
@@ -4000,6 +4036,7 @@ async function resolveEntry(manifest, entry) {
4000
4036
  kind: "bundled",
4001
4037
  bundledLocalPath: resolveBundledPath(await ensureOrgPackageExtracted(manifest), entry.template),
4002
4038
  entryName: entry.name,
4039
+ scope: manifest.scope,
4003
4040
  ...entry.monorepo === true ? { monorepo: true } : {}
4004
4041
  };
4005
4042
  return {
@@ -4053,13 +4090,13 @@ async function resolveOrgManifestForCreate(args) {
4053
4090
  return resolveEntry(manifest, entry);
4054
4091
  }
4055
4092
  /**
4056
- * Read `create.defaultTemplate` from the workspace/repo root's
4057
- * `vite.config.ts`.
4093
+ * Read `create.defaultTemplate` from the workspace root's `vite.config.ts`.
4058
4094
  *
4059
- * Walks up from `startDir` to find the nearest project root (monorepo
4060
- * marker or `.git` directory) and reads the config from there, so
4061
- * `vp create` picks up the configured default regardless of which
4062
- * subdirectory the command is invoked from.
4095
+ * Walks up from `startDir` via `findWorkspaceRoot` (monorepo markers
4096
+ * only `pnpm-workspace.yaml`, `workspaces` in `package.json`,
4097
+ * `lerna.json`) so monorepo invocations from any subdirectory still
4098
+ * pick up the root config. Standalone repos without a monorepo marker
4099
+ * only see a config that sits at `startDir` itself.
4063
4100
  *
4064
4101
  * Best-effort: if there's no config file or evaluation fails, return
4065
4102
  * `undefined` so the create flow behaves as if no default was set.
@@ -4247,22 +4284,11 @@ async function executeBundledTemplate(workspaceInfo, templateInfo) {
4247
4284
  //#endregion
4248
4285
  //#region src/create/templates/monorepo.ts
4249
4286
  const InitialMonorepoAppDir = "apps/website";
4250
- async function executeMonorepoTemplate(workspaceInfo, templateInfo, interactive, options) {
4287
+ async function executeMonorepoTemplate(workspaceInfo, templateInfo, options) {
4251
4288
  assert(templateInfo.packageName, "packageName is required");
4252
4289
  assert(templateInfo.targetDir, "targetDir is required");
4253
4290
  workspaceInfo.monorepoScope = getScopeFromPackageName(templateInfo.packageName);
4254
4291
  const fullPath = path.join(workspaceInfo.rootDir, templateInfo.targetDir);
4255
- let initGit = true;
4256
- if (interactive && !options?.silent) {
4257
- const selected = await confirm({
4258
- message: `Initialize git repository:`,
4259
- initialValue: true
4260
- });
4261
- if (q(selected)) {
4262
- log$1.info("Operation cancelled. Skipping git initialization");
4263
- initGit = false;
4264
- } else initGit = selected;
4265
- } else if (!options?.silent) log$1.info(`Initializing git repository (default: yes)`);
4266
4292
  if (!options?.silent) {
4267
4293
  log$1.info(`Target directory: ${formatDisplayTargetDir(templateInfo.targetDir)}`);
4268
4294
  log$1.step("Creating Vite+ monorepo...");
@@ -4299,18 +4325,6 @@ async function executeMonorepoTemplate(workspaceInfo, templateInfo, interactive,
4299
4325
  if (fs.existsSync(yarnrcPath)) fs.unlinkSync(yarnrcPath);
4300
4326
  }
4301
4327
  if (!options?.silent) log$1.success("Monorepo template created");
4302
- if (initGit) {
4303
- const gitResult = import_cross_spawn.default.sync("git", ["init"], {
4304
- stdio: "pipe",
4305
- cwd: fullPath
4306
- });
4307
- if (gitResult.status === 0) {
4308
- if (!options?.silent) log$1.success("Git repository initialized");
4309
- } else {
4310
- log$1.warn("Failed to initialize git repository");
4311
- if (gitResult.stderr) log$1.info(gitResult.stderr.toString());
4312
- }
4313
- }
4314
4328
  if (!options?.silent) log$1.step("Creating default application in apps/website...");
4315
4329
  const appResult = await runRemoteTemplateCommand(workspaceInfo, fullPath, discoverTemplate("create-vite@latest", [
4316
4330
  InitialMonorepoAppDir,
@@ -4664,9 +4678,7 @@ async function main() {
4664
4678
  let selectedParentDir;
4665
4679
  let remoteTargetDir;
4666
4680
  let shouldSetupHooks = false;
4667
- let bundledLocalPath;
4668
- let bundledEntryName;
4669
- let isBundledMonorepo = false;
4681
+ let bundled;
4670
4682
  let skipShorthandExpansion = false;
4671
4683
  const installArgs = process.env.CI ? ["--no-frozen-lockfile"] : void 0;
4672
4684
  if (!selectedTemplateName) {
@@ -4682,11 +4694,8 @@ async function main() {
4682
4694
  if (resolved.kind === "replaced") {
4683
4695
  selectedTemplateName = resolved.templateName;
4684
4696
  skipShorthandExpansion = true;
4685
- } else if (resolved.kind === "bundled") {
4686
- bundledLocalPath = resolved.bundledLocalPath;
4687
- bundledEntryName = resolved.entryName;
4688
- isBundledMonorepo = resolved.monorepo === true;
4689
- } else if (resolved.kind === "escape-hatch") selectedTemplateName = "";
4697
+ } else if (resolved.kind === "bundled") bundled = resolved;
4698
+ else if (resolved.kind === "escape-hatch") selectedTemplateName = "";
4690
4699
  }
4691
4700
  if (!selectedTemplateName && !options.interactive) {
4692
4701
  console.error(`
@@ -4711,7 +4720,8 @@ Use \`vp create --list\` to list all available templates, or run \`vp create --h
4711
4720
  selectedTemplateName = template;
4712
4721
  }
4713
4722
  const isBuiltinTemplate = selectedTemplateName.startsWith("vite:");
4714
- const isBundledTemplate = bundledLocalPath !== void 0;
4723
+ const isBundledTemplate = bundled !== void 0;
4724
+ const isBundledMonorepo = bundled?.monorepo === true;
4715
4725
  const isDirectScaffoldTemplate = isBuiltinTemplate || isBundledTemplate;
4716
4726
  if (!isDirectScaffoldTemplate) compactOutput = false;
4717
4727
  if (targetDir && !isDirectScaffoldTemplate) cancelAndExit("The --directory option is only available for builtin and bundled @org templates", 1);
@@ -4776,7 +4786,7 @@ Use \`vp create --list\` to list all available templates, or run \`vp create --h
4776
4786
  remoteTargetDir = await promptTargetDir(defaultTargetDir, options.interactive, { cwd: remoteTargetBaseDir });
4777
4787
  selectedTemplateArgs = [remoteTargetDir, ...selectedTemplateArgs];
4778
4788
  }
4779
- const directScaffoldFallbackName = isBundledTemplate ? `vite-plus-${bundledEntryName}` : selectedTemplateName === BuiltinTemplate.monorepo ? "vite-plus-monorepo" : `vite-plus-${selectedTemplateName.split(":")[1]}`;
4789
+ const directScaffoldFallbackName = bundled ? `vite-plus-${bundled.entryName}` : selectedTemplateName === BuiltinTemplate.monorepo ? "vite-plus-monorepo" : `vite-plus-${selectedTemplateName.split(":")[1]}`;
4780
4790
  if (isDirectScaffoldTemplate && (!targetDir || targetDir === ".")) if (targetDir === ".") {
4781
4791
  packageName = deriveDefaultPackageName(cwd, workspaceInfoOptional.monorepoScope, directScaffoldFallbackName);
4782
4792
  if (isMonorepo) {
@@ -4861,7 +4871,7 @@ Use \`vp create --list\` to list all available templates, or run \`vp create --h
4861
4871
  }
4862
4872
  };
4863
4873
  updateCreateProgress("Scaffolding project");
4864
- const templateInfo = discoverTemplate(selectedTemplateName, selectedTemplateArgs, workspaceInfo, options.interactive, bundledLocalPath, skipShorthandExpansion);
4874
+ const templateInfo = discoverTemplate(selectedTemplateName, selectedTemplateArgs, workspaceInfo, options.interactive, bundled?.bundledLocalPath, skipShorthandExpansion);
4865
4875
  if (selectedParentDir) templateInfo.parentDir = selectedParentDir;
4866
4876
  if (targetDir) templateInfo.parentDir = void 0;
4867
4877
  if (remoteTargetDir) {
@@ -4871,6 +4881,19 @@ Use \`vp create --list\` to list all available templates, or run \`vp create --h
4871
4881
  resumeCreateProgress();
4872
4882
  }
4873
4883
  if (templateInfo.command === BuiltinTemplate.monorepo || isBundledMonorepo) {
4884
+ let shouldInitGit = true;
4885
+ if (options.interactive && !compactOutput) {
4886
+ pauseCreateProgress();
4887
+ const selected = await confirm({
4888
+ message: "Initialize git repository:",
4889
+ initialValue: true
4890
+ });
4891
+ resumeCreateProgress();
4892
+ if (q(selected)) {
4893
+ log$1.info("Operation cancelled. Skipping git initialization");
4894
+ shouldInitGit = false;
4895
+ } else shouldInitGit = selected;
4896
+ } else if (!compactOutput) log$1.info("Initializing git repository (default: yes)");
4874
4897
  updateCreateProgress("Creating monorepo");
4875
4898
  await checkProjectDirExists(path.join(workspaceInfo.rootDir, targetDir), options.interactive);
4876
4899
  const result = isBundledMonorepo ? await executeBundledTemplate(workspaceInfo, {
@@ -4881,13 +4904,26 @@ Use \`vp create --list\` to list all available templates, or run \`vp create --h
4881
4904
  ...templateInfo,
4882
4905
  packageName,
4883
4906
  targetDir
4884
- }, options.interactive, { silent: compactOutput });
4907
+ }, { silent: compactOutput });
4885
4908
  const { projectDir } = result;
4886
4909
  if (result.exitCode !== 0 || !projectDir) {
4887
4910
  failCreateProgress("Scaffolding failed");
4888
4911
  cancelAndExit(`Failed to create monorepo, exit code: ${result.exitCode}`, result.exitCode);
4889
4912
  }
4890
4913
  const fullPath = path.join(workspaceInfo.rootDir, projectDir);
4914
+ if (shouldInitGit) {
4915
+ const gitResult = import_cross_spawn.default.sync("git", ["init"], {
4916
+ stdio: "pipe",
4917
+ cwd: fullPath
4918
+ });
4919
+ if (gitResult.status === 0) {
4920
+ if (!compactOutput) log$1.success("Git repository initialized");
4921
+ ensureGitignoreNodeModules(fullPath);
4922
+ } else {
4923
+ log$1.warn("Failed to initialize git repository");
4924
+ if (gitResult.stderr) log$1.info(gitResult.stderr.toString());
4925
+ }
4926
+ }
4891
4927
  updateCreateProgress("Writing agent instructions");
4892
4928
  pauseCreateProgress();
4893
4929
  await writeAgentInstructions({
@@ -4910,6 +4946,7 @@ Use \`vp create --list\` to list all available templates, or run \`vp create --h
4910
4946
  workspaceInfo.rootDir = fullPath;
4911
4947
  updateCreateProgress("Integrating monorepo");
4912
4948
  rewriteMonorepo(workspaceInfo, void 0, compactOutput);
4949
+ if (bundled?.monorepo) injectCreateDefaultTemplate(fullPath, bundled.scope, compactOutput);
4913
4950
  if (shouldSetupHooks) installGitHooks(fullPath, compactOutput);
4914
4951
  updateCreateProgress("Installing dependencies");
4915
4952
  const installSummary = await runViteInstall(fullPath, options.interactive, installArgs, { silent: compactOutput });
@@ -1,11 +1,11 @@
1
1
  import { r as __toESM } from "../chunk-q7NCDQ7-.js";
2
2
  import { l as isForceOverrideMode } from "../main-A6UrSTYb.js";
3
3
  import { a as printHeader, i as muted, r as log, t as accent } from "../terminal-CxTMfsxZ.js";
4
- import { $ as outro, A as warnLegacyEslintConfig, B as runViteInstall, C as preflightGitHooksSetup, E as rewriteMonorepo, F as cancelAndExit, H as upgradeYarn, I as defaultInteractive, K as PackageManager, L as downloadPackageManager, M as warnPackageLevelPrettier, O as rewriteStandaloneProject, R as promptGitHooks, S as migratePrettierToOxfmt, T as promptPrettierMigration, U as displayRelative, V as selectPackageManager, Y as confirm, Z as log$1, a as writeAgentInstructions, b as migrateEslintToOxlint, c as checkVitestVersion, d as detectEslintProject, et as select, f as detectFramework, g as hasFrameworkShim, it as q, j as warnPackageLevelEslint, l as confirmEslintMigration, m as detectPrettierProject, n as detectExistingAgentTargetPaths, o as addFrameworkShim, p as detectNodeVersionManagerFile, q as require_semver, r as selectAgentTargetPaths, s as checkViteVersion, t as detectAgentConflicts, tt as spinner, u as confirmPrettierMigration, v as installGitHooks, w as promptEslintMigration, x as migrateNodeVersionManagerFile, y as mergeViteConfigFiles } from "../agent-B8Iy9rtN.js";
4
+ import { C as migratePrettierToOxfmt, D as rewriteMonorepo, E as promptPrettierMigration, H as selectPackageManager, I as cancelAndExit, J as require_semver, L as defaultInteractive, M as warnPackageLevelEslint, N as warnPackageLevelPrettier, Q as log$1, R as downloadPackageManager, S as migrateNodeVersionManagerFile, T as promptEslintMigration, U as upgradeYarn, V as runViteInstall, W as displayRelative, X as confirm, a as writeAgentInstructions, at as q, b as mergeViteConfigFiles, c as checkVitestVersion, d as detectEslintProject, et as outro, f as detectFramework, g as hasFrameworkShim, j as warnLegacyEslintConfig, k as rewriteStandaloneProject, l as confirmEslintMigration, m as detectPrettierProject, n as detectExistingAgentTargetPaths, nt as spinner, o as addFrameworkShim, p as detectNodeVersionManagerFile, q as PackageManager, r as selectAgentTargetPaths, s as checkViteVersion, t as detectAgentConflicts, tt as select, u as confirmPrettierMigration, w as preflightGitHooksSetup, x as migrateEslintToOxlint, y as installGitHooks, z as promptGitHooks } from "../agent-C8Me6C5u.js";
5
5
  import { t as lib_default } from "../lib-BamM40b7.js";
6
6
  import { a as readNearestPackageJson, i as hasVitePlusDependency } from "../package-CrKanQYM.js";
7
7
  import { r as createMigrationReport } from "../report-DbrfjWiP.js";
8
- import { c as writeEditorConfigs, i as detectEditorConflicts, o as selectEditor, t as detectWorkspace } from "../workspace-DKef4Mgk.js";
8
+ import { c as writeEditorConfigs, i as detectEditorConflicts, o as selectEditor, t as detectWorkspace } from "../workspace-Du9O0xar.js";
9
9
  import { t as renderCliDoc } from "../help-BtkjXtRM.js";
10
10
  import path from "node:path";
11
11
  import { styleText } from "node:util";
@@ -22,7 +22,7 @@ import { format } from "util";
22
22
  import { EOL as EOL$1 } from "os";
23
23
  import { StringDecoder } from "string_decoder";
24
24
  import { Writable as Writable$1 } from "stream";
25
- import { randomUUID } from "crypto";
25
+ import { randomUUID as randomUUID$1 } from "crypto";
26
26
  //#region ../../node_modules/.pnpm/lint-staged@16.4.0/node_modules/lint-staged/lib/colors.js
27
27
  /**
28
28
  * @example NO_COLOR
@@ -2659,7 +2659,7 @@ var ListrTaskEventManager = class extends EventManager {};
2659
2659
  */
2660
2660
  var Task = class extends ListrTaskEventManager {
2661
2661
  /** Unique id per task, can be used for identifying a Task. */
2662
- id = randomUUID();
2662
+ id = randomUUID$1();
2663
2663
  /** The current state of the task. */
2664
2664
  state = ListrTaskState.WAITING;
2665
2665
  /** Subtasks of the current task. */
package/dist/versions.js CHANGED
@@ -5,5 +5,5 @@ export const versions = {
5
5
  "vitest": "4.1.5",
6
6
  "oxlint": "1.61.0",
7
7
  "oxfmt": "0.46.0",
8
- "oxlint-tsgolint": "0.21.1"
8
+ "oxlint-tsgolint": "0.22.0"
9
9
  };
@@ -1,4 +1,4 @@
1
- import { K as PackageManager, N as editYamlFile, P as readYamlFile, Q as multiselect, Z as log, et as select, it as q } from "./agent-B8Iy9rtN.js";
1
+ import { $ as multiselect, F as readYamlFile, P as editYamlFile, Q as log, at as q, q as PackageManager, tt as select } from "./agent-C8Me6C5u.js";
2
2
  import { t as require_dist } from "./dist-DjG9AYbK.js";
3
3
  import { c as editJsonFile, d as writeJsonFile, r as getScopeFromPackageName, u as readJsonFile } from "./package-CrKanQYM.js";
4
4
  import path, { posix, win32 } from "node:path";
@@ -30,7 +30,7 @@ vp check --no-fmt --no-lint # Type-check only (requires `typeCheck` enabled).
30
30
 
31
31
  Recommended base `lint` config:
32
32
 
33
- ```ts
33
+ ```ts [vite.config.ts]
34
34
  import { defineConfig } from 'vite-plus';
35
35
 
36
36
  export default defineConfig({
@@ -38,7 +38,7 @@ vp staged --fail-on-changes
38
38
 
39
39
  Define staged-file checks in the `staged` block in `vite.config.ts`:
40
40
 
41
- ```ts
41
+ ```ts [vite.config.ts]
42
42
  import { defineConfig } from 'vite-plus';
43
43
 
44
44
  export default defineConfig({
@@ -160,8 +160,7 @@ The manifest lives at `createConfig.templates` in `@org/create`'s `package.json`
160
160
  {
161
161
  "name": "web",
162
162
  "description": "Web app template (Vite + React)",
163
- "template": "@your-org/template-web",
164
- "keywords": ["web", "react", "app"]
163
+ "template": "@your-org/template-web"
165
164
  },
166
165
  {
167
166
  "name": "demo",
@@ -180,7 +179,6 @@ Each entry supports:
180
179
  | `name` | yes | Kebab-case identifier. Used by `vp create @org:<name>` for direct selection. Must be unique within the array. |
181
180
  | `description` | yes | One-line description shown in the picker. |
182
181
  | `template` | yes | An npm specifier (`@org/template-foo`, optionally `@version`), a GitHub URL (`github:user/repo`), a `vite:*` builtin, a local workspace package name, or a relative path (`./templates/foo`) that resolves against the `@org/create` root. |
183
- | `keywords` | no | Filter terms for picker search. |
184
182
  | `monorepo` | no | If `true`, marks this entry as a monorepo-creating template. Hidden from the picker when `vp create` runs inside an existing monorepo, mirroring the built-in `vite:monorepo` filter. |
185
183
 
186
184
  An invalid manifest is a hard error, not a silent fall-through — a maintainer who shipped a manifest should hear about the offending field, e.g. `@your-org/create: createConfig.templates[2].template must be a non-empty string`.
package/docs/guide/fmt.md CHANGED
@@ -22,7 +22,7 @@ Put formatting configuration directly in the `fmt` block in `vite.config.ts` so
22
22
 
23
23
  For editors, point the formatter config path at `./vite.config.ts` so format-on-save uses the same `fmt` block:
24
24
 
25
- ```json
25
+ ```json [.vscode/settings.json]
26
26
  {
27
27
  "oxc.fmt.configPath": "./vite.config.ts"
28
28
  }
@@ -30,7 +30,7 @@ For editors, point the formatter config path at `./vite.config.ts` so format-on-
30
30
 
31
31
  For the upstream formatter behavior and configuration reference, see the [Oxfmt docs](https://oxc.rs/docs/guide/usage/formatter.html).
32
32
 
33
- ```ts
33
+ ```ts [vite.config.ts]
34
34
  import { defineConfig } from 'vite-plus';
35
35
 
36
36
  export default defineConfig({
@@ -13,17 +13,13 @@ When you create or migrate a project, Vite+ prompts whether you want editor conf
13
13
 
14
14
  You can also manually set up the VS Code config:
15
15
 
16
- `.vscode/extensions.json`
17
-
18
- ```json
16
+ ```json [.vscode/extensions.json]
19
17
  {
20
18
  "recommendations": ["VoidZero.vite-plus-extension-pack"]
21
19
  }
22
20
  ```
23
21
 
24
- `.vscode/settings.json`
25
-
26
- ```json
22
+ ```json [.vscode/settings.json]
27
23
  {
28
24
  "editor.defaultFormatter": "oxc.oxc-vscode",
29
25
  "oxc.fmt.configPath": "./vite.config.ts",
@@ -39,7 +35,7 @@ This gives the project a shared default formatter and enables Oxc-powered fix ac
39
35
 
40
36
  To let the VS Code NPM Scripts panel run scripts through `vp`, add the following to your `.vscode/settings.json`:
41
37
 
42
- ```json
38
+ ```json [.vscode/settings.json]
43
39
  {
44
40
  "npm.scriptRunner": "vp"
45
41
  }
@@ -55,9 +51,7 @@ When you create or migrate a project, Vite+ prompts you to choose whether you wa
55
51
 
56
52
  You can also manually set up the Zed config:
57
53
 
58
- `.zed/settings.json`
59
-
60
- ```json
54
+ ```json [.zed/settings.json]
61
55
  {
62
56
  "lsp": {
63
57
  "oxlint": {
@@ -22,7 +22,7 @@ Put lint configuration directly in the `lint` block in `vite.config.ts` so all y
22
22
 
23
23
  For the upstream rule set, options, and compatibility details, see the [Oxlint docs](https://oxc.rs/docs/guide/usage/linter.html).
24
24
 
25
- ```ts
25
+ ```ts [vite.config.ts]
26
26
  import { defineConfig } from 'vite-plus';
27
27
 
28
28
  export default defineConfig({
@@ -114,8 +114,7 @@ const { page } = await import('vite-plus/test/browser/context');
114
114
 
115
115
  If your project uses a `tsdown.config.ts`, move its options into the `pack` block in `vite.config.ts`:
116
116
 
117
- ```ts
118
- // before — tsdown.config.ts
117
+ ```ts [tsdown.config.ts] {4-6}
119
118
  import { defineConfig } from 'tsdown';
120
119
 
121
120
  export default defineConfig({
@@ -123,8 +122,9 @@ export default defineConfig({
123
122
  dts: true,
124
123
  format: ['esm', 'cjs'],
125
124
  });
125
+ ```
126
126
 
127
- // after — vite.config.ts
127
+ ```ts [vite.config.ts] {4-8}
128
128
  import { defineConfig } from 'vite-plus';
129
129
 
130
130
  export default defineConfig({
@@ -144,8 +144,7 @@ Vite+ replaces lint-staged with its own `staged` block in `vite.config.ts`. Only
144
144
 
145
145
  Move your lint-staged rules into the `staged` block:
146
146
 
147
- ```ts
148
- // vite.config.ts
147
+ ```ts [vite.config.ts]
149
148
  import { defineConfig } from 'vite-plus';
150
149
 
151
150
  export default defineConfig({
@@ -29,7 +29,7 @@ Use it for:
29
29
  - [watch mode](https://tsdown.dev/options/watch-mode)
30
30
  - [standalone executables](https://tsdown.dev/options/exe#executable)
31
31
 
32
- ```ts
32
+ ```ts [vite.config.ts]
33
33
  import { defineConfig } from 'vite-plus';
34
34
 
35
35
  export default defineConfig({
@@ -47,7 +47,7 @@ export default defineConfig({
47
47
 
48
48
  Use this when you want to ship a CLI or other Node-based tool as a native executable that runs without requiring Node.js to be installed separately.
49
49
 
50
- ```ts
50
+ ```ts [vite.config.ts]
51
51
  import { defineConfig } from 'vite-plus';
52
52
 
53
53
  export default defineConfig({
package/docs/guide/run.md CHANGED
@@ -71,7 +71,7 @@ $ node compile-legacy-app.js ✗ cache miss: 'legacy/index.js' modified, executi
71
71
 
72
72
  Vite Task automatically tracks which files your command uses. You can define tasks directly in `vite.config.ts` to enable caching by default or control which files and environment variables affect cache behavior.
73
73
 
74
- ```ts
74
+ ```ts [vite.config.ts]
75
75
  import { defineConfig } from 'vite-plus';
76
76
 
77
77
  export default defineConfig({
@@ -239,7 +239,7 @@ Flags also work inside nested scripts. For example, `vp run -r build` inside a s
239
239
  ::: info
240
240
  A common monorepo pattern is a root script that runs a task recursively:
241
241
 
242
- ```json [package.json (root)]
242
+ ```json [package.json (root) ~vscode-icons:file-type-node~]
243
243
  {
244
244
  "scripts": {
245
245
  "build": "vp run -r build"
@@ -22,7 +22,7 @@ Unlike Vitest on its own, `vp test` does not stay in watch mode by default. Use
22
22
 
23
23
  Put test configuration directly in the `test` block in `vite.config.ts` so all your configuration stays in one place. We do not recommend using `vitest.config.ts` with Vite+.
24
24
 
25
- ```ts
25
+ ```ts [vite.config.ts]
26
26
  import { defineConfig } from 'vite-plus';
27
27
 
28
28
  export default defineConfig({
package/docs/package.json CHANGED
@@ -12,6 +12,7 @@
12
12
  "mermaid": "^11.13.0",
13
13
  "reka-ui": "^2.7.0",
14
14
  "typewriter-effect": "^2.22.0",
15
+ "vitepress-plugin-group-icons": "^1.7.5",
15
16
  "vitepress-plugin-mermaid": "^2.0.17",
16
17
  "vue": "^3.5.27",
17
18
  "vue3-carousel": "^0.16.0"
@@ -20,6 +20,9 @@ importers:
20
20
  typewriter-effect:
21
21
  specifier: ^2.22.0
22
22
  version: 2.22.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
23
+ vitepress-plugin-group-icons:
24
+ specifier: ^1.7.5
25
+ version: 1.7.5(vite@7.3.1(jiti@2.6.1)(lightningcss@1.31.1))
23
26
  vitepress-plugin-mermaid:
24
27
  specifier: ^2.0.17
25
28
  version: 2.0.17(mermaid@11.13.0)(vitepress@2.0.0-alpha.15(jiti@2.6.1)(lightningcss@1.31.1)(oxc-minify@0.120.0)(postcss@8.5.8))
@@ -272,9 +275,15 @@ packages:
272
275
  '@floating-ui/vue@1.1.11':
273
276
  resolution: {integrity: sha512-HzHKCNVxnGS35r9fCHBc3+uCnjw9IWIlCPL683cGgM9Kgj2BiAl8x1mS7vtvP6F9S/e/q4O6MApwSHj8hNLGfw==}
274
277
 
278
+ '@iconify-json/logos@1.2.11':
279
+ resolution: {integrity: sha512-fOo4pGEatuyuCFNL+cwquYMa2Im0oJHRHV7lt/Qqs5Ode/lPImHCQcfTtPzZj7qYMPb/h8YHN3TG54uEowrjNQ==}
280
+
275
281
  '@iconify-json/simple-icons@1.2.74':
276
282
  resolution: {integrity: sha512-yqaohfY6jnYjTVpuTkaBQHrWbdUrQyWXhau0r/0EZiNWYXPX/P8WWwl1DoLH5CbvDjjcWQw5J0zADhgCUklOqA==}
277
283
 
284
+ '@iconify-json/vscode-icons@1.2.46':
285
+ resolution: {integrity: sha512-ZuLQscdXzGfUy1BtpNE74rNRjhNkcT/BLUbclQpY7aNLS2ByBuF9RzSjJQ1c0nqRyyInBFWmEL8DbTufw6w5Vw==}
286
+
278
287
  '@iconify/types@2.0.0':
279
288
  resolution: {integrity: sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==}
280
289
 
@@ -1641,6 +1650,14 @@ packages:
1641
1650
  yaml:
1642
1651
  optional: true
1643
1652
 
1653
+ vitepress-plugin-group-icons@1.7.5:
1654
+ resolution: {integrity: sha512-QzcroUuIiVKyXpmEiiHVbfRTQIy9Zbwxpk5JC/zavO8mavitwumz2RZWlwTchMCCHducYyPptkYvXvdnNUWkog==}
1655
+ peerDependencies:
1656
+ vite: '>=3'
1657
+ peerDependenciesMeta:
1658
+ vite:
1659
+ optional: true
1660
+
1644
1661
  vitepress-plugin-mermaid@2.0.17:
1645
1662
  resolution: {integrity: sha512-IUzYpwf61GC6k0XzfmAmNrLvMi9TRrVRMsUyCA8KNXhg/mQ1VqWnO0/tBVPiX5UoKF1mDUwqn5QV4qAJl6JnUg==}
1646
1663
  peerDependencies:
@@ -1871,10 +1888,18 @@ snapshots:
1871
1888
  - '@vue/composition-api'
1872
1889
  - vue
1873
1890
 
1891
+ '@iconify-json/logos@1.2.11':
1892
+ dependencies:
1893
+ '@iconify/types': 2.0.0
1894
+
1874
1895
  '@iconify-json/simple-icons@1.2.74':
1875
1896
  dependencies:
1876
1897
  '@iconify/types': 2.0.0
1877
1898
 
1899
+ '@iconify-json/vscode-icons@1.2.46':
1900
+ dependencies:
1901
+ '@iconify/types': 2.0.0
1902
+
1878
1903
  '@iconify/types@2.0.0': {}
1879
1904
 
1880
1905
  '@iconify/utils@3.1.0':
@@ -3239,6 +3264,14 @@ snapshots:
3239
3264
  jiti: 2.6.1
3240
3265
  lightningcss: 1.31.1
3241
3266
 
3267
+ vitepress-plugin-group-icons@1.7.5(vite@7.3.1(jiti@2.6.1)(lightningcss@1.31.1)):
3268
+ dependencies:
3269
+ '@iconify-json/logos': 1.2.11
3270
+ '@iconify-json/vscode-icons': 1.2.46
3271
+ '@iconify/utils': 3.1.0
3272
+ optionalDependencies:
3273
+ vite: 7.3.1(jiti@2.6.1)(lightningcss@1.31.1)
3274
+
3242
3275
  vitepress-plugin-mermaid@2.0.17(mermaid@11.13.0)(vitepress@2.0.0-alpha.15(jiti@2.6.1)(lightningcss@1.31.1)(oxc-minify@0.120.0)(postcss@8.5.8)):
3243
3276
  dependencies:
3244
3277
  mermaid: 11.13.0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vite-plus",
3
- "version": "0.1.20-alpha.2",
3
+ "version": "0.1.20-alpha.3",
4
4
  "description": "The Unified Toolchain for the Web",
5
5
  "homepage": "https://viteplus.dev/guide",
6
6
  "bugs": {
@@ -321,9 +321,9 @@
321
321
  "@oxc-project/types": "=0.127.0",
322
322
  "oxfmt": "=0.46.0",
323
323
  "oxlint": "=1.61.0",
324
- "oxlint-tsgolint": "=0.21.1",
325
- "@voidzero-dev/vite-plus-core": "0.1.20-alpha.2",
326
- "@voidzero-dev/vite-plus-test": "0.1.20-alpha.2"
324
+ "oxlint-tsgolint": "=0.22.0",
325
+ "@voidzero-dev/vite-plus-core": "0.1.20-alpha.3",
326
+ "@voidzero-dev/vite-plus-test": "0.1.20-alpha.3"
327
327
  },
328
328
  "devDependencies": {
329
329
  "@napi-rs/cli": "^3.6.1",
@@ -349,7 +349,7 @@
349
349
  "validate-npm-package-name": "^7.0.2",
350
350
  "yaml": "^2.8.1",
351
351
  "@voidzero-dev/vite-plus-prompts": "0.0.0",
352
- "vite": "npm:@voidzero-dev/vite-plus-core@0.1.20-alpha.2",
352
+ "vite": "npm:@voidzero-dev/vite-plus-core@0.1.20-alpha.3",
353
353
  "@voidzero-dev/vite-plus-tools": "0.0.0"
354
354
  },
355
355
  "napi": {
@@ -370,14 +370,14 @@
370
370
  "node": "^20.19.0 || >=22.12.0"
371
371
  },
372
372
  "optionalDependencies": {
373
- "@voidzero-dev/vite-plus-darwin-arm64": "0.1.20-alpha.2",
374
- "@voidzero-dev/vite-plus-darwin-x64": "0.1.20-alpha.2",
375
- "@voidzero-dev/vite-plus-linux-arm64-gnu": "0.1.20-alpha.2",
376
- "@voidzero-dev/vite-plus-linux-arm64-musl": "0.1.20-alpha.2",
377
- "@voidzero-dev/vite-plus-linux-x64-gnu": "0.1.20-alpha.2",
378
- "@voidzero-dev/vite-plus-linux-x64-musl": "0.1.20-alpha.2",
379
- "@voidzero-dev/vite-plus-win32-x64-msvc": "0.1.20-alpha.2",
380
- "@voidzero-dev/vite-plus-win32-arm64-msvc": "0.1.20-alpha.2"
373
+ "@voidzero-dev/vite-plus-darwin-arm64": "0.1.20-alpha.3",
374
+ "@voidzero-dev/vite-plus-darwin-x64": "0.1.20-alpha.3",
375
+ "@voidzero-dev/vite-plus-linux-arm64-gnu": "0.1.20-alpha.3",
376
+ "@voidzero-dev/vite-plus-linux-arm64-musl": "0.1.20-alpha.3",
377
+ "@voidzero-dev/vite-plus-linux-x64-gnu": "0.1.20-alpha.3",
378
+ "@voidzero-dev/vite-plus-linux-x64-musl": "0.1.20-alpha.3",
379
+ "@voidzero-dev/vite-plus-win32-x64-msvc": "0.1.20-alpha.3",
380
+ "@voidzero-dev/vite-plus-win32-arm64-msvc": "0.1.20-alpha.3"
381
381
  },
382
382
  "scripts": {
383
383
  "build": "oxnode -C dev ./build.ts",