vite-plus 0.2.9 → 0.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +29 -29
- package/README.md +6 -5
- package/binding/index.cjs +63 -55
- package/binding/index.d.cts +218 -14
- package/dist/{agent-DQU8uS6P.js → agent-C5jMYVfB.js} +3 -2
- package/dist/bin.js +101 -60
- package/dist/cli-parse-DHE8NrBU.js +13 -0
- package/dist/client/bundledDevClient.mjs +1 -1
- package/dist/client/client.mjs +1 -1
- package/dist/client/env.mjs +1 -1
- package/dist/client.d.ts +1 -1
- package/dist/command-CLJK5jGW.js +2 -0
- package/dist/command-CguLh2KL.js +471 -0
- package/dist/config/bin.js +85 -55
- package/dist/{constants-CG513DRa.js → constants-0IAVgpox.js} +5 -3
- package/dist/create/bin.d.ts +13 -5
- package/dist/create/bin.js +55 -232
- package/dist/{define-config-DyNLA_f0.cjs → define-config-DIE9de46.cjs} +2 -2
- package/dist/{define-config-DWoAkNdp.d.ts → define-config-DPNEJxPz.d.ts} +5 -9
- package/dist/{define-config-CV4bQG_8.js → define-config-U3_xg7i-.js} +2 -2
- 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-DfmT__Aw.js +619 -0
- package/dist/{editor-g4PosU99.js → editor-B5-lvRaU.js} +619 -88
- package/dist/{terminal-Bz-ps6rJ.js → help-BmKpeOP9.js} +1 -38
- package/dist/hooks/bin.js +9 -113
- package/dist/{hooks-pNCBWtFT.js → hooks-C-4gykWR.js} +5 -2
- package/dist/index.cjs +2 -2
- package/dist/index.d.ts +2 -2
- package/dist/index.js +2 -2
- package/dist/internal.d.ts +1 -1
- package/dist/internal.js +1 -1
- package/dist/migration/bin.js +76 -146
- package/dist/migration/compat/worker.js +1 -1
- package/dist/module-runner.d.ts +1 -1
- package/dist/module-runner.js +1 -1
- package/dist/{oxlint-plugin-config-BEZ9IUf7.js → oxlint-plugin-config-Drdl67Xp.js} +1 -1
- package/dist/oxlint-plugin.d.ts +2 -2
- package/dist/oxlint-plugin.js +1 -1
- package/dist/{pack-PvUg_xpv.d.ts → pack-BK38MLVZ.d.ts} +1 -1
- package/dist/pack-bin.d.ts +2 -3
- package/dist/pack-bin.js +9 -625
- package/dist/pack-client.d.ts +1 -1
- package/dist/pack.d.ts +2 -2
- package/dist/pack.js +1 -1
- package/dist/{package-B4T8RGMG.js → package-BZz2Ij68.js} +2 -2
- package/dist/{prompts-CHz_98bJ.js → prompts-CtzEgFY-.js} +7 -1872
- package/dist/{report-BS7ULx7A.js → report-CK5TnTsr.js} +2 -0
- package/dist/{resolve-vite-config-Dmeyeyj-.js → resolve-vite-config-CGks1xR7.js} +3 -3
- package/dist/resolve-vite-config-Dnmc-lBc.js +2 -0
- package/dist/semver-CaDAb8vV.js +1400 -0
- package/dist/staged/bin.js +82 -187
- package/dist/sync-versions/bin.d.ts +1 -0
- package/dist/sync-versions/bin.js +3884 -0
- package/dist/sync-versions/bin.mjs +13323 -0
- package/dist/terminal-MKGAuy-p.js +39 -0
- package/dist/toolchain.js +11 -11
- package/dist/toolchain.json +11 -11
- package/dist/{tsconfig-7v_BHagU.js → tsconfig-CUggNuJR.js} +5 -4
- package/dist/tsconfig-VAbm4ZzJ.js +2 -0
- package/dist/tsgolint-path.d.ts +3 -4
- package/dist/types/customEvent.d.ts +1 -1
- package/dist/types/hmrPayload.d.ts +1 -1
- package/dist/types/hot.d.ts +1 -1
- package/dist/types/import-meta.d.ts +1 -1
- package/dist/types/importGlob.d.ts +1 -1
- package/dist/types/importMeta.d.ts +1 -1
- package/dist/types/metadata.d.ts +1 -1
- package/dist/version.d.ts +2 -3
- package/dist/version.js +4 -3
- package/dist/versions.js +6 -6
- package/dist/vitest-ecosystem-BiRqcaRI.js +23 -0
- package/docs/guide/check.md +1 -0
- package/docs/guide/ci.md +42 -2
- package/docs/guide/env.md +136 -50
- package/docs/guide/ide-integration.md +14 -2
- package/docs/guide/index.md +1 -1
- package/docs/guide/install.md +5 -2
- package/docs/guide/installer-env-vars.md +51 -5
- package/docs/guide/migrate-rules.md +66 -2
- package/docs/guide/migrate.md +5 -5
- package/docs/guide/test.md +8 -0
- package/docs/guide/upgrade.md +48 -1
- package/package.json +34 -37
- package/dist/lib-L3DWSRQp.js +0 -75
- package/docs/_data/team.ts +0 -131
- package/docs/package.json +0 -30
- package/docs/pnpm-lock.yaml +0 -4003
- package/docs/pnpm-workspace.yaml +0 -13
- package/docs/public/checkmark.svg +0 -1
- package/docs/public/cta-background.jpg +0 -0
- package/docs/public/favicon.svg +0 -1
- package/docs/public/icon.svg +0 -1
- package/docs/public/logo.svg +0 -1
- package/docs/public/og.jpg +0 -0
- package/docs/vite.config.ts +0 -20
- package/dist/{json-qlK6UH0r.js → json-cULBl7Pi.js} +107 -107
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { shouldPrintVitePlusHeader, vitePlusHeader } from "../binding/index.js";
|
|
2
1
|
import { stripVTControlCharacters, styleText } from "node:util";
|
|
3
2
|
//#region src/utils/help.ts
|
|
4
3
|
const HELP_RIGHT_MARGIN = 4;
|
|
@@ -89,40 +88,4 @@ function renderCliDoc(doc, options = {}) {
|
|
|
89
88
|
return output.join("\n");
|
|
90
89
|
}
|
|
91
90
|
//#endregion
|
|
92
|
-
|
|
93
|
-
function log(message) {
|
|
94
|
-
console.log(message);
|
|
95
|
-
}
|
|
96
|
-
/**
|
|
97
|
-
* Emit the Vite+ banner (header line + trailing blank line) to stdout.
|
|
98
|
-
* Gating (non-TTY, git hooks) lives in `shouldPrintVitePlusHeader` on the
|
|
99
|
-
* Rust side so both CLIs stay in sync.
|
|
100
|
-
*/
|
|
101
|
-
function printHeader() {
|
|
102
|
-
if (!shouldPrintVitePlusHeader()) return;
|
|
103
|
-
log(vitePlusHeader());
|
|
104
|
-
log("");
|
|
105
|
-
}
|
|
106
|
-
function accent(text) {
|
|
107
|
-
return styleText("blue", text);
|
|
108
|
-
}
|
|
109
|
-
function muted(text) {
|
|
110
|
-
return styleText("gray", text);
|
|
111
|
-
}
|
|
112
|
-
function success(text) {
|
|
113
|
-
return styleText("green", text);
|
|
114
|
-
}
|
|
115
|
-
function formatDuration(durationMs) {
|
|
116
|
-
if (durationMs < 1e3) return `${Math.max(1, durationMs)}ms`;
|
|
117
|
-
const durationSeconds = durationMs / 1e3;
|
|
118
|
-
if (durationSeconds < 10) return `${durationSeconds.toFixed(1)}s`;
|
|
119
|
-
return `${Math.round(durationSeconds)}s`;
|
|
120
|
-
}
|
|
121
|
-
function warnMsg(msg) {
|
|
122
|
-
console.error(styleText(["yellow", "bold"], "warn:"), msg);
|
|
123
|
-
}
|
|
124
|
-
function errorMsg(msg) {
|
|
125
|
-
console.error(styleText(["red", "bold"], "error:"), msg);
|
|
126
|
-
}
|
|
127
|
-
//#endregion
|
|
128
|
-
export { muted as a, warnMsg as c, log as i, renderCliDoc as l, errorMsg as n, printHeader as o, formatDuration as r, success as s, accent as t };
|
|
91
|
+
export { renderCliDoc as t };
|
package/dist/hooks/bin.js
CHANGED
|
@@ -1,127 +1,23 @@
|
|
|
1
|
-
import { i as log
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
|
|
5
|
-
const KNOWN_HOOKS_ARG_KEYS = /* @__PURE__ */ new Set([
|
|
6
|
-
"_",
|
|
7
|
-
"help",
|
|
8
|
-
"h",
|
|
9
|
-
"hooks-dir"
|
|
10
|
-
]);
|
|
11
|
-
/**
|
|
12
|
-
* Reject leftover positionals and unknown flags before enable/disable mutate state.
|
|
13
|
-
*/
|
|
14
|
-
function unexpectedHooksArgsError(args) {
|
|
15
|
-
const extra = args._.map(String).filter((value) => value !== "");
|
|
16
|
-
if (extra.length > 0) return `Unexpected argument "${extra[0]}". Use --hooks-dir <path> to set a custom hooks directory.`;
|
|
17
|
-
for (const key of Object.keys(args)) if (!KNOWN_HOOKS_ARG_KEYS.has(key)) return `Unknown option "--${key}".`;
|
|
18
|
-
return null;
|
|
19
|
-
}
|
|
20
|
-
//#endregion
|
|
1
|
+
import { i as log } from "../terminal-MKGAuy-p.js";
|
|
2
|
+
import { l as status, n as disable, r as enable } from "../hooks-C-4gykWR.js";
|
|
3
|
+
import { t as unwrapCliParseOutcome } from "../cli-parse-DHE8NrBU.js";
|
|
4
|
+
import { parseHooksArgs } from "../../binding/index.js";
|
|
21
5
|
//#region src/hooks/bin.ts
|
|
22
|
-
const SUBCOMMANDS = [
|
|
23
|
-
"enable",
|
|
24
|
-
"disable",
|
|
25
|
-
"status"
|
|
26
|
-
];
|
|
27
|
-
function isSubcommand(value) {
|
|
28
|
-
return !!value && SUBCOMMANDS.includes(value);
|
|
29
|
-
}
|
|
30
|
-
function printHelp() {
|
|
31
|
-
const helpMessage = renderCliDoc({
|
|
32
|
-
usage: "vp hooks <COMMAND> [OPTIONS]",
|
|
33
|
-
summary: "Manage the Vite+ Git hook dispatcher for this repository.",
|
|
34
|
-
documentationUrl: "https://viteplus.dev/guide/commit-hooks",
|
|
35
|
-
sections: [
|
|
36
|
-
{
|
|
37
|
-
title: "Commands",
|
|
38
|
-
rows: [
|
|
39
|
-
{
|
|
40
|
-
label: "enable",
|
|
41
|
-
description: "Install or refresh the hook dispatcher (sets core.hooksPath)"
|
|
42
|
-
},
|
|
43
|
-
{
|
|
44
|
-
label: "disable",
|
|
45
|
-
description: "Disable hooks: unset core.hooksPath, remove <dir>/_, persist preference"
|
|
46
|
-
},
|
|
47
|
-
{
|
|
48
|
-
label: "status",
|
|
49
|
-
description: "Show preference, core.hooksPath, and dispatcher state"
|
|
50
|
-
}
|
|
51
|
-
]
|
|
52
|
-
},
|
|
53
|
-
{
|
|
54
|
-
title: "Options",
|
|
55
|
-
rows: [{
|
|
56
|
-
label: "--hooks-dir <path>",
|
|
57
|
-
description: `Custom hooks directory (default: ${DEFAULT_HOOKS_DIR}, or last used)`
|
|
58
|
-
}, {
|
|
59
|
-
label: "-h, --help",
|
|
60
|
-
description: "Show this help message"
|
|
61
|
-
}]
|
|
62
|
-
},
|
|
63
|
-
{
|
|
64
|
-
title: "Environment",
|
|
65
|
-
rows: [{
|
|
66
|
-
label: "VP_GIT_HOOKS=0",
|
|
67
|
-
description: "Skip dispatcher install in enable (and skip hooks at commit time)"
|
|
68
|
-
}]
|
|
69
|
-
},
|
|
70
|
-
{
|
|
71
|
-
title: "Examples",
|
|
72
|
-
lines: [
|
|
73
|
-
" vp hooks enable",
|
|
74
|
-
" vp hooks enable --hooks-dir .custom-hooks",
|
|
75
|
-
" vp hooks disable",
|
|
76
|
-
" vp hooks status"
|
|
77
|
-
]
|
|
78
|
-
}
|
|
79
|
-
]
|
|
80
|
-
});
|
|
81
|
-
printHeader();
|
|
82
|
-
log(helpMessage);
|
|
83
|
-
}
|
|
84
6
|
function applyResult(result) {
|
|
85
7
|
if (result.message) log(result.message);
|
|
86
8
|
if (result.isError) process.exit(1);
|
|
87
9
|
}
|
|
88
10
|
async function main() {
|
|
89
|
-
const
|
|
90
|
-
|
|
91
|
-
const wantsHelp = raw.includes("-h") || raw.includes("--help");
|
|
92
|
-
if (!first || first === "-h" || first === "--help") {
|
|
93
|
-
printHelp();
|
|
94
|
-
return;
|
|
95
|
-
}
|
|
96
|
-
if (!isSubcommand(first)) {
|
|
97
|
-
log(`Unknown hooks command "${first}". Expected one of: ${SUBCOMMANDS.join(", ")}`);
|
|
98
|
-
process.exit(1);
|
|
99
|
-
}
|
|
100
|
-
const subcommand = first;
|
|
101
|
-
const args = lib_default(raw.slice(1), {
|
|
102
|
-
boolean: ["help"],
|
|
103
|
-
string: ["hooks-dir"],
|
|
104
|
-
alias: { h: "help" }
|
|
105
|
-
});
|
|
106
|
-
if (args.help || wantsHelp) {
|
|
107
|
-
printHelp();
|
|
108
|
-
return;
|
|
109
|
-
}
|
|
110
|
-
const unexpected = unexpectedHooksArgsError(args);
|
|
111
|
-
if (unexpected) {
|
|
112
|
-
log(unexpected);
|
|
113
|
-
process.exit(1);
|
|
114
|
-
}
|
|
115
|
-
const dirFlag = args["hooks-dir"];
|
|
116
|
-
switch (subcommand) {
|
|
11
|
+
const args = unwrapCliParseOutcome(parseHooksArgs(process.argv.slice(3)));
|
|
12
|
+
switch (args.command) {
|
|
117
13
|
case "enable":
|
|
118
|
-
applyResult(enable(
|
|
14
|
+
applyResult(enable(args.hooksDir));
|
|
119
15
|
return;
|
|
120
16
|
case "disable":
|
|
121
|
-
applyResult(disable(
|
|
17
|
+
applyResult(disable(args.hooksDir));
|
|
122
18
|
return;
|
|
123
19
|
case "status":
|
|
124
|
-
applyResult(status(
|
|
20
|
+
applyResult(status(args.hooksDir));
|
|
125
21
|
return;
|
|
126
22
|
}
|
|
127
23
|
}
|
|
@@ -380,8 +380,11 @@ function unsetOwnedHooksPath(target) {
|
|
|
380
380
|
};
|
|
381
381
|
return null;
|
|
382
382
|
}
|
|
383
|
+
function isGitHooksEnvDisabled() {
|
|
384
|
+
return process.env.HUSKY === "0" || process.env.VP_GIT_HOOKS === "0" || process.env.VITE_GIT_HOOKS === "0";
|
|
385
|
+
}
|
|
383
386
|
function install(dir, options = {}) {
|
|
384
|
-
if (
|
|
387
|
+
if (isGitHooksEnvDisabled()) return {
|
|
385
388
|
message: "skip install (git hooks disabled)",
|
|
386
389
|
isError: false
|
|
387
390
|
};
|
|
@@ -567,4 +570,4 @@ function status(dir) {
|
|
|
567
570
|
};
|
|
568
571
|
}
|
|
569
572
|
//#endregion
|
|
570
|
-
export {
|
|
573
|
+
export { install as a, resolveHooksLocation as c, findUnsafeHookInstallPath as i, status as l, disable as n, isGitHooksEnvDisabled as o, enable as r, isHooksUserDisabled as s, SUPPORTED_GIT_HOOK_NAMES as t };
|
package/dist/index.cjs
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
const require_define_config = require("./define-config-
|
|
1
|
+
const require_define_config = require("./define-config-DIE9de46.cjs");
|
|
2
2
|
//#region src/index.cts
|
|
3
|
-
const vite = require("
|
|
3
|
+
const vite = require("vite");
|
|
4
4
|
const { configDefaults, coverageConfigDefaults, defaultBrowserPort, defaultExclude, defaultInclude } = require("vitest/config");
|
|
5
5
|
const { defineConfig, defineProject, lazyPlugins } = (require_define_config.init_define_config(), require_define_config.__toCommonJS(require_define_config.define_config_exports));
|
|
6
6
|
module.exports = {
|
package/dist/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { a as defineConfig, c as lazyPlugins, o as defineProject } from "./define-config-
|
|
1
|
+
import { a as defineConfig, c as lazyPlugins, o as defineProject } from "./define-config-DPNEJxPz.js";
|
|
2
2
|
import { TestProjectConfiguration, TestProjectInlineConfiguration, TestTagDefinition, TestUserConfig, UserProjectConfigExport, UserProjectConfigFn, UserWorkspaceConfig, ViteUserConfig, ViteUserConfigExport, ViteUserConfigFn, ViteUserConfigFnObject, ViteUserConfigFnPromise, WatcherTriggerPattern, configDefaults, coverageConfigDefaults, defaultBrowserPort, defaultExclude, defaultInclude } from "vitest/config";
|
|
3
|
-
export * from "
|
|
3
|
+
export * from "vite";
|
|
4
4
|
export { type TestProjectConfiguration, type TestProjectInlineConfiguration, type TestTagDefinition, type TestUserConfig, type UserProjectConfigExport, type UserProjectConfigFn, type UserWorkspaceConfig, type ViteUserConfig, type ViteUserConfigExport, type ViteUserConfigFn, type ViteUserConfigFnObject, type ViteUserConfigFnPromise, type WatcherTriggerPattern, configDefaults, coverageConfigDefaults, defaultBrowserPort, defaultExclude, defaultInclude, defineConfig, defineProject, lazyPlugins };
|
package/dist/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { a as defineConfig, c as lazyPlugins, o as defineProject } from "./define-config-
|
|
1
|
+
import { a as defineConfig, c as lazyPlugins, o as defineProject } from "./define-config-U3_xg7i-.js";
|
|
2
2
|
import { configDefaults, coverageConfigDefaults, defaultBrowserPort, defaultExclude, defaultInclude } from "vitest/config";
|
|
3
|
-
export * from "
|
|
3
|
+
export * from "vite";
|
|
4
4
|
export { configDefaults, coverageConfigDefaults, defaultBrowserPort, defaultExclude, defaultInclude, defineConfig, defineProject, lazyPlugins };
|
package/dist/internal.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export * from '
|
|
1
|
+
export * from 'vite/internal';
|
package/dist/internal.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export * from '
|
|
1
|
+
export * from 'vite/internal';
|
package/dist/migration/bin.js
CHANGED
|
@@ -1,17 +1,20 @@
|
|
|
1
1
|
import { r as __toESM } from "../rolldown-runtime-CMFfr-1z.js";
|
|
2
|
-
import { a as muted, c as warnMsg, i as log,
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import { a as
|
|
6
|
-
import { i as
|
|
7
|
-
import { t as
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
2
|
+
import { a as muted, c as warnMsg, i as log, o as printHeader, r as formatDuration, t as accent } from "../terminal-MKGAuy-p.js";
|
|
3
|
+
import { a as SETUP_VP_VERSION, f as VITE_PLUS_VERSION, m as isForceOverrideMode } from "../constants-0IAVgpox.js";
|
|
4
|
+
import { a as writeJsonFile, i as readJsonFile } from "../json-cULBl7Pi.js";
|
|
5
|
+
import { a as readNearestPackageJson, i as hasVitePlusDependency } from "../package-BZz2Ij68.js";
|
|
6
|
+
import { E as spinner, S as log$1, T as select, b as confirm, c as selectPackageManager, i as promptGitHooks, k as isCancel, l as upgradeYarn, n as defaultInteractive, o as runViteFmt, r as downloadPackageManager$1, s as runViteInstall, t as cancelAndExit, w as outro, y as PackageManager } from "../prompts-CtzEgFY-.js";
|
|
7
|
+
import { t as require_semver } from "../semver-CaDAb8vV.js";
|
|
8
|
+
import { i as selectAgentTargetPaths, l as displayRelative, n as detectAgentConflicts, r as detectExistingAgentTargetPaths, s as writeAgentInstructions } from "../agent-C5jMYVfB.js";
|
|
9
|
+
import { n as addMigrationWarning, r as createMigrationReport } from "../report-CK5TnTsr.js";
|
|
10
|
+
import { $ as warnIncompatibleEslintIntegration, A as detectYarnPnpMode, B as migrateTsupToTsdown, C as injectLintTypeCheckDefaults, D as detectVitePlusBootstrapPending, E as collectToolchainVersionChanges, F as addFrameworkShim, G as migratePrettierToOxfmt, H as warnMissingTsupConfig, I as detectFramework, J as confirmEslintMigration, L as hasFrameworkShim, O as ensureVitePlusBootstrap, R as confirmTsupMigration, T as mergeViteConfigFiles, U as confirmPrettierMigration, W as detectPrettierProject, X as detectIncompatibleEslintIntegration, Y as detectEslintProject, Z as migrateEslintToOxlint, _ as installGitHooks, d as finalizeCoreMigrationForExistingVitePlus, et as warnLegacyEslintConfig, f as detectNodeVersionManagerFile, g as detectLegacyGitHooksMigrationCandidate, i as selectEditor, j as detectWorkspace$1, k as configureYarnNodeModulesMode, l as rewriteStandaloneProject, m as migrateSetupVpVersion, nt as checkViteVersion, o as writeEditorConfigs, p as migrateNodeVersionManagerFile, q as warnPackageLevelPrettier, r as isJsonLikeFile, rt as checkVitestVersion, s as rewriteMonorepo, t as detectEditorConflicts, tt as warnPackageLevelEslint, u as detectPendingCoreMigration, v as preflightGitHooksSetup, w as mergeTsdownConfigFile, y as shouldSkipStagedMigrationForHooks, z as detectTsupProject } from "../editor-B5-lvRaU.js";
|
|
11
|
+
import { n as runCommandSilently } from "../command-CguLh2KL.js";
|
|
12
|
+
import { a as hasBaseUrlInTsconfig, i as fixBaseUrlInTsconfig, t as confirmBaseUrlFix } from "../tsconfig-CUggNuJR.js";
|
|
13
|
+
import { t as unwrapCliParseOutcome } from "../cli-parse-DHE8NrBU.js";
|
|
12
14
|
import { t as ROLLDOWN_COMPAT_RESULT_PREFIX } from "../protocol-D99W10Qi.js";
|
|
13
15
|
import path from "node:path";
|
|
14
16
|
import { fileURLToPath } from "node:url";
|
|
17
|
+
import { parseMigrateArgs } from "../../binding/index.js";
|
|
15
18
|
import { styleText } from "node:util";
|
|
16
19
|
import fs, { existsSync } from "node:fs";
|
|
17
20
|
//#region src/migration/compat/runner.ts
|
|
@@ -381,6 +384,16 @@ async function collectEslintMigrationDecision(rootDir, options, packages) {
|
|
|
381
384
|
eslintConfigFile: eslintProject.configFile
|
|
382
385
|
};
|
|
383
386
|
}
|
|
387
|
+
async function collectTsupMigrationDecision(rootDir, options, packages) {
|
|
388
|
+
const tsupProject = detectTsupProject(rootDir, packages);
|
|
389
|
+
let migrateTsup = false;
|
|
390
|
+
if (tsupProject.hasDependency && tsupProject.hasConfig) migrateTsup = await confirmTsupMigration(options.interactive);
|
|
391
|
+
else if (tsupProject.hasDependency) warnMissingTsupConfig();
|
|
392
|
+
return {
|
|
393
|
+
migrateTsup,
|
|
394
|
+
tsupConfigFile: tsupProject.configFile
|
|
395
|
+
};
|
|
396
|
+
}
|
|
384
397
|
async function collectMigrationSetupPlan(rootDir, packageManager, options, packages, includeEslint = true) {
|
|
385
398
|
const shouldSetupHooks = await collectGitHooksDecision(rootDir, packageManager, options, packages);
|
|
386
399
|
const agentPlan = await collectAgentInstructionPlan(rootDir, options);
|
|
@@ -474,136 +487,12 @@ async function checkWorkspaceRolldownCompatibility(workspaceInfo, report, update
|
|
|
474
487
|
await checkRolldownCompatibility(projectPath, report);
|
|
475
488
|
}
|
|
476
489
|
}
|
|
477
|
-
const helpMessage = renderCliDoc({
|
|
478
|
-
usage: "vp migrate [PATH] [OPTIONS]",
|
|
479
|
-
summary: "Migrate standalone Vite, Vitest, Oxlint, Oxfmt, and Prettier projects to unified Vite+.",
|
|
480
|
-
documentationUrl: "https://viteplus.dev/guide/migrate",
|
|
481
|
-
sections: [
|
|
482
|
-
{
|
|
483
|
-
title: "Arguments",
|
|
484
|
-
rows: [{
|
|
485
|
-
label: "PATH",
|
|
486
|
-
description: "Target directory to migrate (default: current directory)"
|
|
487
|
-
}]
|
|
488
|
-
},
|
|
489
|
-
{
|
|
490
|
-
title: "Options",
|
|
491
|
-
rows: [
|
|
492
|
-
{
|
|
493
|
-
label: "--agent NAME",
|
|
494
|
-
description: "Write coding agent instructions to AGENTS.md, CLAUDE.md, etc."
|
|
495
|
-
},
|
|
496
|
-
{
|
|
497
|
-
label: "--no-agent",
|
|
498
|
-
description: "Skip writing coding agent instructions"
|
|
499
|
-
},
|
|
500
|
-
{
|
|
501
|
-
label: "--editor NAME",
|
|
502
|
-
description: "Write editor config files into the project."
|
|
503
|
-
},
|
|
504
|
-
{
|
|
505
|
-
label: "--no-editor",
|
|
506
|
-
description: "Skip writing editor config files"
|
|
507
|
-
},
|
|
508
|
-
{
|
|
509
|
-
label: "--hooks",
|
|
510
|
-
description: "Set up pre-commit hooks (default in non-interactive mode)"
|
|
511
|
-
},
|
|
512
|
-
{
|
|
513
|
-
label: "--no-hooks",
|
|
514
|
-
description: "Skip pre-commit hooks setup"
|
|
515
|
-
},
|
|
516
|
-
{
|
|
517
|
-
label: "--full",
|
|
518
|
-
description: "Existing Vite+ projects: also run the full setup (hooks, editor, agent files, ESLint/Prettier migration, framework shims, tsconfig baseUrl, .node-version). Without it, `vp migrate` only upgrades the toolchain version."
|
|
519
|
-
},
|
|
520
|
-
{
|
|
521
|
-
label: "--no-interactive",
|
|
522
|
-
description: "Run in non-interactive mode (skip prompts and use defaults)"
|
|
523
|
-
},
|
|
524
|
-
{
|
|
525
|
-
label: "-h, --help",
|
|
526
|
-
description: "Show this help message"
|
|
527
|
-
}
|
|
528
|
-
]
|
|
529
|
-
},
|
|
530
|
-
{
|
|
531
|
-
title: "Examples",
|
|
532
|
-
lines: [
|
|
533
|
-
` ${muted("# Migrate current package")}`,
|
|
534
|
-
` ${accent("vp migrate")}`,
|
|
535
|
-
"",
|
|
536
|
-
` ${muted("# Migrate specific directory")}`,
|
|
537
|
-
` ${accent("vp migrate my-app")}`,
|
|
538
|
-
"",
|
|
539
|
-
` ${muted("# Non-interactive mode")}`,
|
|
540
|
-
` ${accent("vp migrate --no-interactive")}`
|
|
541
|
-
]
|
|
542
|
-
},
|
|
543
|
-
{
|
|
544
|
-
title: "Migration Prompt",
|
|
545
|
-
lines: [
|
|
546
|
-
" Give this to a coding agent when you want it to drive the migration:",
|
|
547
|
-
"",
|
|
548
|
-
" Migrate this project to Vite+.",
|
|
549
|
-
" Vite+ replaces the current split tooling around runtime management, package",
|
|
550
|
-
" management, dev/build/test commands, linting, formatting, and packaging.",
|
|
551
|
-
" Run `vp help` and `vp help migrate` before making changes.",
|
|
552
|
-
` Use ${accent("vp migrate --no-interactive")} in the workspace root.`,
|
|
553
|
-
" Make sure the project is using Vite 8+ and Vitest 4.1+ before migrating.",
|
|
554
|
-
"",
|
|
555
|
-
" After the migration:",
|
|
556
|
-
" - Confirm `vite` imports were rewritten to `vite-plus` where needed",
|
|
557
|
-
" - Confirm `vitest` imports were rewritten to `vite-plus/test` where needed",
|
|
558
|
-
" - On pnpm, keep the `vite` / `vitest` entries that `vp migrate` aliased to",
|
|
559
|
-
" the Vite+ packages so the workspace override stays effective; with other",
|
|
560
|
-
" package managers you can remove them once those rewrites are confirmed",
|
|
561
|
-
" - Move remaining tool-specific config into the appropriate blocks in",
|
|
562
|
-
" `vite.config.ts`",
|
|
563
|
-
"",
|
|
564
|
-
" Command mapping:",
|
|
565
|
-
" - `vp run <script>` is the equivalent of `pnpm run <script>`",
|
|
566
|
-
" - `vp dev` and `vp test` always run the built-ins; `vp run dev` and",
|
|
567
|
-
" `vp run test` run the `dev` and `test` scripts from `package.json`",
|
|
568
|
-
" - `vp install`, `vp add`, and `vp remove` delegate through the package",
|
|
569
|
-
" manager declared by `packageManager`",
|
|
570
|
-
" - `vp dev`, `vp build`, `vp preview`, `vp lint`, `vp fmt`, `vp check`,",
|
|
571
|
-
" and `vp pack` replace the corresponding standalone tools",
|
|
572
|
-
" - Prefer `vp check` for validation loops",
|
|
573
|
-
"",
|
|
574
|
-
" Finally, verify the migration by running:",
|
|
575
|
-
` - ${accent("vp install")}`,
|
|
576
|
-
` - ${accent("vp check")}`,
|
|
577
|
-
` - ${accent("vp test")}`,
|
|
578
|
-
` - ${accent("vp build")}`,
|
|
579
|
-
"",
|
|
580
|
-
" Summarize the migration at the end and report any manual follow-up still",
|
|
581
|
-
" required."
|
|
582
|
-
]
|
|
583
|
-
}
|
|
584
|
-
]
|
|
585
|
-
});
|
|
586
490
|
function parseArgs() {
|
|
587
|
-
const
|
|
588
|
-
const parsed = lib_default(args, {
|
|
589
|
-
alias: { h: "help" },
|
|
590
|
-
boolean: [
|
|
591
|
-
"help",
|
|
592
|
-
"interactive",
|
|
593
|
-
"hooks",
|
|
594
|
-
"full"
|
|
595
|
-
],
|
|
596
|
-
default: { interactive: defaultInteractive() }
|
|
597
|
-
});
|
|
598
|
-
const interactive = parsed.interactive;
|
|
599
|
-
let projectPath = parsed._[0];
|
|
600
|
-
if (projectPath) projectPath = path.resolve(process.cwd(), projectPath);
|
|
601
|
-
else projectPath = process.cwd();
|
|
491
|
+
const parsed = unwrapCliParseOutcome(parseMigrateArgs(process.argv.slice(3)));
|
|
602
492
|
return {
|
|
603
|
-
projectPath,
|
|
493
|
+
projectPath: parsed.path ? path.resolve(process.cwd(), parsed.path) : process.cwd(),
|
|
604
494
|
options: {
|
|
605
|
-
interactive,
|
|
606
|
-
help: parsed.help,
|
|
495
|
+
interactive: parsed.interactive ?? defaultInteractive(),
|
|
607
496
|
agent: parsed.agent,
|
|
608
497
|
editor: parsed.editor,
|
|
609
498
|
hooks: parsed.hooks,
|
|
@@ -656,7 +545,8 @@ function hasExplicitExistingVitePlusSetupRequest(options) {
|
|
|
656
545
|
function hasExistingVitePlusMigrationCandidates(workspaceInfo, options) {
|
|
657
546
|
const eslintProject = detectEslintProject(workspaceInfo.rootDir, workspaceInfo.packages);
|
|
658
547
|
const prettierProject = detectPrettierProject(workspaceInfo.rootDir, workspaceInfo.packages);
|
|
659
|
-
|
|
548
|
+
const tsupProject = detectTsupProject(workspaceInfo.rootDir, workspaceInfo.packages);
|
|
549
|
+
return hasExplicitExistingVitePlusSetupRequest(options) || detectLegacyGitHooksMigrationCandidate(workspaceInfo.rootDir) || hasBaseUrlInWorkspace(workspaceInfo) || eslintProject.hasDependency || prettierProject.hasDependency || tsupProject.hasDependency || detectNodeVersionManagerFile(workspaceInfo.rootDir) !== void 0 || getFrameworkShimCandidates(workspaceInfo.rootDir, workspaceInfo.packages).length > 0;
|
|
660
550
|
}
|
|
661
551
|
function getExistingVitePlusSetupOptions(options, useFullMigrationDefaults = false) {
|
|
662
552
|
if (useFullMigrationDefaults) return options;
|
|
@@ -675,6 +565,7 @@ async function collectMigrationPlan(rootDir, detectedPackageManager, detectedPac
|
|
|
675
565
|
let migratePrettier = false;
|
|
676
566
|
if (prettierProject.hasDependency && prettierProject.configFile) migratePrettier = await confirmPrettierMigration(options.interactive);
|
|
677
567
|
else if (prettierProject.hasDependency) warnPackageLevelPrettier();
|
|
568
|
+
const { migrateTsup, tsupConfigFile } = await collectTsupMigrationDecision(rootDir, options, packages);
|
|
678
569
|
const fixBaseUrl = hasBaseUrlInWorkspace({
|
|
679
570
|
rootDir,
|
|
680
571
|
packages
|
|
@@ -690,6 +581,8 @@ async function collectMigrationPlan(rootDir, detectedPackageManager, detectedPac
|
|
|
690
581
|
migratePrettier,
|
|
691
582
|
hasPrettierDependency: prettierProject.hasDependency,
|
|
692
583
|
prettierConfigFile: prettierProject.configFile,
|
|
584
|
+
migrateTsup,
|
|
585
|
+
tsupConfigFile,
|
|
693
586
|
fixBaseUrl,
|
|
694
587
|
migrateNodeVersionFile,
|
|
695
588
|
nodeVersionDetection,
|
|
@@ -745,7 +638,13 @@ function showMigrationSummary(options) {
|
|
|
745
638
|
if (report.preservedUpstreamVitestImportFileCount > 0) log(`${styleText("gray", "•")} Kept upstream \`vitest\` imports in ${report.preservedUpstreamVitestImportFileCount} ${report.preservedUpstreamVitestImportFileCount === 1 ? "file" : "files"} for @nuxt/test-utils compatibility`);
|
|
746
639
|
if (report.eslintMigrated) log(`${styleText("gray", "•")} ESLint rules migrated to Oxlint`);
|
|
747
640
|
if (report.prettierMigrated) log(`${styleText("gray", "•")} Prettier migrated to Oxfmt`);
|
|
641
|
+
if (report.tsupMigrated) log(`${styleText("gray", "•")} tsup config migrated to tsdown (\`vp pack\`)`);
|
|
748
642
|
if (report.nodeVersionFileMigrated) log(`${styleText("gray", "•")} Node version manager file migrated to .node-version`);
|
|
643
|
+
const setupVpFileCount = report.setupVpVersionUpdatedFileCount;
|
|
644
|
+
if (setupVpFileCount > 0) {
|
|
645
|
+
const fileLabel = setupVpFileCount === 1 ? "file" : "files";
|
|
646
|
+
log(`${styleText("gray", "•")} setup-vp updated to ${SETUP_VP_VERSION} in ${setupVpFileCount} GitHub Actions ${fileLabel}`);
|
|
647
|
+
}
|
|
749
648
|
if (report.wrappedPluginConfigCount > 0) log(`${styleText("gray", "•")} Inline Vite plugins wrapped with lazyPlugins for check/lint/fmt`);
|
|
750
649
|
if (report.gitHooksConfigured) log(`${styleText("gray", "•")} Git hooks configured`);
|
|
751
650
|
if (report.frameworkShimAdded) log(`${styleText("gray", "•")} TypeScript shim added for framework component files`);
|
|
@@ -763,7 +662,7 @@ function showMigrationSummary(options) {
|
|
|
763
662
|
async function downloadSupportedPackageManager(options) {
|
|
764
663
|
const { rootDir, packageManager, packageManagerVersion, interactive, updateMigrationProgress, failMigrationProgress } = options;
|
|
765
664
|
updateMigrationProgress("Preparing migration");
|
|
766
|
-
const downloadResult = await downloadPackageManager(packageManager, packageManagerVersion, interactive, true);
|
|
665
|
+
const downloadResult = await downloadPackageManager$1(packageManager, packageManagerVersion, interactive, true);
|
|
767
666
|
if (packageManager === PackageManager.yarn && import_semver.default.satisfies(downloadResult.version, ">=4.0.0 <4.10.0")) {
|
|
768
667
|
updateMigrationProgress("Upgrading Yarn");
|
|
769
668
|
await upgradeYarn(rootDir, interactive, true);
|
|
@@ -825,6 +724,8 @@ async function executeMigrationPlan(workspaceInfoOptional, plan, interactive, pr
|
|
|
825
724
|
updateMigrationProgress("Migrating node version file");
|
|
826
725
|
migrateNodeVersionManagerFile(workspaceInfo.rootDir, plan.nodeVersionDetection, report);
|
|
827
726
|
}
|
|
727
|
+
updateMigrationProgress("Updating setup-vp workflows");
|
|
728
|
+
migrateSetupVpVersion(workspaceInfo.rootDir, report);
|
|
828
729
|
updateMigrationProgress("Installing dependencies");
|
|
829
730
|
const initialInstallSummary = await runViteInstall(workspaceInfo.rootDir, interactive, void 0, {
|
|
830
731
|
silent: true,
|
|
@@ -860,6 +761,16 @@ async function executeMigrationPlan(workspaceInfoOptional, plan, interactive, pr
|
|
|
860
761
|
cancelAndExit("Prettier migration failed. Fix the issue and re-run `vp migrate`.", 1);
|
|
861
762
|
}
|
|
862
763
|
}
|
|
764
|
+
if (plan.migrateTsup) {
|
|
765
|
+
updateMigrationProgress("Migrating tsup");
|
|
766
|
+
if (!await migrateTsupToTsdown(workspaceInfo.rootDir, interactive, plan.packageManager, plan.tsupConfigFile, workspaceInfo.packages, {
|
|
767
|
+
silent: true,
|
|
768
|
+
report
|
|
769
|
+
})) {
|
|
770
|
+
failMigrationProgress("Migration failed");
|
|
771
|
+
cancelAndExit("Complete the tsup migration manually, then re-run `vp migrate`.", 1);
|
|
772
|
+
}
|
|
773
|
+
}
|
|
863
774
|
const skipStagedMigration = shouldSkipStagedMigrationForHooks(workspaceInfo.rootDir, plan.shouldSetupHooks, plan.packageManager, workspaceInfo.packages);
|
|
864
775
|
updateMigrationProgress("Rewriting configs");
|
|
865
776
|
if (workspaceInfo.isMonorepo) rewriteMonorepo(workspaceInfo, skipStagedMigration, true, report);
|
|
@@ -909,13 +820,8 @@ async function executeMigrationPlan(workspaceInfoOptional, plan, interactive, pr
|
|
|
909
820
|
}
|
|
910
821
|
async function main() {
|
|
911
822
|
const { projectPath, options } = parseArgs();
|
|
912
|
-
if (options.help) {
|
|
913
|
-
printHeader();
|
|
914
|
-
log(helpMessage);
|
|
915
|
-
return;
|
|
916
|
-
}
|
|
917
823
|
printHeader();
|
|
918
|
-
const workspaceInfoOptional = await detectWorkspace(projectPath);
|
|
824
|
+
const workspaceInfoOptional = await detectWorkspace$1(projectPath);
|
|
919
825
|
if (workspaceInfoOptional.isMonorepo && path.resolve(projectPath) !== path.resolve(workspaceInfoOptional.rootDir)) cancelAndExit(`Vite+ cannot migrate a workspace member. Run \`vp migrate\` from the workspace root at ${workspaceInfoOptional.rootDir}.`, 1);
|
|
920
826
|
const initialChangedPaths = await collectChangedFormatPaths(workspaceInfoOptional.rootDir);
|
|
921
827
|
const preExistingChangedPaths = initialChangedPaths ? new Set(initialChangedPaths) : void 0;
|
|
@@ -951,6 +857,8 @@ async function main() {
|
|
|
951
857
|
migrationProgressStarted = false;
|
|
952
858
|
}
|
|
953
859
|
};
|
|
860
|
+
updateMigrationProgress("Updating setup-vp workflows");
|
|
861
|
+
if (migrateSetupVpVersion(workspaceInfoOptional.rootDir, report).length > 0) didMigrate = true;
|
|
954
862
|
const pendingCoreMigration = detectPendingCoreMigration(workspaceInfoOptional);
|
|
955
863
|
const vitePlusBootstrapPending = detectVitePlusBootstrapPending(workspaceInfoOptional.rootDir, workspaceInfoOptional.packageManager, workspaceInfoOptional.packages, workspaceInfoOptional.packageManagerVersion);
|
|
956
864
|
let packageManager = vitePlusBootstrapPending ? workspaceInfoOptional.packageManager ?? await selectPackageManager(options.interactive, true) : workspaceInfoOptional.packageManager;
|
|
@@ -1049,6 +957,23 @@ async function main() {
|
|
|
1049
957
|
}
|
|
1050
958
|
} else if (prettierProject.hasDependency) warnPackageLevelPrettier();
|
|
1051
959
|
}
|
|
960
|
+
let tsupMigrated = false;
|
|
961
|
+
if (fullSetup) {
|
|
962
|
+
if (options.interactive) clearMigrationProgress();
|
|
963
|
+
const { migrateTsup, tsupConfigFile } = await collectTsupMigrationDecision(workspaceInfoOptional.rootDir, setupOptions, workspaceInfoOptional.packages);
|
|
964
|
+
if (migrateTsup) {
|
|
965
|
+
await ensureExistingPackageManager();
|
|
966
|
+
updateMigrationProgress("Migrating tsup");
|
|
967
|
+
if (!await migrateTsupToTsdown(workspaceInfoOptional.rootDir, options.interactive, packageManager, tsupConfigFile, workspaceInfoOptional.packages, {
|
|
968
|
+
silent: true,
|
|
969
|
+
report
|
|
970
|
+
})) {
|
|
971
|
+
clearMigrationProgress();
|
|
972
|
+
cancelAndExit("Complete the tsup migration manually, then re-run `vp migrate`.", 1);
|
|
973
|
+
}
|
|
974
|
+
tsupMigrated = true;
|
|
975
|
+
}
|
|
976
|
+
}
|
|
1052
977
|
if (fullSetup) {
|
|
1053
978
|
const nodeVersionDetection = detectNodeVersionManagerFile(workspaceInfoOptional.rootDir);
|
|
1054
979
|
if (nodeVersionDetection) {
|
|
@@ -1066,13 +991,18 @@ async function main() {
|
|
|
1066
991
|
}
|
|
1067
992
|
}
|
|
1068
993
|
if (addFrameworkShimsForWorkspace(workspaceInfoOptional.rootDir, frameworkShimFrameworks, workspaceInfoOptional.packages, report, updateMigrationProgress)) didMigrate = true;
|
|
1069
|
-
if (eslintMigrated || prettierMigrated) {
|
|
994
|
+
if (eslintMigrated || prettierMigrated || tsupMigrated) {
|
|
1070
995
|
updateMigrationProgress("Rewriting configs");
|
|
1071
996
|
mergeViteConfigFiles(workspaceInfoOptional.rootDir, true, report, workspaceInfoOptional.packages);
|
|
997
|
+
if (tsupMigrated) {
|
|
998
|
+
mergeTsdownConfigFile(workspaceInfoOptional.rootDir, true, report);
|
|
999
|
+
for (const pkg of workspaceInfoOptional.packages ?? []) mergeTsdownConfigFile(path.join(workspaceInfoOptional.rootDir, pkg.path), true, report);
|
|
1000
|
+
}
|
|
1072
1001
|
needsInstall = true;
|
|
1073
1002
|
didMigrate = true;
|
|
1074
1003
|
report.eslintMigrated = eslintMigrated;
|
|
1075
1004
|
report.prettierMigrated = prettierMigrated;
|
|
1005
|
+
report.tsupMigrated = tsupMigrated;
|
|
1076
1006
|
}
|
|
1077
1007
|
if (plan.shouldSetupHooks) {
|
|
1078
1008
|
await ensureExistingPackageManager();
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { n as addMigrationWarning, r as createMigrationReport } from "../../report-
|
|
1
|
+
import { n as addMigrationWarning, r as createMigrationReport } from "../../report-CK5TnTsr.js";
|
|
2
2
|
import { t as ROLLDOWN_COMPAT_RESULT_PREFIX } from "../../protocol-D99W10Qi.js";
|
|
3
3
|
import { writeSync } from "node:fs";
|
|
4
4
|
//#region src/migration/compat/manual-chunks.ts
|
package/dist/module-runner.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export * from '
|
|
1
|
+
export * from 'vite/module-runner';
|
package/dist/module-runner.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export * from '
|
|
1
|
+
export * from 'vite/module-runner';
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { u as VITE_PLUS_NAME } from "./constants-0IAVgpox.js";
|
|
2
2
|
//#region src/oxlint-plugin-config.ts
|
|
3
3
|
const VITE_PLUS_OXLINT_PLUGIN_NAME = VITE_PLUS_NAME;
|
|
4
4
|
const VITE_PLUS_OXLINT_PLUGIN_SPECIFIER = `${VITE_PLUS_NAME}/oxlint-plugin`;
|
package/dist/oxlint-plugin.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
//#region src/oxlint-plugin.d.ts
|
|
2
2
|
declare function rewriteVitePlusImportSpecifier(specifier: string): string | null;
|
|
3
|
-
declare const preferVitePlusImportsRule: import("@oxlint/plugins").Rule;
|
|
3
|
+
export declare const preferVitePlusImportsRule: import("@oxlint/plugins").Rule;
|
|
4
4
|
declare const plugin: import("@oxlint/plugins").Plugin;
|
|
5
5
|
//#endregion
|
|
6
|
-
export { plugin as default,
|
|
6
|
+
export { plugin as default, rewriteVitePlusImportSpecifier };
|
package/dist/oxlint-plugin.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { n as VITE_PLUS_OXLINT_PLUGIN_NAME, t as PREFER_VITE_PLUS_IMPORTS_RULE_NAME } from "./oxlint-plugin-config-
|
|
1
|
+
import { n as VITE_PLUS_OXLINT_PLUGIN_NAME, t as PREFER_VITE_PLUS_IMPORTS_RULE_NAME } from "./oxlint-plugin-config-Drdl67Xp.js";
|
|
2
2
|
import path from "node:path";
|
|
3
3
|
import fs from "node:fs";
|
|
4
4
|
import { definePlugin, defineRule } from "@oxlint/plugins";
|
package/dist/pack-bin.d.ts
CHANGED