vite-plus 0.1.17-alpha.0 → 0.1.17-alpha.2

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.
@@ -11,7 +11,7 @@ import fs from "node:fs";
11
11
  import { styleText } from "node:util";
12
12
  import process$1, { stdin, stdout } from "node:process";
13
13
  import * as _ from "node:readline";
14
- import P from "node:readline";
14
+ import c from "node:readline";
15
15
  import { ReadStream } from "node:tty";
16
16
  import fsPromises from "node:fs/promises";
17
17
  //#region ../../node_modules/.pnpm/fast-string-truncated-width@1.2.1/node_modules/fast-string-truncated-width/dist/utils.js
@@ -551,7 +551,7 @@ let p = class {
551
551
  this.state = "cancel", this.close();
552
552
  }, { once: !0 });
553
553
  }
554
- this.rl = P.createInterface({
554
+ this.rl = c.createInterface({
555
555
  input: this.input,
556
556
  tabSize: 2,
557
557
  prompt: "",
@@ -4693,76 +4693,83 @@ function migrateNodeVersionManagerFile(projectPath, detection, report) {
4693
4693
  }
4694
4694
  //#endregion
4695
4695
  //#region src/utils/agent.ts
4696
- const AGENT_ALIASES = {
4697
- chatgpt: "chatgpt-codex",
4698
- codex: "chatgpt-codex"
4699
- };
4700
4696
  const AGENTS = [
4701
4697
  {
4702
- id: "chatgpt-codex",
4703
- label: "ChatGPT (Codex)",
4704
- targetPath: "AGENTS.md"
4698
+ id: "agents",
4699
+ label: "AGENTS.md",
4700
+ targetPath: "AGENTS.md",
4701
+ hint: "Codex, Amp, OpenCode, and similar agents",
4702
+ aliases: [
4703
+ "agents.md",
4704
+ "chatgpt",
4705
+ "chatgpt-codex",
4706
+ "codex",
4707
+ "amp",
4708
+ "kilo",
4709
+ "kilo-code",
4710
+ "kiro",
4711
+ "kiro-cli",
4712
+ "opencode",
4713
+ "other"
4714
+ ]
4705
4715
  },
4706
4716
  {
4707
4717
  id: "claude",
4708
- label: "Claude Code",
4709
- targetPath: "CLAUDE.md"
4718
+ label: "CLAUDE.md",
4719
+ targetPath: "CLAUDE.md",
4720
+ hint: "Claude Code",
4721
+ aliases: ["claude.md", "claude-code"]
4710
4722
  },
4711
4723
  {
4712
4724
  id: "gemini",
4713
- label: "Gemini CLI",
4714
- targetPath: "GEMINI.md"
4725
+ label: "GEMINI.md",
4726
+ targetPath: "GEMINI.md",
4727
+ hint: "Gemini CLI",
4728
+ aliases: ["gemini.md", "gemini-cli"]
4715
4729
  },
4716
4730
  {
4717
4731
  id: "copilot",
4718
- label: "GitHub Copilot",
4719
- targetPath: ".github/copilot-instructions.md"
4732
+ label: ".github/copilot-instructions.md",
4733
+ targetPath: ".github/copilot-instructions.md",
4734
+ hint: "GitHub Copilot",
4735
+ aliases: ["github-copilot", "copilot-instructions.md"]
4720
4736
  },
4721
4737
  {
4722
4738
  id: "cursor",
4723
- label: "Cursor",
4724
- targetPath: ".cursor/rules/viteplus.mdc"
4739
+ label: ".cursor/rules/viteplus.mdc",
4740
+ targetPath: ".cursor/rules/viteplus.mdc",
4741
+ hint: "Cursor",
4742
+ aliases: ["viteplus.mdc"]
4725
4743
  },
4726
4744
  {
4727
4745
  id: "jetbrains",
4728
- label: "JetBrains AI Assistant",
4729
- targetPath: ".aiassistant/rules/viteplus.md"
4730
- },
4731
- {
4732
- id: "amp",
4733
- label: "Amp",
4734
- targetPath: "AGENTS.md"
4735
- },
4736
- {
4737
- id: "kiro",
4738
- label: "Kiro",
4739
- targetPath: "AGENTS.md"
4740
- },
4741
- {
4742
- id: "opencode",
4743
- label: "OpenCode",
4744
- targetPath: "AGENTS.md"
4745
- },
4746
- {
4747
- id: "other",
4748
- label: "Other",
4749
- targetPath: "AGENTS.md"
4746
+ label: ".aiassistant/rules/viteplus.md",
4747
+ targetPath: ".aiassistant/rules/viteplus.md",
4748
+ hint: "JetBrains AI Assistant",
4749
+ aliases: [
4750
+ "jetbrains",
4751
+ "jetbrains-ai-assistant",
4752
+ "aiassistant",
4753
+ "viteplus.md"
4754
+ ]
4750
4755
  }
4751
4756
  ];
4757
+ const AGENT_DEFAULT_ID = "agents";
4752
4758
  const AGENT_STANDARD_PATH = "AGENTS.md";
4753
4759
  const AGENT_INSTRUCTIONS_START_MARKER = "<!--VITE PLUS START-->";
4754
4760
  const AGENT_INSTRUCTIONS_END_MARKER = "<!--VITE PLUS END-->";
4761
+ const AGENT_ALIASES = Object.fromEntries(AGENTS.flatMap((option) => (option.aliases ?? []).map((alias) => [normalizeAgentName(alias), option.id])));
4755
4762
  async function selectAgentTargetPaths({ interactive, agent, onCancel }) {
4756
4763
  if (agent === false) return;
4757
4764
  if (interactive && !agent) {
4758
4765
  const selectedAgents = await multiselect({
4759
- message: "Which agents are you using?\n " + styleText("gray", "Writes an instruction file for each selected agent to help it understand `vp` commands and the project workflow."),
4766
+ message: "Which coding agent instruction files should Vite+ create?",
4760
4767
  options: AGENTS.map((option) => ({
4761
4768
  label: option.label,
4762
4769
  value: option.id,
4763
- hint: option.targetPath
4770
+ hint: option.hint
4764
4771
  })),
4765
- initialValues: ["chatgpt-codex"],
4772
+ initialValues: [AGENT_DEFAULT_ID],
4766
4773
  required: false
4767
4774
  });
4768
4775
  if (q(selectedAgents)) {
@@ -4772,7 +4779,7 @@ async function selectAgentTargetPaths({ interactive, agent, onCancel }) {
4772
4779
  if (selectedAgents.length === 0) return;
4773
4780
  return resolveAgentTargetPaths(selectedAgents);
4774
4781
  }
4775
- return resolveAgentTargetPaths(agent ?? "other");
4782
+ return resolveAgentTargetPaths(agent ?? AGENT_DEFAULT_ID);
4776
4783
  }
4777
4784
  function detectExistingAgentTargetPaths(projectRoot) {
4778
4785
  const detectedPaths = [];
@@ -4826,7 +4833,7 @@ function resolveSingleAgentTargetPath(agent) {
4826
4833
  const normalized = normalizeAgentName(agent);
4827
4834
  const alias = AGENT_ALIASES[normalized];
4828
4835
  const resolved = alias ? normalizeAgentName(alias) : normalized;
4829
- return AGENTS.find((option) => normalizeAgentName(option.id) === resolved || normalizeAgentName(option.label) === resolved)?.targetPath ?? AGENTS[AGENTS.length - 1].targetPath;
4836
+ return AGENTS.find((option) => normalizeAgentName(option.id) === resolved || normalizeAgentName(option.label) === resolved || normalizeAgentName(option.targetPath) === resolved || option.aliases?.some((candidate) => normalizeAgentName(candidate) === resolved))?.targetPath ?? AGENT_STANDARD_PATH;
4830
4837
  }
4831
4838
  /**
4832
4839
  * Detect agent instruction files that would conflict (exist without markers).
@@ -1,5 +1,5 @@
1
1
  import { r as log } from "../terminal-P9aw9Fib.js";
2
- import { D as promptGitHooks, T as defaultInteractive, d as ensurePreCommitHook, f as hasStagedConfigInViteConfig, i as updateExistingAgentInstructions } from "../agent-VgCFy-Jh.js";
2
+ import { D as promptGitHooks, T as defaultInteractive, d as ensurePreCommitHook, f as hasStagedConfigInViteConfig, i as updateExistingAgentInstructions } from "../agent-DL4YUCxa.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";
@@ -1,10 +1,10 @@
1
1
  import { r as __toESM, t as __commonJSMin } from "../chunk-DsIazq42.js";
2
2
  import { a as require_cross_spawn } from "../tsconfig-Do47YXpz.js";
3
3
  import { a as success, i as muted, r as log, t as accent } from "../terminal-P9aw9Fib.js";
4
- import { A as selectPackageManager, B as log$1, D as promptGitHooks, E as downloadPackageManager$1, F as PackageManager, G as text, K as require_picocolors, L as cancel, M as displayRelative, N as templatesDir, O as runViteFmt, P as DependencyType, R as confirm, T as defaultInteractive, U as select, V as multiselect, W as spinner, a as writeAgentInstructions, b as rewriteMonorepoProject, k as runViteInstall, n as detectExistingAgentTargetPaths, p as installGitHooks, q, r as selectAgentTargetPaths, x as rewriteStandaloneProject, y as rewriteMonorepo, z as intro } from "../agent-VgCFy-Jh.js";
4
+ import { A as selectPackageManager, B as log$1, D as promptGitHooks, E as downloadPackageManager$1, F as PackageManager, G as text, K as require_picocolors, L as cancel, M as displayRelative, N as templatesDir, O as runViteFmt, P as DependencyType, R as confirm, T as defaultInteractive, U as select, V as multiselect, W as spinner, a as writeAgentInstructions, b as rewriteMonorepoProject, k as runViteInstall, n as detectExistingAgentTargetPaths, p as installGitHooks, q, r as selectAgentTargetPaths, x as rewriteStandaloneProject, y as rewriteMonorepo, z as intro } from "../agent-DL4YUCxa.js";
5
5
  import { t as lib_default } from "../lib-BamM40b7.js";
6
6
  import { c as readJsonFile, o as editJsonFile, t as checkNpmPackageExists } from "../package-DhXOF9Xm.js";
7
- import { a as detectExistingEditor, n as updatePackageJsonWithDeps, o as selectEditor, r as updateWorkspaceConfig, s as writeEditorConfigs, t as detectWorkspace$1 } from "../workspace-x5W9TkyS.js";
7
+ import { a as detectExistingEditor, n as updatePackageJsonWithDeps, o as selectEditor, r as updateWorkspaceConfig, s as writeEditorConfigs, t as detectWorkspace$1 } from "../workspace-B2SzjkP4.js";
8
8
  import { t as renderCliDoc } from "../help-BtkjXtRM.js";
9
9
  import path from "node:path";
10
10
  import { runCommand, vitePlusHeader } from "../../binding/index.js";
@@ -3680,7 +3680,7 @@ const helpMessage = renderCliDoc({
3680
3680
  },
3681
3681
  {
3682
3682
  label: "--agent NAME",
3683
- description: "Create an agent instructions file for the specified agent."
3683
+ description: "Write coding agent instructions to AGENTS.md, CLAUDE.md, etc."
3684
3684
  },
3685
3685
  {
3686
3686
  label: "--editor NAME",
@@ -4161,7 +4161,8 @@ Use \`vp create --list\` to list all available templates, or run \`vp create --h
4161
4161
  projectRoot: fullPath,
4162
4162
  editorId: selectedEditor,
4163
4163
  interactive: options.interactive,
4164
- silent: compactOutput
4164
+ silent: compactOutput,
4165
+ extraVsCodeSettings: { "npm.scriptRunner": "vp" }
4165
4166
  });
4166
4167
  resumeCreateProgress();
4167
4168
  workspaceInfo.rootDir = fullPath;
@@ -4232,7 +4233,8 @@ Use \`vp create --list\` to list all available templates, or run \`vp create --h
4232
4233
  projectRoot: fullPath,
4233
4234
  editorId: selectedEditor,
4234
4235
  interactive: options.interactive,
4235
- silent: compactOutput
4236
+ silent: compactOutput,
4237
+ extraVsCodeSettings: { "npm.scriptRunner": "vp" }
4236
4238
  });
4237
4239
  resumeCreateProgress();
4238
4240
  let installSummary;
@@ -1,11 +1,11 @@
1
1
  import { r as __toESM } from "../chunk-DsIazq42.js";
2
2
  import { l as isForceOverrideMode } from "../main-GHdRghJ-.js";
3
3
  import { i as muted, r as log, t as accent } from "../terminal-P9aw9Fib.js";
4
- import { A as selectPackageManager, B as log$1, D as promptGitHooks, E as downloadPackageManager$1, F as PackageManager, H as outro, I as require_semver, M as displayRelative, R as confirm, T as defaultInteractive, U as select, W as spinner, _ as migratePrettierToOxfmt, a as writeAgentInstructions, c as detectEslintProject, g as migrateNodeVersionManagerFile, h as migrateEslintToOxlint, j as upgradeYarn, k as runViteInstall, l as detectNodeVersionManagerFile, m as mergeViteConfigFiles, n as detectExistingAgentTargetPaths, o as checkViteVersion, p as installGitHooks, q, r as selectAgentTargetPaths, s as checkVitestVersion, t as detectAgentConflicts, u as detectPrettierProject, v as preflightGitHooksSetup, w as cancelAndExit, x as rewriteStandaloneProject, y as rewriteMonorepo } from "../agent-VgCFy-Jh.js";
4
+ import { A as selectPackageManager, B as log$1, D as promptGitHooks, E as downloadPackageManager$1, F as PackageManager, H as outro, I as require_semver, M as displayRelative, R as confirm, T as defaultInteractive, U as select, W as spinner, _ as migratePrettierToOxfmt, a as writeAgentInstructions, c as detectEslintProject, g as migrateNodeVersionManagerFile, h as migrateEslintToOxlint, j as upgradeYarn, k as runViteInstall, l as detectNodeVersionManagerFile, m as mergeViteConfigFiles, n as detectExistingAgentTargetPaths, o as checkViteVersion, p as installGitHooks, q, r as selectAgentTargetPaths, s as checkVitestVersion, t as detectAgentConflicts, u as detectPrettierProject, v as preflightGitHooksSetup, w as cancelAndExit, x as rewriteStandaloneProject, y as rewriteMonorepo } from "../agent-DL4YUCxa.js";
5
5
  import { t as lib_default } from "../lib-BamM40b7.js";
6
6
  import { a as readNearestPackageJson, i as hasVitePlusDependency } from "../package-DhXOF9Xm.js";
7
7
  import { r as createMigrationReport } from "../report-DHdnkZbA.js";
8
- import { i as detectEditorConflicts, o as selectEditor, s as writeEditorConfigs, t as detectWorkspace$1 } from "../workspace-x5W9TkyS.js";
8
+ import { i as detectEditorConflicts, o as selectEditor, s as writeEditorConfigs, t as detectWorkspace$1 } from "../workspace-B2SzjkP4.js";
9
9
  import { t as renderCliDoc } from "../help-BtkjXtRM.js";
10
10
  import path from "node:path";
11
11
  import { vitePlusHeader } from "../../binding/index.js";
@@ -102,11 +102,11 @@ const helpMessage = renderCliDoc({
102
102
  rows: [
103
103
  {
104
104
  label: "--agent NAME",
105
- description: "Write agent instructions file into the project (e.g. chatgpt, claude, opencode)."
105
+ description: "Write coding agent instructions to AGENTS.md, CLAUDE.md, etc."
106
106
  },
107
107
  {
108
108
  label: "--no-agent",
109
- description: "Skip writing agent instructions file"
109
+ description: "Skip writing coding agent instructions"
110
110
  },
111
111
  {
112
112
  label: "--editor NAME",
@@ -10,7 +10,7 @@ import { constants } from "node:fs";
10
10
  import { formatWithOptions, inspect, promisify } from "node:util";
11
11
  import { pathToFileURL } from "node:url";
12
12
  import { cwd } from "node:process";
13
- import P from "node:readline";
13
+ import c from "node:readline";
14
14
  import nodeTty from "node:tty";
15
15
  import fsPromises, { constants as constants$1 } from "node:fs/promises";
16
16
  import { PassThrough, Writable } from "node:stream";
@@ -563,7 +563,7 @@ const M = {
563
563
  persist: false
564
564
  };
565
565
  const N = { windowsHide: true };
566
- function P$1(e, t) {
566
+ function P(e, t) {
567
567
  return {
568
568
  command: normalize(e),
569
569
  args: t ?? []
@@ -639,7 +639,7 @@ var L = class {
639
639
  if (this._streamErr) t.push(this._streamErr);
640
640
  if (this._streamOut) t.push(this._streamOut);
641
641
  const n = g(t);
642
- const r = P.createInterface({ input: n });
642
+ const r = c.createInterface({ input: n });
643
643
  for await (const e of r) yield e.toString();
644
644
  await this._processClosed;
645
645
  e.removeAllListeners();
@@ -681,7 +681,7 @@ var L = class {
681
681
  if (n.persist === true) r.detached = true;
682
682
  if (i.length > 0) r.signal = F(i);
683
683
  r.env = h(e, r.env);
684
- const { command: a, args: s } = P$1(this._command, this._args);
684
+ const { command: a, args: s } = P(this._command, this._args);
685
685
  const c = (0, A._parse)(a, s, r);
686
686
  const l = spawn(c.command, c.args, c.options);
687
687
  if (l.stderr) this._streamErr = l.stderr;
package/dist/versions.js CHANGED
@@ -1,8 +1,8 @@
1
1
  export const versions = {
2
- "vite": "8.0.7",
3
- "rolldown": "1.0.0-rc.13",
2
+ "vite": "8.0.8",
3
+ "rolldown": "1.0.0-rc.15",
4
4
  "tsdown": "0.21.7",
5
- "vitest": "4.1.3",
5
+ "vitest": "4.1.4",
6
6
  "oxlint": "1.59.0",
7
7
  "oxfmt": "0.44.0",
8
8
  "oxlint-tsgolint": "0.20.0"
@@ -1,4 +1,4 @@
1
- import { B as log, C as readYamlFile, F as PackageManager, S as editYamlFile, U as select, q } from "./agent-VgCFy-Jh.js";
1
+ import { B as log, C as readYamlFile, F as PackageManager, S as editYamlFile, U as select, q } from "./agent-DL4YUCxa.js";
2
2
  import { t as require_dist } from "./dist-DPsDLqya.js";
3
3
  import { c as readJsonFile, l as writeJsonFile, o as editJsonFile, r as getScopeFromPackageName } from "./package-DhXOF9Xm.js";
4
4
  import path, { posix, win32 } from "node:path";
@@ -184,13 +184,17 @@ function detectEditorConflicts({ projectRoot, editorId }) {
184
184
  }
185
185
  return conflicts;
186
186
  }
187
- async function writeEditorConfigs({ projectRoot, editorId, interactive, conflictDecisions, silent = false }) {
187
+ async function writeEditorConfigs({ projectRoot, editorId, interactive, conflictDecisions, silent = false, extraVsCodeSettings }) {
188
188
  if (!editorId) return;
189
189
  const editorConfig = EDITORS.find((e) => e.id === editorId);
190
190
  if (!editorConfig) return;
191
191
  const targetDir = path.join(projectRoot, editorConfig.targetDir);
192
192
  await fsPromises.mkdir(targetDir, { recursive: true });
193
- for (const [fileName, incoming] of Object.entries(editorConfig.files)) {
193
+ for (const [fileName, baseIncoming] of Object.entries(editorConfig.files)) {
194
+ const incoming = editorId === "vscode" && fileName === "settings.json" && extraVsCodeSettings ? {
195
+ ...extraVsCodeSettings,
196
+ ...baseIncoming
197
+ } : baseIncoming;
194
198
  const filePath = path.join(targetDir, fileName);
195
199
  if (fs.existsSync(filePath)) {
196
200
  const displayPath = `${editorConfig.targetDir}/${fileName}`;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vite-plus",
3
- "version": "0.1.17-alpha.0",
3
+ "version": "0.1.17-alpha.2",
4
4
  "description": "The Unified Toolchain for the Web",
5
5
  "homepage": "https://viteplus.dev/guide",
6
6
  "bugs": {
@@ -318,15 +318,15 @@
318
318
  }
319
319
  },
320
320
  "dependencies": {
321
- "@oxc-project/types": "=0.123.0",
321
+ "@oxc-project/types": "=0.124.0",
322
322
  "oxfmt": "=0.44.0",
323
323
  "oxlint": "=1.59.0",
324
324
  "oxlint-tsgolint": "=0.20.0",
325
- "@voidzero-dev/vite-plus-core": "0.1.17-alpha.0",
326
- "@voidzero-dev/vite-plus-test": "0.1.17-alpha.0"
325
+ "@voidzero-dev/vite-plus-core": "0.1.17-alpha.2",
326
+ "@voidzero-dev/vite-plus-test": "0.1.17-alpha.2"
327
327
  },
328
328
  "devDependencies": {
329
- "@napi-rs/cli": "^3.6.0",
329
+ "@napi-rs/cli": "^3.6.1",
330
330
  "@nkzw/safe-word-list": "^3.1.0",
331
331
  "@oxc-node/core": "^0.0.32",
332
332
  "@types/cross-spawn": "^6.0.6",
@@ -348,8 +348,8 @@
348
348
  "tsdown": "^0.21.7",
349
349
  "validate-npm-package-name": "^7.0.2",
350
350
  "yaml": "^2.8.1",
351
- "vite": "npm:@voidzero-dev/vite-plus-core@0.1.17-alpha.0",
352
- "@voidzero-dev/vite-plus-prompts": "0.0.0"
351
+ "@voidzero-dev/vite-plus-prompts": "0.0.0",
352
+ "vite": "npm:@voidzero-dev/vite-plus-core@0.1.17-alpha.2"
353
353
  },
354
354
  "napi": {
355
355
  "binaryName": "vite-plus",
@@ -369,14 +369,14 @@
369
369
  "node": "^20.19.0 || >=22.12.0"
370
370
  },
371
371
  "optionalDependencies": {
372
- "@voidzero-dev/vite-plus-darwin-arm64": "0.1.17-alpha.0",
373
- "@voidzero-dev/vite-plus-darwin-x64": "0.1.17-alpha.0",
374
- "@voidzero-dev/vite-plus-linux-arm64-gnu": "0.1.17-alpha.0",
375
- "@voidzero-dev/vite-plus-linux-arm64-musl": "0.1.17-alpha.0",
376
- "@voidzero-dev/vite-plus-linux-x64-gnu": "0.1.17-alpha.0",
377
- "@voidzero-dev/vite-plus-linux-x64-musl": "0.1.17-alpha.0",
378
- "@voidzero-dev/vite-plus-win32-x64-msvc": "0.1.17-alpha.0",
379
- "@voidzero-dev/vite-plus-win32-arm64-msvc": "0.1.17-alpha.0"
372
+ "@voidzero-dev/vite-plus-darwin-arm64": "0.1.17-alpha.2",
373
+ "@voidzero-dev/vite-plus-darwin-x64": "0.1.17-alpha.2",
374
+ "@voidzero-dev/vite-plus-linux-arm64-gnu": "0.1.17-alpha.2",
375
+ "@voidzero-dev/vite-plus-linux-arm64-musl": "0.1.17-alpha.2",
376
+ "@voidzero-dev/vite-plus-linux-x64-gnu": "0.1.17-alpha.2",
377
+ "@voidzero-dev/vite-plus-linux-x64-musl": "0.1.17-alpha.2",
378
+ "@voidzero-dev/vite-plus-win32-x64-msvc": "0.1.17-alpha.2",
379
+ "@voidzero-dev/vite-plus-win32-arm64-msvc": "0.1.17-alpha.2"
380
380
  },
381
381
  "scripts": {
382
382
  "build": "oxnode -C dev ./build.ts",
@@ -9,7 +9,9 @@ For the best VS Code experience with Vite+, install the [Vite Plus Extension Pac
9
9
  - `Oxc` for formatting and linting via `vp check`
10
10
  - `Vitest` for test runs via `vp test`
11
11
 
12
- When you create or migrate a project, Vite+ prompts whether you want editor config written for VS Code. You can also manually set up the VS Code config:
12
+ When you create or migrate a project, Vite+ prompts whether you want editor config written for VS Code. `vp create` additionally sets `npm.scriptRunner` to `vp` so the VS Code NPM Scripts panel runs scripts through the Vite+ task runner. For migrated or existing projects, you can add this setting manually (see below).
13
+
14
+ You can also manually set up the VS Code config:
13
15
 
14
16
  `.vscode/extensions.json`
15
17
 
@@ -34,3 +36,13 @@ When you create or migrate a project, Vite+ prompts whether you want editor conf
34
36
  ```
35
37
 
36
38
  This gives the project a shared default formatter and enables Oxc-powered fix actions on save. Setting `oxc.fmt.configPath` to `./vite.config.ts` keeps editor format-on-save aligned with the `fmt` block in your Vite+ config. Vite+ uses `formatOnSaveMode: "file"` because Oxfmt does not support partial formatting.
39
+
40
+ To let the VS Code NPM Scripts panel run scripts through `vp`, add the following to your `.vscode/settings.json`:
41
+
42
+ ```json
43
+ {
44
+ "npm.scriptRunner": "vp"
45
+ }
46
+ ```
47
+
48
+ This is included automatically by `vp create` but not by `vp migrate`, since existing projects may have team members who do not have `vp` installed locally.
@@ -18,7 +18,7 @@ curl -fsSL https://vite.plus | bash
18
18
  irm https://vite.plus/ps1 | iex
19
19
  ```
20
20
 
21
- Alternatively, download and run `vp-setup.exe` from the [latest release](https://github.com/voidzero-dev/vite-plus/releases/latest).
21
+ Alternatively, download and run [`vp-setup.exe`](https://viteplus.dev/vp-setup).
22
22
 
23
23
  ::: tip SmartScreen warning
24
24
  The `vp-setup.exe` is not yet code-signed. Your browser may show a warning when downloading. Click **"..."** → **"Keep"** → **"Keep anyway"** to proceed. If Windows Defender SmartScreen blocks the file when you run it, click **"More info"** → **"Run anyway"**.
@@ -8,7 +8,7 @@ Use `vpx`, `vp exec`, and `vp dlx` to run binaries without switching between loc
8
8
 
9
9
  Use the other binary commands when you need stricter control:
10
10
 
11
- - `vpx` resolves a package binary locally first and can download it when needed
11
+ - `vpx` resolves a package binary locally first by default and downloads it if not found; with `pkg@version`, `--package/-p`, or `--shell-mode`, it runs via `vp dlx`
12
12
  - `vp exec` runs a binary from the current project's `node_modules/.bin`
13
13
  - `vp dlx` runs a package binary without adding it as a dependency
14
14
 
@@ -22,7 +22,7 @@ vpx <pkg[@version]> [args...]
22
22
 
23
23
  ### Options
24
24
 
25
- - `-p, --package <name>` installs one or more packages before running the command
25
+ - `-p, --package <name>` installs one or more additional packages before running the command
26
26
  - `-c, --shell-mode` executes the command inside a shell
27
27
  - `-s, --silent` suppresses Vite+ output and only shows the command output
28
28
 
@@ -9,7 +9,7 @@
9
9
  ],
10
10
  "type": "module",
11
11
  "scripts": {
12
- "ready": "vp fmt && vp lint && vp run -r test && vp run -r build",
12
+ "ready": "vp check && vp run -r test && vp run -r build",
13
13
  "dev": "vp run website#dev"
14
14
  },
15
15
  "engines": {