vite-plus 0.1.22 → 0.1.23
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/binding/index.cjs +119 -52
- package/binding/index.d.cts +3222 -2
- package/dist/agent-aSGY0osq.js +2461 -0
- package/dist/bin.js +6 -5
- package/dist/cli-truncate-CWsmbK3p.js +867 -0
- package/dist/{compat-OlmU9EQz.js → compat-DXZgnEyq.js} +1 -1
- package/dist/config/bin.js +18 -5
- package/dist/{constants-kDaYqyWd.js → constants-DCBWlNrn.js} +7 -2
- package/dist/create/bin.js +135 -64
- package/dist/{define-config-IMCGDS2K.d.ts → define-config-COdn-tsn.d.ts} +7 -5
- package/dist/define-config.cjs +1 -1
- package/dist/define-config.d.ts +1 -1
- package/dist/define-config.js +1 -1
- package/dist/dist-Bapm49IR.js +3 -0
- package/dist/{dist-owlRxmBM.js → dist-BgQuvbtq.js} +136 -110
- package/dist/fmt.d.ts +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/dist/is-fullwidth-code-point-BUNlIICg.js +8 -0
- package/dist/lint.d.ts +1 -1
- package/dist/{log-update-NRrY6krx.js → log-update-lyIiuflf.js} +111 -24
- package/dist/migration/bin.js +71 -30
- package/dist/{oxlint-plugin-config-BkQeR4FR.js → oxlint-plugin-config-B89iKTKN.js} +1 -1
- package/dist/oxlint-plugin.d.ts +2 -4
- package/dist/oxlint-plugin.js +1 -1
- package/dist/pack-bin.js +1 -1
- package/dist/pack.d.ts +1 -1
- package/dist/{package-BoLLED6j.js → package-PmBUZ-ve.js} +2 -2
- package/dist/staged/bin.js +10 -10
- package/dist/strip-ansi-C3wrWz9t.js +853 -0
- package/dist/{agent-BWLe0i9g.js → tsconfig-DlUVXT3J.js} +648 -2089
- package/dist/version.js +5 -5
- package/dist/versions.js +6 -6
- package/dist/{workspace-Bi_9spVt.js → workspace-DElv730L.js} +13 -12
- package/dist/wrap-ansi-CeQuiQ31.js +2 -0
- package/dist/{wrap-ansi-DtUeUCjE.js → wrap-ansi-k7Dn4VtV.js} +1 -1
- package/docs/config/run.md +39 -4
- package/docs/guide/cache.md +10 -1
- package/docs/guide/env.md +3 -0
- package/docs/guide/ide-integration.md +2 -2
- package/docs/guide/install.md +2 -0
- package/docs/guide/run.md +2 -0
- package/docs/guide/troubleshooting.md +5 -2
- package/package.json +18 -18
- package/templates/monorepo/_gitignore +1 -0
- package/dist/cli-truncate-B62YnW2m.js +0 -138
- package/dist/dist-DZfItHAr.js +0 -3
- package/dist/slice-ansi-e4todZeH.js +0 -113
- package/dist/strip-ansi-D-eYYcD2.js +0 -198
- package/dist/tsconfig-BVyzXJ_o.js +0 -517
- package/dist/wrap-ansi-3S3qJ7j8.js +0 -2
- /package/dist/{chunk-q7NCDQ7-.js → chunk-DnnnRqeS.js} +0 -0
- /package/dist/{define-config-GqLoRwH9.cjs → define-config-BR1Y88zz.cjs} +0 -0
- /package/dist/{define-config-CzWdQTt2.js → define-config-BRC7qPNE.js} +0 -0
- /package/dist/{help-DK5wuu34.js → help-YP84FSEz.js} +0 -0
- /package/dist/{lib-DpwyUJWo.js → lib-L3DWSRQp.js} +0 -0
- /package/dist/{main-DhsO6ndq.js → main-DpJl3LoU.js} +0 -0
- /package/dist/{pack-K7H72Cum.d.ts → pack-Ciiho0Tq.d.ts} +0 -0
- /package/dist/{report-CYPv1VK1.js → report-DgSBQUdz.js} +0 -0
- /package/dist/{resolve-vite-config-C5AjksTj.js → resolve-vite-config-TTvhycU1.js} +0 -0
- /package/dist/{terminal-D_Kg-AA6.js → terminal-uTv0ZaMr.js} +0 -0
package/dist/version.js
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import "./constants-
|
|
2
|
-
import { a as printHeader, r as log, t as accent } from "./terminal-
|
|
3
|
-
import { i as hasVitePlusDependency, n as detectPackageMetadata } from "./package-
|
|
4
|
-
import { t as renderCliDoc } from "./help-
|
|
1
|
+
import "./constants-DCBWlNrn.js";
|
|
2
|
+
import { a as printHeader, r as log, t as accent } from "./terminal-uTv0ZaMr.js";
|
|
3
|
+
import { i as hasVitePlusDependency, n as detectPackageMetadata } from "./package-PmBUZ-ve.js";
|
|
4
|
+
import { t as renderCliDoc } from "./help-YP84FSEz.js";
|
|
5
5
|
import path from "node:path";
|
|
6
6
|
import fs from "node:fs";
|
|
7
7
|
//#region package.json
|
|
8
|
-
var version = "0.1.
|
|
8
|
+
var version = "0.1.23";
|
|
9
9
|
//#endregion
|
|
10
10
|
//#region src/version.ts
|
|
11
11
|
/** Tool display names in the order shown by `vp --version`. */
|
package/dist/versions.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
export const versions = {
|
|
2
|
-
"vite": "8.0.
|
|
3
|
-
"rolldown": "1.0.
|
|
2
|
+
"vite": "8.0.14",
|
|
3
|
+
"rolldown": "1.0.3",
|
|
4
4
|
"tsdown": "0.22.0",
|
|
5
|
-
"vitest": "4.1.
|
|
6
|
-
"oxlint": "1.
|
|
7
|
-
"oxfmt": "0.
|
|
8
|
-
"oxlint-tsgolint": "0.
|
|
5
|
+
"vitest": "4.1.7",
|
|
6
|
+
"oxlint": "1.67.0",
|
|
7
|
+
"oxfmt": "0.52.0",
|
|
8
|
+
"oxlint-tsgolint": "0.23.0"
|
|
9
9
|
};
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { t as require_dist } from "./dist-
|
|
3
|
-
import { c as editJsonFile, d as writeJsonFile, r as getScopeFromPackageName, u as readJsonFile } from "./package-
|
|
1
|
+
import { A as q, C as log, E as select, v as PackageManager, w as multiselect } from "./tsconfig-DlUVXT3J.js";
|
|
2
|
+
import { t as require_dist } from "./dist-BgQuvbtq.js";
|
|
3
|
+
import { c as editJsonFile, d as writeJsonFile, r as getScopeFromPackageName, u as readJsonFile } from "./package-PmBUZ-ve.js";
|
|
4
|
+
import { B as editYamlFile, V as readYamlFile } from "./agent-aSGY0osq.js";
|
|
4
5
|
import path, { posix, win32 } from "node:path";
|
|
5
6
|
import { detectWorkspace } from "../binding/index.js";
|
|
6
7
|
import * as actualFS from "node:fs";
|
|
@@ -43,7 +44,7 @@ const EDITORS = [{
|
|
|
43
44
|
unusedDisableDirectives: "deny"
|
|
44
45
|
} } },
|
|
45
46
|
oxfmt: { initialization_options: { settings: {
|
|
46
|
-
configPath: "./vite.config.ts",
|
|
47
|
+
"fmt.configPath": "./vite.config.ts",
|
|
47
48
|
run: "onSave"
|
|
48
49
|
} } }
|
|
49
50
|
},
|
|
@@ -713,8 +714,8 @@ const justDots = new Set(["..", "."]);
|
|
|
713
714
|
const reSpecials = /* @__PURE__ */ new Set("().*{}+?[]^$\\!");
|
|
714
715
|
const regExpEscape$1 = (s) => s.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&");
|
|
715
716
|
const qmark = "[^/]";
|
|
716
|
-
const star$1 =
|
|
717
|
-
const starNoEmpty =
|
|
717
|
+
const star$1 = "[^/]*?";
|
|
718
|
+
const starNoEmpty = "[^/]+?";
|
|
718
719
|
let ID = 0;
|
|
719
720
|
var AST = class {
|
|
720
721
|
type;
|
|
@@ -1061,7 +1062,7 @@ var AST = class {
|
|
|
1061
1062
|
let final = "";
|
|
1062
1063
|
if (this.type === "!" && this.#emptyExt) final = (this.isStart() && !dot ? startNoDot : "") + starNoEmpty;
|
|
1063
1064
|
else {
|
|
1064
|
-
const close = this.type === "!" ? "))" + (this.isStart() && !dot && !allowDot ? startNoDot : "") +
|
|
1065
|
+
const close = this.type === "!" ? "))" + (this.isStart() && !dot && !allowDot ? startNoDot : "") + "[^/]*?)" : this.type === "@" ? ")" : this.type === "?" ? ")?" : this.type === "+" && bodyDotAllowed ? ")" : this.type === "*" && bodyDotAllowed ? `)?` : `)${this.type}`;
|
|
1065
1066
|
final = start + body + close;
|
|
1066
1067
|
}
|
|
1067
1068
|
return [
|
|
@@ -3247,14 +3248,14 @@ const IFREG = 8;
|
|
|
3247
3248
|
const IFLNK = 10;
|
|
3248
3249
|
const IFSOCK = 12;
|
|
3249
3250
|
const IFMT = 15;
|
|
3250
|
-
const IFMT_UNKNOWN =
|
|
3251
|
+
const IFMT_UNKNOWN = -16;
|
|
3251
3252
|
const READDIR_CALLED = 16;
|
|
3252
3253
|
const LSTAT_CALLED = 32;
|
|
3253
3254
|
const ENOTDIR = 64;
|
|
3254
3255
|
const ENOENT = 128;
|
|
3255
3256
|
const ENOREADLINK = 256;
|
|
3256
3257
|
const ENOREALPATH = 512;
|
|
3257
|
-
const ENOCHILD =
|
|
3258
|
+
const ENOCHILD = 704;
|
|
3258
3259
|
const TYPEMASK = 1023;
|
|
3259
3260
|
const entToType = (s) => s.isFile() ? IFREG : s.isDirectory() ? IFDIR : s.isSymbolicLink() ? IFLNK : s.isCharacterDevice() ? IFCHR : s.isBlockDevice() ? IFBLK : s.isSocket() ? IFSOCK : s.isFIFO() ? IFIFO : UNKNOWN;
|
|
3260
3261
|
const normalizeCache = new L({ max: 2 ** 12 });
|
|
@@ -3514,7 +3515,7 @@ var PathBase = class {
|
|
|
3514
3515
|
if (cached) return cached;
|
|
3515
3516
|
const children = Object.assign([], { provisional: 0 });
|
|
3516
3517
|
this.#children.set(this, children);
|
|
3517
|
-
this.#type &=
|
|
3518
|
+
this.#type &= -17;
|
|
3518
3519
|
return children;
|
|
3519
3520
|
}
|
|
3520
3521
|
/**
|
|
@@ -4059,7 +4060,7 @@ var PathBase = class {
|
|
|
4059
4060
|
*/
|
|
4060
4061
|
async realpath() {
|
|
4061
4062
|
if (this.#realpath) return this.#realpath;
|
|
4062
|
-
if (
|
|
4063
|
+
if (896 & this.#type) return void 0;
|
|
4063
4064
|
try {
|
|
4064
4065
|
const rp = await this.#fs.promises.realpath(this.fullpath());
|
|
4065
4066
|
return this.#realpath = this.resolve(rp);
|
|
@@ -4072,7 +4073,7 @@ var PathBase = class {
|
|
|
4072
4073
|
*/
|
|
4073
4074
|
realpathSync() {
|
|
4074
4075
|
if (this.#realpath) return this.#realpath;
|
|
4075
|
-
if (
|
|
4076
|
+
if (896 & this.#type) return void 0;
|
|
4076
4077
|
try {
|
|
4077
4078
|
const rp = this.#fs.realpathSync(this.fullpath());
|
|
4078
4079
|
return this.#realpath = this.resolve(rp);
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { a as ansiStyles, n as eastAsianWidth, t as stripAnsi } from "./strip-ansi-
|
|
1
|
+
import { a as ansiStyles, n as eastAsianWidth, t as stripAnsi } from "./strip-ansi-C3wrWz9t.js";
|
|
2
2
|
//#region ../../node_modules/.pnpm/emoji-regex@10.6.0/node_modules/emoji-regex/index.mjs
|
|
3
3
|
var emoji_regex_default = () => {
|
|
4
4
|
return /[#*0-9]\uFE0F?\u20E3|[\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u231A\u231B\u2328\u23CF\u23ED-\u23EF\u23F1\u23F2\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB\u25FC\u25FE\u2600-\u2604\u260E\u2611\u2614\u2615\u2618\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u2648-\u2653\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u267F\u2692\u2694-\u2697\u2699\u269B\u269C\u26A0\u26A7\u26AA\u26B0\u26B1\u26BD\u26BE\u26C4\u26C8\u26CF\u26D1\u26E9\u26F0-\u26F5\u26F7\u26F8\u26FA\u2702\u2708\u2709\u270F\u2712\u2714\u2716\u271D\u2721\u2733\u2734\u2744\u2747\u2757\u2763\u27A1\u2934\u2935\u2B05-\u2B07\u2B1B\u2B1C\u2B55\u3030\u303D\u3297\u3299]\uFE0F?|[\u261D\u270C\u270D](?:\uD83C[\uDFFB-\uDFFF]|\uFE0F)?|[\u270A\u270B](?:\uD83C[\uDFFB-\uDFFF])?|[\u23E9-\u23EC\u23F0\u23F3\u25FD\u2693\u26A1\u26AB\u26C5\u26CE\u26D4\u26EA\u26FD\u2705\u2728\u274C\u274E\u2753-\u2755\u2795-\u2797\u27B0\u27BF\u2B50]|\u26D3\uFE0F?(?:\u200D\uD83D\uDCA5)?|\u26F9(?:\uD83C[\uDFFB-\uDFFF]|\uFE0F)?(?:\u200D[\u2640\u2642]\uFE0F?)?|\u2764\uFE0F?(?:\u200D(?:\uD83D\uDD25|\uD83E\uDE79))?|\uD83C(?:[\uDC04\uDD70\uDD71\uDD7E\uDD7F\uDE02\uDE37\uDF21\uDF24-\uDF2C\uDF36\uDF7D\uDF96\uDF97\uDF99-\uDF9B\uDF9E\uDF9F\uDFCD\uDFCE\uDFD4-\uDFDF\uDFF5\uDFF7]\uFE0F?|[\uDF85\uDFC2\uDFC7](?:\uD83C[\uDFFB-\uDFFF])?|[\uDFC4\uDFCA](?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDFCB\uDFCC](?:\uD83C[\uDFFB-\uDFFF]|\uFE0F)?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDCCF\uDD8E\uDD91-\uDD9A\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF43\uDF45-\uDF4A\uDF4C-\uDF7C\uDF7E-\uDF84\uDF86-\uDF93\uDFA0-\uDFC1\uDFC5\uDFC6\uDFC8\uDFC9\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF8-\uDFFF]|\uDDE6\uD83C[\uDDE8-\uDDEC\uDDEE\uDDF1\uDDF2\uDDF4\uDDF6-\uDDFA\uDDFC\uDDFD\uDDFF]|\uDDE7\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEF\uDDF1-\uDDF4\uDDF6-\uDDF9\uDDFB\uDDFC\uDDFE\uDDFF]|\uDDE8\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDEE\uDDF0-\uDDF7\uDDFA-\uDDFF]|\uDDE9\uD83C[\uDDEA\uDDEC\uDDEF\uDDF0\uDDF2\uDDF4\uDDFF]|\uDDEA\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDED\uDDF7-\uDDFA]|\uDDEB\uD83C[\uDDEE-\uDDF0\uDDF2\uDDF4\uDDF7]|\uDDEC\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEE\uDDF1-\uDDF3\uDDF5-\uDDFA\uDDFC\uDDFE]|\uDDED\uD83C[\uDDF0\uDDF2\uDDF3\uDDF7\uDDF9\uDDFA]|\uDDEE\uD83C[\uDDE8-\uDDEA\uDDF1-\uDDF4\uDDF6-\uDDF9]|\uDDEF\uD83C[\uDDEA\uDDF2\uDDF4\uDDF5]|\uDDF0\uD83C[\uDDEA\uDDEC-\uDDEE\uDDF2\uDDF3\uDDF5\uDDF7\uDDFC\uDDFE\uDDFF]|\uDDF1\uD83C[\uDDE6-\uDDE8\uDDEE\uDDF0\uDDF7-\uDDFB\uDDFE]|\uDDF2\uD83C[\uDDE6\uDDE8-\uDDED\uDDF0-\uDDFF]|\uDDF3\uD83C[\uDDE6\uDDE8\uDDEA-\uDDEC\uDDEE\uDDF1\uDDF4\uDDF5\uDDF7\uDDFA\uDDFF]|\uDDF4\uD83C\uDDF2|\uDDF5\uD83C[\uDDE6\uDDEA-\uDDED\uDDF0-\uDDF3\uDDF7-\uDDF9\uDDFC\uDDFE]|\uDDF6\uD83C\uDDE6|\uDDF7\uD83C[\uDDEA\uDDF4\uDDF8\uDDFA\uDDFC]|\uDDF8\uD83C[\uDDE6-\uDDEA\uDDEC-\uDDF4\uDDF7-\uDDF9\uDDFB\uDDFD-\uDDFF]|\uDDF9\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDED\uDDEF-\uDDF4\uDDF7\uDDF9\uDDFB\uDDFC\uDDFF]|\uDDFA\uD83C[\uDDE6\uDDEC\uDDF2\uDDF3\uDDF8\uDDFE\uDDFF]|\uDDFB\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDEE\uDDF3\uDDFA]|\uDDFC\uD83C[\uDDEB\uDDF8]|\uDDFD\uD83C\uDDF0|\uDDFE\uD83C[\uDDEA\uDDF9]|\uDDFF\uD83C[\uDDE6\uDDF2\uDDFC]|\uDF44(?:\u200D\uD83D\uDFEB)?|\uDF4B(?:\u200D\uD83D\uDFE9)?|\uDFC3(?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D(?:[\u2640\u2642]\uFE0F?(?:\u200D\u27A1\uFE0F?)?|\u27A1\uFE0F?))?|\uDFF3\uFE0F?(?:\u200D(?:\u26A7\uFE0F?|\uD83C\uDF08))?|\uDFF4(?:\u200D\u2620\uFE0F?|\uDB40\uDC67\uDB40\uDC62\uDB40(?:\uDC65\uDB40\uDC6E\uDB40\uDC67|\uDC73\uDB40\uDC63\uDB40\uDC74|\uDC77\uDB40\uDC6C\uDB40\uDC73)\uDB40\uDC7F)?)|\uD83D(?:[\uDC3F\uDCFD\uDD49\uDD4A\uDD6F\uDD70\uDD73\uDD76-\uDD79\uDD87\uDD8A-\uDD8D\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA\uDECB\uDECD-\uDECF\uDEE0-\uDEE5\uDEE9\uDEF0\uDEF3]\uFE0F?|[\uDC42\uDC43\uDC46-\uDC50\uDC66\uDC67\uDC6B-\uDC6D\uDC72\uDC74-\uDC76\uDC78\uDC7C\uDC83\uDC85\uDC8F\uDC91\uDCAA\uDD7A\uDD95\uDD96\uDE4C\uDE4F\uDEC0\uDECC](?:\uD83C[\uDFFB-\uDFFF])?|[\uDC6E-\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4\uDEB5](?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDD74\uDD90](?:\uD83C[\uDFFB-\uDFFF]|\uFE0F)?|[\uDC00-\uDC07\uDC09-\uDC14\uDC16-\uDC25\uDC27-\uDC3A\uDC3C-\uDC3E\uDC40\uDC44\uDC45\uDC51-\uDC65\uDC6A\uDC79-\uDC7B\uDC7D-\uDC80\uDC84\uDC88-\uDC8E\uDC90\uDC92-\uDCA9\uDCAB-\uDCFC\uDCFF-\uDD3D\uDD4B-\uDD4E\uDD50-\uDD67\uDDA4\uDDFB-\uDE2D\uDE2F-\uDE34\uDE37-\uDE41\uDE43\uDE44\uDE48-\uDE4A\uDE80-\uDEA2\uDEA4-\uDEB3\uDEB7-\uDEBF\uDEC1-\uDEC5\uDED0-\uDED2\uDED5-\uDED8\uDEDC-\uDEDF\uDEEB\uDEEC\uDEF4-\uDEFC\uDFE0-\uDFEB\uDFF0]|\uDC08(?:\u200D\u2B1B)?|\uDC15(?:\u200D\uD83E\uDDBA)?|\uDC26(?:\u200D(?:\u2B1B|\uD83D\uDD25))?|\uDC3B(?:\u200D\u2744\uFE0F?)?|\uDC41\uFE0F?(?:\u200D\uD83D\uDDE8\uFE0F?)?|\uDC68(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDC68\uDC69]\u200D\uD83D(?:\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?)|[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?)|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]))|\uD83C(?:\uDFFB(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83D\uDC68\uD83C[\uDFFC-\uDFFF])|\uD83E(?:[\uDD1D\uDEEF]\u200D\uD83D\uDC68\uD83C[\uDFFC-\uDFFF]|[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3])))?|\uDFFC(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83D\uDC68\uD83C[\uDFFB\uDFFD-\uDFFF])|\uD83E(?:[\uDD1D\uDEEF]\u200D\uD83D\uDC68\uD83C[\uDFFB\uDFFD-\uDFFF]|[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3])))?|\uDFFD(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83D\uDC68\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|\uD83E(?:[\uDD1D\uDEEF]\u200D\uD83D\uDC68\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF]|[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3])))?|\uDFFE(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83D\uDC68\uD83C[\uDFFB-\uDFFD\uDFFF])|\uD83E(?:[\uDD1D\uDEEF]\u200D\uD83D\uDC68\uD83C[\uDFFB-\uDFFD\uDFFF]|[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3])))?|\uDFFF(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83D\uDC68\uD83C[\uDFFB-\uDFFE])|\uD83E(?:[\uDD1D\uDEEF]\u200D\uD83D\uDC68\uD83C[\uDFFB-\uDFFE]|[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3])))?))?|\uDC69(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?[\uDC68\uDC69]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?|\uDC69\u200D\uD83D(?:\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?))|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]))|\uD83C(?:\uDFFB(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83D\uDC69\uD83C[\uDFFC-\uDFFF])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFC-\uDFFF]|\uDEEF\u200D\uD83D\uDC69\uD83C[\uDFFC-\uDFFF])))?|\uDFFC(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83D\uDC69\uD83C[\uDFFB\uDFFD-\uDFFF])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB\uDFFD-\uDFFF]|\uDEEF\u200D\uD83D\uDC69\uD83C[\uDFFB\uDFFD-\uDFFF])))?|\uDFFD(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83D\uDC69\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF]|\uDEEF\u200D\uD83D\uDC69\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])))?|\uDFFE(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83D\uDC69\uD83C[\uDFFB-\uDFFD\uDFFF])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB-\uDFFD\uDFFF]|\uDEEF\u200D\uD83D\uDC69\uD83C[\uDFFB-\uDFFD\uDFFF])))?|\uDFFF(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83D\uDC69\uD83C[\uDFFB-\uDFFE])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB-\uDFFE]|\uDEEF\u200D\uD83D\uDC69\uD83C[\uDFFB-\uDFFE])))?))?|\uDD75(?:\uD83C[\uDFFB-\uDFFF]|\uFE0F)?(?:\u200D[\u2640\u2642]\uFE0F?)?|\uDE2E(?:\u200D\uD83D\uDCA8)?|\uDE35(?:\u200D\uD83D\uDCAB)?|\uDE36(?:\u200D\uD83C\uDF2B\uFE0F?)?|\uDE42(?:\u200D[\u2194\u2195]\uFE0F?)?|\uDEB6(?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D(?:[\u2640\u2642]\uFE0F?(?:\u200D\u27A1\uFE0F?)?|\u27A1\uFE0F?))?)|\uD83E(?:[\uDD0C\uDD0F\uDD18-\uDD1F\uDD30-\uDD34\uDD36\uDD77\uDDB5\uDDB6\uDDBB\uDDD2\uDDD3\uDDD5\uDEC3-\uDEC5\uDEF0\uDEF2-\uDEF8](?:\uD83C[\uDFFB-\uDFFF])?|[\uDD26\uDD35\uDD37-\uDD39\uDD3C-\uDD3E\uDDB8\uDDB9\uDDCD\uDDCF\uDDD4\uDDD6-\uDDDD](?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDDDE\uDDDF](?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDD0D\uDD0E\uDD10-\uDD17\uDD20-\uDD25\uDD27-\uDD2F\uDD3A\uDD3F-\uDD45\uDD47-\uDD76\uDD78-\uDDB4\uDDB7\uDDBA\uDDBC-\uDDCC\uDDD0\uDDE0-\uDDFF\uDE70-\uDE7C\uDE80-\uDE8A\uDE8E-\uDEC2\uDEC6\uDEC8\uDECD-\uDEDC\uDEDF-\uDEEA\uDEEF]|\uDDCE(?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D(?:[\u2640\u2642]\uFE0F?(?:\u200D\u27A1\uFE0F?)?|\u27A1\uFE0F?))?|\uDDD1(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3\uDE70]|\uDD1D\u200D\uD83E\uDDD1|\uDDD1\u200D\uD83E\uDDD2(?:\u200D\uD83E\uDDD2)?|\uDDD2(?:\u200D\uD83E\uDDD2)?))|\uD83C(?:\uDFFB(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFC-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83E\uDDD1\uD83C[\uDFFC-\uDFFF])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3\uDE70]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF]|\uDEEF\u200D\uD83E\uDDD1\uD83C[\uDFFC-\uDFFF])))?|\uDFFC(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB\uDFFD-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83E\uDDD1\uD83C[\uDFFB\uDFFD-\uDFFF])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3\uDE70]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF]|\uDEEF\u200D\uD83E\uDDD1\uD83C[\uDFFB\uDFFD-\uDFFF])))?|\uDFFD(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83E\uDDD1\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3\uDE70]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF]|\uDEEF\u200D\uD83E\uDDD1\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])))?|\uDFFE(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB-\uDFFD\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFD\uDFFF])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3\uDE70]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF]|\uDEEF\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFD\uDFFF])))?|\uDFFF(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB-\uDFFE]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFE])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3\uDE70]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF]|\uDEEF\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFE])))?))?|\uDEF1(?:\uD83C(?:\uDFFB(?:\u200D\uD83E\uDEF2\uD83C[\uDFFC-\uDFFF])?|\uDFFC(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB\uDFFD-\uDFFF])?|\uDFFD(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])?|\uDFFE(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB-\uDFFD\uDFFF])?|\uDFFF(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB-\uDFFE])?))?)/g;
|
package/docs/config/run.md
CHANGED
|
@@ -61,15 +61,35 @@ export default defineConfig({
|
|
|
61
61
|
|
|
62
62
|
## `run.tasks`
|
|
63
63
|
|
|
64
|
-
- **Type:** `Record<string,
|
|
64
|
+
- **Type:** `Record<string, Task | string | string[]>`
|
|
65
65
|
|
|
66
66
|
Defines tasks that can be run with `vp run <task>`.
|
|
67
67
|
|
|
68
|
+
As a shorthand, a task value can be a command string or an array of command strings directly:
|
|
69
|
+
|
|
70
|
+
```ts [vite.config.ts]
|
|
71
|
+
tasks: {
|
|
72
|
+
build: 'vp build',
|
|
73
|
+
check: ['vp lint', 'vp build'],
|
|
74
|
+
}
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
These are equivalent to setting only `command` on a task config:
|
|
78
|
+
|
|
79
|
+
```ts [vite.config.ts]
|
|
80
|
+
tasks: {
|
|
81
|
+
build: { command: 'vp build' },
|
|
82
|
+
check: { command: ['vp lint', 'vp build'] },
|
|
83
|
+
}
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
Use the object form when a task needs other fields like `cache`, `dependsOn`, `env`, or `input`.
|
|
87
|
+
|
|
68
88
|
### `command`
|
|
69
89
|
|
|
70
|
-
- **Type:** `string`
|
|
90
|
+
- **Type:** `string | string[]`
|
|
71
91
|
|
|
72
|
-
Defines the shell command to run for the task.
|
|
92
|
+
Defines the shell command to run for the task. The string is interpreted by a shell, so spaces, quoting, `&&`, pipes, and redirects all work as written on the command line.
|
|
73
93
|
|
|
74
94
|
```ts [vite.config.ts]
|
|
75
95
|
tasks: {
|
|
@@ -79,9 +99,24 @@ tasks: {
|
|
|
79
99
|
}
|
|
80
100
|
```
|
|
81
101
|
|
|
102
|
+
An array runs each entry as its own command, sequentially, equivalent to joining them with `&&`. It is **not** a way to split one command into argv tokens — `['vp', 'build']` would try to run a command called `vp` with no arguments, then a command called `build`, instead of `vp build`.
|
|
103
|
+
|
|
104
|
+
```ts [vite.config.ts]
|
|
105
|
+
tasks: {
|
|
106
|
+
check: {
|
|
107
|
+
// Two commands, run in order
|
|
108
|
+
command: ['vp lint', 'vp build'],
|
|
109
|
+
},
|
|
110
|
+
bad: {
|
|
111
|
+
// Wrong: this is NOT `vp build`; it is `vp` followed by `build`
|
|
112
|
+
command: ['vp', 'build'],
|
|
113
|
+
},
|
|
114
|
+
}
|
|
115
|
+
```
|
|
116
|
+
|
|
82
117
|
Each task defined in `vite.config.ts` must include its own `command`. You cannot define a task in both `vite.config.ts` and `package.json` with the same task name.
|
|
83
118
|
|
|
84
|
-
Commands joined with `&&` are automatically split into independently cached sub-tasks. See [Compound Commands](/guide/run#compound-commands).
|
|
119
|
+
Commands joined with `&&` (or supplied as an array) are automatically split into independently cached sub-tasks. See [Compound Commands](/guide/run#compound-commands).
|
|
85
120
|
|
|
86
121
|
### `dependsOn`
|
|
87
122
|
|
package/docs/guide/cache.md
CHANGED
|
@@ -13,9 +13,18 @@ When a task runs successfully (exit code 0), its terminal output (stdout/stderr)
|
|
|
13
13
|
If everything matches, the cached output is replayed instantly, and the command does not run.
|
|
14
14
|
|
|
15
15
|
::: info
|
|
16
|
-
|
|
16
|
+
By default, only terminal output is cached and replayed. To cache files produced by a task, configure [`output`](/config/run#output) globs. Matching files are archived after a successful run and restored on a cache hit.
|
|
17
17
|
:::
|
|
18
18
|
|
|
19
|
+
```ts [vite.config.ts]
|
|
20
|
+
tasks: {
|
|
21
|
+
build: {
|
|
22
|
+
command: 'vp build',
|
|
23
|
+
output: ['dist/**'],
|
|
24
|
+
},
|
|
25
|
+
}
|
|
26
|
+
```
|
|
27
|
+
|
|
19
28
|
When a cache miss occurs, Vite Task tells you exactly why:
|
|
20
29
|
|
|
21
30
|
```
|
package/docs/guide/env.md
CHANGED
|
@@ -6,6 +6,8 @@
|
|
|
6
6
|
|
|
7
7
|
Managed mode is on by default, so `node`, `npm`, and related shims resolve through Vite+ and pick the right Node.js version for the current project.
|
|
8
8
|
|
|
9
|
+
When a project declares `packageManager` in `package.json`, matching package-manager shims also use that exact package-manager version. For example, `packageManager: "npm@10.9.4"` makes both `npm` and `npx` run through npm 10.9.4. Alias pairs follow the installed package-manager shims: `npm`/`npx`, `pnpm`/`pnpx`, `yarn`/`yarnpkg`, and `bun`/`bunx`. Vite+ does not translate mismatched commands, so a project pinned to `pnpm` still lets `npm` fall back to the npm that comes with the resolved Node.js runtime.
|
|
10
|
+
|
|
9
11
|
By default, Vite+ stores its managed runtime and related files in `~/.vite-plus`. If needed, you can override that location with `VP_HOME`.
|
|
10
12
|
|
|
11
13
|
If you want to keep that behavior, run:
|
|
@@ -99,6 +101,7 @@ vp env use --unset # Remove the session override
|
|
|
99
101
|
vp env current # Show current resolved environment
|
|
100
102
|
vp env current --json # JSON output for automation
|
|
101
103
|
vp env which node # Show which node binary will be used
|
|
104
|
+
vp env which npx # Show pinned package-manager alias when packageManager matches
|
|
102
105
|
vp env list-remote --lts # List only LTS versions
|
|
103
106
|
|
|
104
107
|
# Execute
|
|
@@ -71,7 +71,7 @@ You can also manually set up the Zed config:
|
|
|
71
71
|
"oxfmt": {
|
|
72
72
|
"initialization_options": {
|
|
73
73
|
"settings": {
|
|
74
|
-
"configPath": "./vite.config.ts",
|
|
74
|
+
"fmt.configPath": "./vite.config.ts",
|
|
75
75
|
"run": "onSave"
|
|
76
76
|
}
|
|
77
77
|
}
|
|
@@ -98,4 +98,4 @@ You can also manually set up the Zed config:
|
|
|
98
98
|
}
|
|
99
99
|
```
|
|
100
100
|
|
|
101
|
-
Setting `oxfmt.configPath` to `./vite.config.ts` keeps editor format-on-save aligned with the `fmt` block in your Vite+ config. The full generated config covers additional languages (CSS, HTML, JSON, Markdown, etc.) — run `vp create` or `vp migrate` to get the complete file written automatically.
|
|
101
|
+
Setting `oxfmt.fmt.configPath` to `./vite.config.ts` keeps editor format-on-save aligned with the `fmt` block in your Vite+ config. The full generated config covers additional languages (CSS, HTML, JSON, Markdown, etc.) — run `vp create` or `vp migrate` to get the complete file written automatically.
|
package/docs/guide/install.md
CHANGED
|
@@ -20,6 +20,8 @@ Vite+ detects the package manager from the workspace root in this order:
|
|
|
20
20
|
|
|
21
21
|
If none of those files are present, `vp` falls back to `pnpm` by default. Vite+ automatically downloads the matching package manager and uses it for the command you ran.
|
|
22
22
|
|
|
23
|
+
The explicit `packageManager` field also affects matching package-manager shims. If a project has `packageManager: "npm@10.9.4"`, `npm` and `npx` use npm 10.9.4. Other generated alias pairs behave the same way: `pnpm`/`pnpx`, `yarn`/`yarnpkg`, and `bun`/`bunx`. Mismatched tools are not translated; `npm` in a `pnpm` project still resolves as npm.
|
|
24
|
+
|
|
23
25
|
## Usage
|
|
24
26
|
|
|
25
27
|
```bash
|
package/docs/guide/run.md
CHANGED
|
@@ -171,6 +171,8 @@ vp run --filter "@my/*" --filter "!@my/utils" build
|
|
|
171
171
|
|
|
172
172
|
Multiple `--filter` flags are combined as a union. Exclusion filters are applied after all inclusions.
|
|
173
173
|
|
|
174
|
+
When a `--filter` matches no packages, Vite+ prints a warning and exits successfully. Pass `--fail-if-no-match` to abort the run when any filter matches nothing instead.
|
|
175
|
+
|
|
174
176
|
### Workspace Root (`-w`)
|
|
175
177
|
|
|
176
178
|
Explicitly run the task in the workspace root package:
|
|
@@ -18,9 +18,12 @@ If you are migrating an existing project and it still depends on older Vite or V
|
|
|
18
18
|
## `vp check` does not run type-aware lint rules or type checks
|
|
19
19
|
|
|
20
20
|
- Confirm that `lint.options.typeAware` and `lint.options.typeCheck` are enabled in `vite.config.ts`
|
|
21
|
-
- Check whether your `tsconfig.json` uses `compilerOptions.baseUrl`
|
|
21
|
+
- Check whether your `tsconfig.json` still uses `compilerOptions.baseUrl`
|
|
22
22
|
|
|
23
|
-
The Oxlint type checker path powered by `tsgolint` does not support `baseUrl
|
|
23
|
+
The Oxlint type checker path powered by `tsgolint` does not support `baseUrl`.
|
|
24
|
+
`vp migrate` and `vp lint --init` try to run the `vp dlx @andrewbranch/ts5to6 --fixBaseUrl .`
|
|
25
|
+
fix before enabling type-aware linting. If that fix fails or is declined, Vite+
|
|
26
|
+
skips `typeAware` and `typeCheck`.
|
|
24
27
|
|
|
25
28
|
## `vp lint` / `vp fmt` may fail to read `vite.config.ts`
|
|
26
29
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "vite-plus",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.23",
|
|
4
4
|
"description": "The Unified Toolchain for the Web",
|
|
5
5
|
"homepage": "https://viteplus.dev/guide",
|
|
6
6
|
"bugs": {
|
|
@@ -328,13 +328,13 @@
|
|
|
328
328
|
}
|
|
329
329
|
},
|
|
330
330
|
"dependencies": {
|
|
331
|
-
"@oxc-project/types": "=0.
|
|
331
|
+
"@oxc-project/types": "=0.133.0",
|
|
332
332
|
"@oxlint/plugins": "=1.61.0",
|
|
333
|
-
"oxfmt": "=0.
|
|
334
|
-
"oxlint": "=1.
|
|
335
|
-
"oxlint-tsgolint": "=0.
|
|
336
|
-
"@voidzero-dev/vite-plus-
|
|
337
|
-
"@voidzero-dev/vite-plus-
|
|
333
|
+
"oxfmt": "=0.52.0",
|
|
334
|
+
"oxlint": "=1.67.0",
|
|
335
|
+
"oxlint-tsgolint": "=0.23.0",
|
|
336
|
+
"@voidzero-dev/vite-plus-test": "0.1.23",
|
|
337
|
+
"@voidzero-dev/vite-plus-core": "0.1.23"
|
|
338
338
|
},
|
|
339
339
|
"devDependencies": {
|
|
340
340
|
"@napi-rs/cli": "^3.6.1",
|
|
@@ -354,13 +354,13 @@
|
|
|
354
354
|
"mri": "^1.2.0",
|
|
355
355
|
"nanotar": "^0.3.0",
|
|
356
356
|
"picocolors": "^1.1.1",
|
|
357
|
-
"rolldown-plugin-dts": "^0.
|
|
358
|
-
"semver": "^7.
|
|
357
|
+
"rolldown-plugin-dts": "^0.25.1",
|
|
358
|
+
"semver": "^7.8.0",
|
|
359
359
|
"tsdown": "^0.22.0",
|
|
360
360
|
"validate-npm-package-name": "^7.0.2",
|
|
361
361
|
"yaml": "^2.8.1",
|
|
362
362
|
"@voidzero-dev/vite-plus-prompts": "0.0.0",
|
|
363
|
-
"vite": "npm:@voidzero-dev/vite-plus-core@0.1.
|
|
363
|
+
"vite": "npm:@voidzero-dev/vite-plus-core@0.1.23",
|
|
364
364
|
"@voidzero-dev/vite-plus-tools": "0.0.0"
|
|
365
365
|
},
|
|
366
366
|
"napi": {
|
|
@@ -381,14 +381,14 @@
|
|
|
381
381
|
"node": "^20.19.0 || >=22.12.0"
|
|
382
382
|
},
|
|
383
383
|
"optionalDependencies": {
|
|
384
|
-
"@voidzero-dev/vite-plus-darwin-arm64": "0.1.
|
|
385
|
-
"@voidzero-dev/vite-plus-darwin-x64": "0.1.
|
|
386
|
-
"@voidzero-dev/vite-plus-linux-arm64-gnu": "0.1.
|
|
387
|
-
"@voidzero-dev/vite-plus-linux-arm64-musl": "0.1.
|
|
388
|
-
"@voidzero-dev/vite-plus-linux-x64-gnu": "0.1.
|
|
389
|
-
"@voidzero-dev/vite-plus-linux-x64-musl": "0.1.
|
|
390
|
-
"@voidzero-dev/vite-plus-win32-x64-msvc": "0.1.
|
|
391
|
-
"@voidzero-dev/vite-plus-win32-arm64-msvc": "0.1.
|
|
384
|
+
"@voidzero-dev/vite-plus-darwin-arm64": "0.1.23",
|
|
385
|
+
"@voidzero-dev/vite-plus-darwin-x64": "0.1.23",
|
|
386
|
+
"@voidzero-dev/vite-plus-linux-arm64-gnu": "0.1.23",
|
|
387
|
+
"@voidzero-dev/vite-plus-linux-arm64-musl": "0.1.23",
|
|
388
|
+
"@voidzero-dev/vite-plus-linux-x64-gnu": "0.1.23",
|
|
389
|
+
"@voidzero-dev/vite-plus-linux-x64-musl": "0.1.23",
|
|
390
|
+
"@voidzero-dev/vite-plus-win32-x64-msvc": "0.1.23",
|
|
391
|
+
"@voidzero-dev/vite-plus-win32-arm64-msvc": "0.1.23"
|
|
392
392
|
},
|
|
393
393
|
"scripts": {
|
|
394
394
|
"build": "oxnode -C dev ./build.ts",
|
|
@@ -1,138 +0,0 @@
|
|
|
1
|
-
import { n as eastAsianWidth, t as stripAnsi } from "./strip-ansi-D-eYYcD2.js";
|
|
2
|
-
import { t as sliceAnsi } from "./slice-ansi-e4todZeH.js";
|
|
3
|
-
//#region ../../node_modules/.pnpm/string-width@8.1.0/node_modules/string-width/index.js
|
|
4
|
-
/**
|
|
5
|
-
Logic:
|
|
6
|
-
- Segment graphemes to match how terminals render clusters.
|
|
7
|
-
- Width rules:
|
|
8
|
-
1. Skip non-printing clusters (Default_Ignorable, Control, pure Mark, lone Surrogates). Tabs are ignored by design.
|
|
9
|
-
2. RGI emoji clusters (\p{RGI_Emoji}) are double-width.
|
|
10
|
-
3. Otherwise use East Asian Width of the cluster’s first visible code point, and add widths for trailing Halfwidth/Fullwidth Forms within the same cluster (e.g., dakuten/handakuten/prolonged sound mark).
|
|
11
|
-
*/
|
|
12
|
-
const segmenter = new Intl.Segmenter();
|
|
13
|
-
const zeroWidthClusterRegex = /^(?:\p{Default_Ignorable_Code_Point}|\p{Control}|\p{Mark}|\p{Surrogate})+$/v;
|
|
14
|
-
const leadingNonPrintingRegex = /^[\p{Default_Ignorable_Code_Point}\p{Control}\p{Format}\p{Mark}\p{Surrogate}]+/v;
|
|
15
|
-
const rgiEmojiRegex = /^\p{RGI_Emoji}$/v;
|
|
16
|
-
function baseVisible(segment) {
|
|
17
|
-
return segment.replace(leadingNonPrintingRegex, "");
|
|
18
|
-
}
|
|
19
|
-
function isZeroWidthCluster(segment) {
|
|
20
|
-
return zeroWidthClusterRegex.test(segment);
|
|
21
|
-
}
|
|
22
|
-
function trailingHalfwidthWidth(segment, eastAsianWidthOptions) {
|
|
23
|
-
let extra = 0;
|
|
24
|
-
if (segment.length > 1) {
|
|
25
|
-
for (const char of segment.slice(1)) if (char >= "" && char <= "") extra += eastAsianWidth(char.codePointAt(0), eastAsianWidthOptions);
|
|
26
|
-
}
|
|
27
|
-
return extra;
|
|
28
|
-
}
|
|
29
|
-
function stringWidth(input, options = {}) {
|
|
30
|
-
if (typeof input !== "string" || input.length === 0) return 0;
|
|
31
|
-
const { ambiguousIsNarrow = true, countAnsiEscapeCodes = false } = options;
|
|
32
|
-
let string = input;
|
|
33
|
-
if (!countAnsiEscapeCodes) string = stripAnsi(string);
|
|
34
|
-
if (string.length === 0) return 0;
|
|
35
|
-
let width = 0;
|
|
36
|
-
const eastAsianWidthOptions = { ambiguousAsWide: !ambiguousIsNarrow };
|
|
37
|
-
for (const { segment } of segmenter.segment(string)) {
|
|
38
|
-
if (isZeroWidthCluster(segment)) continue;
|
|
39
|
-
if (rgiEmojiRegex.test(segment)) {
|
|
40
|
-
width += 2;
|
|
41
|
-
continue;
|
|
42
|
-
}
|
|
43
|
-
const codePoint = baseVisible(segment).codePointAt(0);
|
|
44
|
-
width += eastAsianWidth(codePoint, eastAsianWidthOptions);
|
|
45
|
-
width += trailingHalfwidthWidth(segment, eastAsianWidthOptions);
|
|
46
|
-
}
|
|
47
|
-
return width;
|
|
48
|
-
}
|
|
49
|
-
//#endregion
|
|
50
|
-
//#region ../../node_modules/.pnpm/cli-truncate@5.1.1/node_modules/cli-truncate/index.js
|
|
51
|
-
function getIndexOfNearestSpace(string, wantedIndex, shouldSearchRight) {
|
|
52
|
-
if (string.charAt(wantedIndex) === " ") return wantedIndex;
|
|
53
|
-
const direction = shouldSearchRight ? 1 : -1;
|
|
54
|
-
for (let index = 0; index <= 3; index++) {
|
|
55
|
-
const finalIndex = wantedIndex + index * direction;
|
|
56
|
-
if (string.charAt(finalIndex) === " ") return finalIndex;
|
|
57
|
-
}
|
|
58
|
-
return wantedIndex;
|
|
59
|
-
}
|
|
60
|
-
function cliTruncate(text, columns, options = {}) {
|
|
61
|
-
const { position = "end", space = false, preferTruncationOnSpace = false } = options;
|
|
62
|
-
let { truncationCharacter = "…" } = options;
|
|
63
|
-
if (typeof text !== "string") throw new TypeError(`Expected \`input\` to be a string, got ${typeof text}`);
|
|
64
|
-
if (typeof columns !== "number") throw new TypeError(`Expected \`columns\` to be a number, got ${typeof columns}`);
|
|
65
|
-
if (columns < 1) return "";
|
|
66
|
-
const length = stringWidth(text);
|
|
67
|
-
if (length <= columns) return text;
|
|
68
|
-
if (columns === 1) return truncationCharacter;
|
|
69
|
-
const ANSI = {
|
|
70
|
-
ESC: 27,
|
|
71
|
-
LEFT_BRACKET: 91,
|
|
72
|
-
LETTER_M: 109
|
|
73
|
-
};
|
|
74
|
-
const isSgrParameter = (code) => code >= 48 && code <= 57 || code === 59;
|
|
75
|
-
function leadingSgrSpanEndIndex(string) {
|
|
76
|
-
let index = 0;
|
|
77
|
-
while (index + 2 < string.length && string.codePointAt(index) === ANSI.ESC && string.codePointAt(index + 1) === ANSI.LEFT_BRACKET) {
|
|
78
|
-
let j = index + 2;
|
|
79
|
-
while (j < string.length && isSgrParameter(string.codePointAt(j))) j++;
|
|
80
|
-
if (j < string.length && string.codePointAt(j) === ANSI.LETTER_M) {
|
|
81
|
-
index = j + 1;
|
|
82
|
-
continue;
|
|
83
|
-
}
|
|
84
|
-
break;
|
|
85
|
-
}
|
|
86
|
-
return index;
|
|
87
|
-
}
|
|
88
|
-
function trailingSgrSpanStartIndex(string) {
|
|
89
|
-
let start = string.length;
|
|
90
|
-
while (start > 1 && string.codePointAt(start - 1) === ANSI.LETTER_M) {
|
|
91
|
-
let j = start - 2;
|
|
92
|
-
while (j >= 0 && isSgrParameter(string.codePointAt(j))) j--;
|
|
93
|
-
if (j >= 1 && string.codePointAt(j - 1) === ANSI.ESC && string.codePointAt(j) === ANSI.LEFT_BRACKET) {
|
|
94
|
-
start = j - 1;
|
|
95
|
-
continue;
|
|
96
|
-
}
|
|
97
|
-
break;
|
|
98
|
-
}
|
|
99
|
-
return start;
|
|
100
|
-
}
|
|
101
|
-
function appendWithInheritedStyleFromEnd(visible, suffix) {
|
|
102
|
-
const start = trailingSgrSpanStartIndex(visible);
|
|
103
|
-
if (start === visible.length) return visible + suffix;
|
|
104
|
-
return visible.slice(0, start) + suffix + visible.slice(start);
|
|
105
|
-
}
|
|
106
|
-
function prependWithInheritedStyleFromStart(prefix, visible) {
|
|
107
|
-
const end = leadingSgrSpanEndIndex(visible);
|
|
108
|
-
if (end === 0) return prefix + visible;
|
|
109
|
-
return visible.slice(0, end) + prefix + visible.slice(end);
|
|
110
|
-
}
|
|
111
|
-
if (position === "start") {
|
|
112
|
-
if (preferTruncationOnSpace) {
|
|
113
|
-
const right = sliceAnsi(text, getIndexOfNearestSpace(text, length - columns + 1, true), length).trim();
|
|
114
|
-
return prependWithInheritedStyleFromStart(truncationCharacter, right);
|
|
115
|
-
}
|
|
116
|
-
if (space) truncationCharacter += " ";
|
|
117
|
-
const right = sliceAnsi(text, length - columns + stringWidth(truncationCharacter), length);
|
|
118
|
-
return prependWithInheritedStyleFromStart(truncationCharacter, right);
|
|
119
|
-
}
|
|
120
|
-
if (position === "middle") {
|
|
121
|
-
if (space) truncationCharacter = ` ${truncationCharacter} `;
|
|
122
|
-
const half = Math.floor(columns / 2);
|
|
123
|
-
if (preferTruncationOnSpace) {
|
|
124
|
-
const spaceNearFirstBreakPoint = getIndexOfNearestSpace(text, half);
|
|
125
|
-
const spaceNearSecondBreakPoint = getIndexOfNearestSpace(text, length - (columns - half) + 1, true);
|
|
126
|
-
return sliceAnsi(text, 0, spaceNearFirstBreakPoint) + truncationCharacter + sliceAnsi(text, spaceNearSecondBreakPoint, length).trim();
|
|
127
|
-
}
|
|
128
|
-
return sliceAnsi(text, 0, half) + truncationCharacter + sliceAnsi(text, length - (columns - half) + stringWidth(truncationCharacter), length);
|
|
129
|
-
}
|
|
130
|
-
if (position === "end") {
|
|
131
|
-
if (preferTruncationOnSpace) return appendWithInheritedStyleFromEnd(sliceAnsi(text, 0, getIndexOfNearestSpace(text, columns - 1)), truncationCharacter);
|
|
132
|
-
if (space) truncationCharacter = ` ${truncationCharacter}`;
|
|
133
|
-
return appendWithInheritedStyleFromEnd(sliceAnsi(text, 0, columns - stringWidth(truncationCharacter)), truncationCharacter);
|
|
134
|
-
}
|
|
135
|
-
throw new Error(`Expected \`options.position\` to be either \`start\`, \`middle\` or \`end\`, got ${position}`);
|
|
136
|
-
}
|
|
137
|
-
//#endregion
|
|
138
|
-
export { cliTruncate as default };
|
package/dist/dist-DZfItHAr.js
DELETED
|
@@ -1,113 +0,0 @@
|
|
|
1
|
-
import { a as ansiStyles, i as isWide, r as isFullWidth } from "./strip-ansi-D-eYYcD2.js";
|
|
2
|
-
//#region ../../node_modules/.pnpm/is-fullwidth-code-point@5.1.0/node_modules/is-fullwidth-code-point/index.js
|
|
3
|
-
function isFullwidthCodePoint(codePoint) {
|
|
4
|
-
if (!Number.isInteger(codePoint)) return false;
|
|
5
|
-
return isFullWidth(codePoint) || isWide(codePoint);
|
|
6
|
-
}
|
|
7
|
-
//#endregion
|
|
8
|
-
//#region ../../node_modules/.pnpm/slice-ansi@7.1.2/node_modules/slice-ansi/index.js
|
|
9
|
-
const ESCAPES = new Set([27, 155]);
|
|
10
|
-
const CODE_POINT_0 = "0".codePointAt(0);
|
|
11
|
-
const CODE_POINT_9 = "9".codePointAt(0);
|
|
12
|
-
const MAX_ANSI_SEQUENCE_LENGTH = 19;
|
|
13
|
-
const endCodesSet = /* @__PURE__ */ new Set();
|
|
14
|
-
const endCodesMap = /* @__PURE__ */ new Map();
|
|
15
|
-
for (const [start, end] of ansiStyles.codes) {
|
|
16
|
-
endCodesSet.add(ansiStyles.color.ansi(end));
|
|
17
|
-
endCodesMap.set(ansiStyles.color.ansi(start), ansiStyles.color.ansi(end));
|
|
18
|
-
}
|
|
19
|
-
function getEndCode(code) {
|
|
20
|
-
if (endCodesSet.has(code)) return code;
|
|
21
|
-
if (endCodesMap.has(code)) return endCodesMap.get(code);
|
|
22
|
-
code = code.slice(2);
|
|
23
|
-
if (code.includes(";")) code = code[0] + "0";
|
|
24
|
-
const returnValue = ansiStyles.codes.get(Number.parseInt(code, 10));
|
|
25
|
-
if (returnValue) return ansiStyles.color.ansi(returnValue);
|
|
26
|
-
return ansiStyles.reset.open;
|
|
27
|
-
}
|
|
28
|
-
function findNumberIndex(string) {
|
|
29
|
-
for (let index = 0; index < string.length; index++) {
|
|
30
|
-
const codePoint = string.codePointAt(index);
|
|
31
|
-
if (codePoint >= CODE_POINT_0 && codePoint <= CODE_POINT_9) return index;
|
|
32
|
-
}
|
|
33
|
-
return -1;
|
|
34
|
-
}
|
|
35
|
-
function parseAnsiCode(string, offset) {
|
|
36
|
-
string = string.slice(offset, offset + MAX_ANSI_SEQUENCE_LENGTH);
|
|
37
|
-
const startIndex = findNumberIndex(string);
|
|
38
|
-
if (startIndex !== -1) {
|
|
39
|
-
let endIndex = string.indexOf("m", startIndex);
|
|
40
|
-
if (endIndex === -1) endIndex = string.length;
|
|
41
|
-
return string.slice(0, endIndex + 1);
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
function tokenize(string, endCharacter = Number.POSITIVE_INFINITY) {
|
|
45
|
-
const returnValue = [];
|
|
46
|
-
let index = 0;
|
|
47
|
-
let visibleCount = 0;
|
|
48
|
-
while (index < string.length) {
|
|
49
|
-
const codePoint = string.codePointAt(index);
|
|
50
|
-
if (ESCAPES.has(codePoint)) {
|
|
51
|
-
const code = parseAnsiCode(string, index);
|
|
52
|
-
if (code) {
|
|
53
|
-
returnValue.push({
|
|
54
|
-
type: "ansi",
|
|
55
|
-
code,
|
|
56
|
-
endCode: getEndCode(code)
|
|
57
|
-
});
|
|
58
|
-
index += code.length;
|
|
59
|
-
continue;
|
|
60
|
-
}
|
|
61
|
-
}
|
|
62
|
-
const isFullWidth = isFullwidthCodePoint(codePoint);
|
|
63
|
-
const character = String.fromCodePoint(codePoint);
|
|
64
|
-
returnValue.push({
|
|
65
|
-
type: "character",
|
|
66
|
-
value: character,
|
|
67
|
-
isFullWidth
|
|
68
|
-
});
|
|
69
|
-
index += character.length;
|
|
70
|
-
visibleCount += isFullWidth ? 2 : character.length;
|
|
71
|
-
if (visibleCount >= endCharacter) break;
|
|
72
|
-
}
|
|
73
|
-
return returnValue;
|
|
74
|
-
}
|
|
75
|
-
function reduceAnsiCodes(codes) {
|
|
76
|
-
let returnValue = [];
|
|
77
|
-
for (const code of codes) if (code.code === ansiStyles.reset.open) returnValue = [];
|
|
78
|
-
else if (endCodesSet.has(code.code)) returnValue = returnValue.filter((returnValueCode) => returnValueCode.endCode !== code.code);
|
|
79
|
-
else {
|
|
80
|
-
returnValue = returnValue.filter((returnValueCode) => returnValueCode.endCode !== code.endCode);
|
|
81
|
-
returnValue.push(code);
|
|
82
|
-
}
|
|
83
|
-
return returnValue;
|
|
84
|
-
}
|
|
85
|
-
function undoAnsiCodes(codes) {
|
|
86
|
-
return reduceAnsiCodes(codes).map(({ endCode }) => endCode).reverse().join("");
|
|
87
|
-
}
|
|
88
|
-
function sliceAnsi(string, start, end) {
|
|
89
|
-
const tokens = tokenize(string, end);
|
|
90
|
-
let activeCodes = [];
|
|
91
|
-
let position = 0;
|
|
92
|
-
let returnValue = "";
|
|
93
|
-
let include = false;
|
|
94
|
-
for (const token of tokens) {
|
|
95
|
-
if (end !== void 0 && position >= end) break;
|
|
96
|
-
if (token.type === "ansi") {
|
|
97
|
-
activeCodes.push(token);
|
|
98
|
-
if (include) returnValue += token.code;
|
|
99
|
-
} else {
|
|
100
|
-
if (!include && position >= start) {
|
|
101
|
-
include = true;
|
|
102
|
-
activeCodes = reduceAnsiCodes(activeCodes);
|
|
103
|
-
returnValue = activeCodes.map(({ code }) => code).join("");
|
|
104
|
-
}
|
|
105
|
-
if (include) returnValue += token.value;
|
|
106
|
-
position += token.isFullWidth ? 2 : token.value.length;
|
|
107
|
-
}
|
|
108
|
-
}
|
|
109
|
-
returnValue += undoAnsiCodes(activeCodes);
|
|
110
|
-
return returnValue;
|
|
111
|
-
}
|
|
112
|
-
//#endregion
|
|
113
|
-
export { sliceAnsi as t };
|