@cldmv/vitest-runner 1.1.0 → 1.4.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.
- package/README.md +141 -78
- package/bin/vitest-runner.mjs +1549 -85
- package/dist/index.cjs +1389 -0
- package/dist/index.mjs +1335 -0
- package/package.json +41 -15
- package/types/src/bin/vitest-runner.d.mts +2 -0
- package/types/src/cli/args.d.mts +16 -0
- package/types/src/core/discover.d.mts +23 -0
- package/types/src/core/scratch.d.mts +64 -0
- package/types/src/core/spawn.d.mts +3 -1
- package/types/src/runner.d.mts +23 -0
- package/types/src/utils/ansi.d.mts +12 -0
- package/types/src/utils/duration.d.mts +12 -0
- package/types/src/utils/env.d.mts +12 -0
- package/index.cjs +0 -17
- package/index.mjs +0 -5
- package/src/cli/args.mjs +0 -134
- package/src/cli/help.mjs +0 -84
- package/src/core/discover.mjs +0 -167
- package/src/core/parse.mjs +0 -167
- package/src/core/progress.mjs +0 -164
- package/src/core/report.mjs +0 -255
- package/src/core/spawn.mjs +0 -219
- package/src/runner.mjs +0 -696
- package/src/utils/ansi.mjs +0 -32
- package/src/utils/duration.mjs +0 -25
- package/src/utils/env.mjs +0 -38
- package/src/utils/resolve.mjs +0 -86
package/README.md
CHANGED
|
@@ -7,7 +7,7 @@ Sequential Vitest runner that spawns each test file in its own child process to
|
|
|
7
7
|
- Auto-detects your vitest config; accepts an explicit path if needed
|
|
8
8
|
- All standard Vitest CLI flags are forwarded unchanged
|
|
9
9
|
- Usable as a **CLI binary** or as a **programmatic Node.js API**
|
|
10
|
-
- Pure ESM
|
|
10
|
+
- Pure ESM source, bundled to a real CJS build for `require()` compatibility
|
|
11
11
|
|
|
12
12
|
[![npm version]][npm_version_url] [![npm downloads]][npm_downloads_url] <!-- [![GitHub release]][github_release_url] -->[![GitHub downloads]][github_downloads_url] [![Last commit]][last_commit_url] <!-- [![Release date]][release_date_url] -->[![npm last update]][npm_last_update_url] [![Coverage]][coverage_url]
|
|
13
13
|
|
|
@@ -15,6 +15,24 @@ Sequential Vitest runner that spawns each test file in its own child process to
|
|
|
15
15
|
|
|
16
16
|
---
|
|
17
17
|
|
|
18
|
+
## ✨ What's New
|
|
19
|
+
|
|
20
|
+
### Latest: v1.4.0 (September 2026)
|
|
21
|
+
|
|
22
|
+
- **A real build, and a CLI that finally works when installed** — `dist/` (library) and `bin/` (CLI) are now bundled with tsup instead of hand-written; a one-character npm packaging bug that silently stripped the `bin` field is fixed, so `vitest-runner` now works as an installed command for the first time.
|
|
23
|
+
- **Runner-owned scratch directories** — a per-run scratch root is created and cleaned up automatically, with a `makeRunTmpDir(label)` helper for test files instead of managing your own `mkdtemp` base.
|
|
24
|
+
- **CI/release automation completed** — the v4 staging-branch workflow set is now full (auto-merging the release PR on approval, `dependabot.yml`, and the rest), and every file header is normalized.
|
|
25
|
+
- [View full v1.4.0 Changelog](https://github.com/CLDMV/vitest-runner/blob/master/docs/changelog/v1/v1.4.0.md)
|
|
26
|
+
|
|
27
|
+
### Recent Releases
|
|
28
|
+
|
|
29
|
+
- **v1.3.3** (September 2026) — Dependency bump (`brace-expansion`, `postcss`) via Dependabot.
|
|
30
|
+
- **v1.3.2** (September 2026) — CI: pass `BOT_NAME`/`BOT_EMAIL` through to the v4 release/feature-PR workflows.
|
|
31
|
+
- **v1.3.0** (July 2026) — Onboarded onto the CLDMV v4 staging-branch release flow.
|
|
32
|
+
- **v1.2.0** (June 2026) — Added coverage `blobsDir` + `mergeReports` options.
|
|
33
|
+
|
|
34
|
+
---
|
|
35
|
+
|
|
18
36
|
## Requirements
|
|
19
37
|
|
|
20
38
|
- Node.js ≥ 18
|
|
@@ -45,20 +63,24 @@ vitest-runner [OPTIONS] [PATTERNS...]
|
|
|
45
63
|
|
|
46
64
|
### Runner flags
|
|
47
65
|
|
|
48
|
-
| Flag
|
|
49
|
-
|
|
50
|
-
| `--test-list <file>`
|
|
51
|
-
| `--file-pattern <regex>`
|
|
52
|
-
| `--workers <n>`
|
|
53
|
-
| `--solo-pattern <pat>`
|
|
54
|
-
| `--no-error-details`
|
|
55
|
-
| `--coverage-quiet`
|
|
56
|
-
| `--log-file <path>`
|
|
57
|
-
| `--suppress-file-output`
|
|
58
|
-
| `--suppress-passing-files` | Hide the `PASSED TEST FILES` section in the final summary
|
|
59
|
-
| `--no-top-summary`
|
|
60
|
-
| `--json`
|
|
61
|
-
| `--
|
|
66
|
+
| Flag | Description |
|
|
67
|
+
| -------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- |
|
|
68
|
+
| `--test-list <file>` | Run only the files listed in a JSON array file instead of scanning |
|
|
69
|
+
| `--file-pattern <regex>` | Override the file discovery regex (default: `\.test\.vitest\.(?:js\|mjs\|cjs)$`) |
|
|
70
|
+
| `--workers <n>` | Number of parallel workers (default: `4` or `VITEST_WORKERS`) |
|
|
71
|
+
| `--solo-pattern <pat>` | Run files matching this path substring solo (one at a time) before the worker pool; repeatable |
|
|
72
|
+
| `--no-error-details` | Hide inline error blocks — show only counts in the summary |
|
|
73
|
+
| `--coverage-quiet` | Implies `--coverage`; suppress per-file output and show only a live progress bar and final summaries |
|
|
74
|
+
| `--log-file <path>` | Write a clean (ANSI-stripped) copy of all output to this file. Defaults to `coverage/coverage-run.log` when `--coverage-quiet` is active |
|
|
75
|
+
| `--suppress-file-output` | Suppress per-file runner output blocks in any mode |
|
|
76
|
+
| `--suppress-passing-files` | Hide the `PASSED TEST FILES` section in the final summary |
|
|
77
|
+
| `--no-top-summary` | Hide `TOP MEMORY USERS` and `TOP DURATION` summary sections |
|
|
78
|
+
| `--json` | Print a JSON run report (no runner text output) |
|
|
79
|
+
| `--blobs-dir <path>` | Directory for per-file coverage blobs (default: `.vitest-coverage-blobs`, relative to `cwd`) |
|
|
80
|
+
| `--no-merge-reports` | Produce the coverage blobs but skip the merge and summary, leaving them in `--blobs-dir` for an external merge step |
|
|
81
|
+
| `--keep-tmp` | Keep this run's scratch directory instead of removing it on completion |
|
|
82
|
+
| `--scratch-dir <path>` | Per-run scratch root, relative to `cwd` (default: `tmp/vitest-runner`) |
|
|
83
|
+
| `--help`, `-h` | Print this help and exit |
|
|
62
84
|
|
|
63
85
|
### Test patterns
|
|
64
86
|
|
|
@@ -95,10 +117,10 @@ vitest-runner --bail
|
|
|
95
117
|
|
|
96
118
|
### Environment variables
|
|
97
119
|
|
|
98
|
-
| Variable
|
|
99
|
-
|
|
100
|
-
| `VITEST_HEAP_MB` |
|
|
101
|
-
| `VITEST_WORKERS` | `4`
|
|
120
|
+
| Variable | Default | Description |
|
|
121
|
+
| ---------------- | -------- | ------------------------------------------------------------------------------- |
|
|
122
|
+
| `VITEST_HEAP_MB` | _(none)_ | `--max-old-space-size` ceiling passed to every child process |
|
|
123
|
+
| `VITEST_WORKERS` | `4` | Maximum parallel worker slots in the non-solo phase (overridden by `--workers`) |
|
|
102
124
|
|
|
103
125
|
### Examples
|
|
104
126
|
|
|
@@ -145,10 +167,10 @@ vitest-runner --json --no-top-summary
|
|
|
145
167
|
## Programmatic API
|
|
146
168
|
|
|
147
169
|
```js
|
|
148
|
-
import { run } from
|
|
170
|
+
import { run } from "vitest-runner";
|
|
149
171
|
|
|
150
172
|
// CommonJS
|
|
151
|
-
const { run } =
|
|
173
|
+
const { run } = require("vitest-runner");
|
|
152
174
|
```
|
|
153
175
|
|
|
154
176
|
### `run(options)` → `Promise<number | object>`
|
|
@@ -156,10 +178,10 @@ const { run } = await require('vitest-runner');
|
|
|
156
178
|
Runs the test suite and resolves with an exit code (`0` = all passed, `1` = any failure) by default. When `json: true` is passed, it returns a structured JSON report object (including `exitCode`) instead of printing runner text output.
|
|
157
179
|
|
|
158
180
|
```js
|
|
159
|
-
import { run } from
|
|
181
|
+
import { run } from "vitest-runner";
|
|
160
182
|
|
|
161
183
|
const code = await run({
|
|
162
|
-
|
|
184
|
+
testDir: "src/tests"
|
|
163
185
|
});
|
|
164
186
|
|
|
165
187
|
process.exit(code);
|
|
@@ -167,33 +189,54 @@ process.exit(code);
|
|
|
167
189
|
|
|
168
190
|
#### Options
|
|
169
191
|
|
|
170
|
-
| Option
|
|
171
|
-
|
|
172
|
-
| `cwd`
|
|
173
|
-
| `testDir`
|
|
174
|
-
| `vitestConfig`
|
|
175
|
-
| `testPatterns`
|
|
176
|
-
| `testListFile`
|
|
177
|
-
| `testFilePattern`
|
|
178
|
-
| `vitestArgs`
|
|
179
|
-
| `showErrorDetails`
|
|
180
|
-
| `coverageQuiet`
|
|
181
|
-
| `suppressFileOutput`
|
|
182
|
-
| `suppressPassingFiles` | `boolean`
|
|
183
|
-
| `topSummary`
|
|
184
|
-
| `json`
|
|
185
|
-
| `workers`
|
|
186
|
-
| `worstCoverageCount`
|
|
187
|
-
| `
|
|
188
|
-
| `
|
|
189
|
-
| `
|
|
190
|
-
| `
|
|
191
|
-
| `
|
|
192
|
+
| Option | Type | Default | Description |
|
|
193
|
+
| ---------------------- | ----------------------- | ------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
194
|
+
| `cwd` | `string` | `process.cwd()` | Absolute project root directory |
|
|
195
|
+
| `testDir` | `string` | `cwd` | Directory (absolute or relative to `cwd`) to scan for `*.test.vitest.{js,mjs}` files |
|
|
196
|
+
| `vitestConfig` | `string` | auto-detect | Explicit vitest config path; when omitted the runner walks standard config names (`vitest.config.ts`, `vite.config.ts`, etc.) relative to `cwd` |
|
|
197
|
+
| `testPatterns` | `string[]` | `[]` | File / folder patterns to filter — empty means all files in `testDir` |
|
|
198
|
+
| `testListFile` | `string` | `undefined` | Path to a JSON array of test file paths; when set, scanning is skipped entirely |
|
|
199
|
+
| `testFilePattern` | `RegExp` | `DEFAULT_TEST_FILE_PATTERN` | Regex matched against file names during discovery (`*.test.vitest.{js,mjs,cjs}` by default) |
|
|
200
|
+
| `vitestArgs` | `string[]` | `[]` | Extra CLI args forwarded verbatim to every vitest invocation |
|
|
201
|
+
| `showErrorDetails` | `boolean` | `true` | Print inline error blocks under each failed file in the summary |
|
|
202
|
+
| `coverageQuiet` | `boolean` | `false` | Suppress per-file output; show only the progress bar and final summaries |
|
|
203
|
+
| `suppressFileOutput` | `boolean` | `false` | Suppress per-file runner output blocks in all modes |
|
|
204
|
+
| `suppressPassingFiles` | `boolean` | `false` | Hide passed-file rows in the final summary |
|
|
205
|
+
| `topSummary` | `boolean` | `true` | Show or hide top memory/duration summary sections (and JSON arrays) |
|
|
206
|
+
| `json` | `boolean` | `false` | Return a JSON report object instead of printing text output |
|
|
207
|
+
| `workers` | `number` | `4` | Maximum parallel worker slots (overrides `VITEST_WORKERS`) |
|
|
208
|
+
| `worstCoverageCount` | `number` | `10` | Rows in the worst-coverage table after a coverage run (`0` disables it) |
|
|
209
|
+
| `blobsDir` | `string` | `<cwd>/.vitest-coverage-blobs` | Directory for per-file coverage blobs. Relative paths resolve against `cwd`. Always cleared at the start of a coverage run |
|
|
210
|
+
| `mergeReports` | `boolean` | `true` | When `true`, blobs are merged via `vitest --mergeReports`, the coverage summary is printed, and `blobsDir` is deleted. When `false`, the run stops after producing blobs — no merge, no summary — and `blobsDir` is left populated for an external merge |
|
|
211
|
+
| `maxOldSpaceMb` | `number` | `undefined` | Global `--max-old-space-size` ceiling in MB (overrides `VITEST_HEAP_MB`) |
|
|
212
|
+
| `earlyRunPatterns` | `string[]` | `[]` | Path substrings — matching files run solo (one at a time) before the parallel worker pool starts |
|
|
213
|
+
| `perFileHeapOverrides` | `PerFileHeapOverride[]` | `[]` | Per-file minimum heap ceilings; the maximum of this and `maxOldSpaceMb` wins |
|
|
214
|
+
| `conditions` | `string[]` | `[]` | Additional `--conditions` Node flags forwarded to children |
|
|
215
|
+
| `nodeEnv` | `string` | `'development'` | Value written to `NODE_ENV` in child processes |
|
|
216
|
+
| `scratchDir` | `string` | `'tmp/vitest-runner'` | Per-run scratch root, relative to `cwd` (or absolute). A subdirectory is created per file invocation and exposed to it via `VITEST_RUNNER_TMP` |
|
|
217
|
+
| `keepTmp` | `boolean` | `false` | Keep the run's scratch root instead of removing it on completion (normal exit, failure, or SIGINT/SIGTERM) |
|
|
218
|
+
|
|
219
|
+
### Scratch directories (`VITEST_RUNNER_TMP` / `makeRunTmpDir`)
|
|
220
|
+
|
|
221
|
+
Every run gets its own scratch root (`<scratchDir>/<pid>-<timestamp>/`), created before any file runs and removed once the run completes — on success, on failure, and on SIGINT/SIGTERM — unless `keepTmp` is set. Each file invocation gets its own subdirectory under that root, exposed to the child as `process.env.VITEST_RUNNER_TMP`. Stale roots left by a crashed prior run (dead PID) are swept at the start of the next run.
|
|
222
|
+
|
|
223
|
+
From a test file, use `makeRunTmpDir(label)` to get a fresh, uniquely-named subdirectory instead of managing your own `mkdtemp` base:
|
|
224
|
+
|
|
225
|
+
```js
|
|
226
|
+
import { makeRunTmpDir } from "vitest-runner";
|
|
227
|
+
|
|
228
|
+
const dir = makeRunTmpDir("my-fixture"); // a fresh directory under VITEST_RUNNER_TMP
|
|
229
|
+
```
|
|
230
|
+
|
|
231
|
+
CLI flags: `--scratch-dir <path>` and `--keep-tmp` (see [Runner flags](#runner-flags) below).
|
|
192
232
|
|
|
193
233
|
#### `PerFileHeapOverride`
|
|
194
234
|
|
|
195
235
|
```ts
|
|
196
|
-
{
|
|
236
|
+
{
|
|
237
|
+
pattern: string;
|
|
238
|
+
heapMb: number;
|
|
239
|
+
}
|
|
197
240
|
```
|
|
198
241
|
|
|
199
242
|
`pattern` is a substring matched against the normalised (forward-slash) file path. The first match wins and is compared against the global `maxOldSpaceMb`; the larger value is used.
|
|
@@ -202,42 +245,40 @@ process.exit(code);
|
|
|
202
245
|
|
|
203
246
|
```js
|
|
204
247
|
// Run all tests under src/tests/ (cwd defaults to process.cwd())
|
|
205
|
-
await run({ testDir:
|
|
248
|
+
await run({ testDir: "src/tests" });
|
|
206
249
|
|
|
207
250
|
// Run only the config and metadata suites
|
|
208
251
|
await run({
|
|
209
|
-
|
|
210
|
-
|
|
252
|
+
testDir: "src/tests",
|
|
253
|
+
testPatterns: ["src/tests/config", "src/tests/metadata"]
|
|
211
254
|
});
|
|
212
255
|
|
|
213
256
|
// Coverage run (OOM-safe blob + merge mode)
|
|
214
257
|
await run({
|
|
215
|
-
|
|
216
|
-
|
|
258
|
+
testDir: "src/tests",
|
|
259
|
+
vitestArgs: ["--coverage"]
|
|
217
260
|
});
|
|
218
261
|
|
|
219
262
|
// Quiet coverage with live progress bar
|
|
220
263
|
await run({
|
|
221
|
-
|
|
222
|
-
|
|
264
|
+
testDir: "src/tests",
|
|
265
|
+
coverageQuiet: true
|
|
223
266
|
});
|
|
224
267
|
|
|
225
268
|
// Machine-readable output (no text logs)
|
|
226
269
|
const report = await run({
|
|
227
|
-
|
|
228
|
-
|
|
270
|
+
testDir: "src/tests",
|
|
271
|
+
json: true
|
|
229
272
|
});
|
|
230
273
|
|
|
231
274
|
console.log(report.exitCode);
|
|
232
275
|
|
|
233
276
|
// Give heap-heavy files a larger ceiling while keeping the global limit lower
|
|
234
277
|
await run({
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
{ pattern: 'listener-cleanup/', heapMb: 6144 },
|
|
240
|
-
],
|
|
278
|
+
testDir: "src/tests",
|
|
279
|
+
maxOldSpaceMb: 2048,
|
|
280
|
+
earlyRunPatterns: ["listener-cleanup/"],
|
|
281
|
+
perFileHeapOverrides: [{ pattern: "listener-cleanup/", heapMb: 6144 }]
|
|
241
282
|
});
|
|
242
283
|
```
|
|
243
284
|
|
|
@@ -259,6 +300,28 @@ This avoids the OOM crash that occurs when a single vitest process holds coverag
|
|
|
259
300
|
|
|
260
301
|
The log file path can be overridden with `--log-file <path>`. Passing `--log-file` by itself only enables log mirroring (it does not enable coverage mode).
|
|
261
302
|
|
|
303
|
+
### Producing blobs for an external merge
|
|
304
|
+
|
|
305
|
+
Set `mergeReports: false` (CLI: `--no-merge-reports`) to stop the run after the per-file blobs are written. The internal `vitest --mergeReports` call and the coverage summary are skipped, and `blobsDir` is left intact instead of being deleted. The blobs directory is still cleared at the **start** of each run, so it only ever contains the current run's output.
|
|
306
|
+
|
|
307
|
+
This is useful when a second coverage blob set (for example, a browser-mode run with a different coverage transform) needs to be merged together with the node-mode blobs. Point both runs at known directories with `blobsDir`, then merge them in one external `vitest --mergeReports` step:
|
|
308
|
+
|
|
309
|
+
```js
|
|
310
|
+
// Node-mode blobs, no internal merge
|
|
311
|
+
await run({
|
|
312
|
+
testDir: "src/tests",
|
|
313
|
+
vitestArgs: ["--coverage"],
|
|
314
|
+
blobsDir: ".coverage-blobs/node",
|
|
315
|
+
mergeReports: false
|
|
316
|
+
});
|
|
317
|
+
|
|
318
|
+
// (separately produce browser-mode blobs into .coverage-blobs/browser)
|
|
319
|
+
// then merge both blob sets in a single external step:
|
|
320
|
+
// vitest --mergeReports .coverage-blobs --coverage
|
|
321
|
+
```
|
|
322
|
+
|
|
323
|
+
The exit code still reflects test pass/fail; there is just no coverage-merge result to fold in.
|
|
324
|
+
|
|
262
325
|
---
|
|
263
326
|
|
|
264
327
|
## Test list files
|
|
@@ -266,11 +329,7 @@ The log file path can be overridden with `--log-file <path>`. Passing `--log-fil
|
|
|
266
329
|
A test list file is a plain JSON array of test file paths (relative to `cwd`):
|
|
267
330
|
|
|
268
331
|
```json
|
|
269
|
-
[
|
|
270
|
-
"src/tests/auth/login.test.vitest.mjs",
|
|
271
|
-
"src/tests/auth/register.test.vitest.mjs",
|
|
272
|
-
"src/tests/config/defaults.test.vitest.mjs"
|
|
273
|
-
]
|
|
332
|
+
["src/tests/auth/login.test.vitest.mjs", "src/tests/auth/register.test.vitest.mjs", "src/tests/config/defaults.test.vitest.mjs"]
|
|
274
333
|
```
|
|
275
334
|
|
|
276
335
|
Pass `--test-list <file>` (CLI) or `testListFile: 'path/to/list.json'` (API) to run exactly those files instead of scanning `testDir`.
|
|
@@ -281,7 +340,7 @@ Pass `--test-list <file>` (CLI) or `testListFile: 'path/to/list.json'` (API) to
|
|
|
281
340
|
|
|
282
341
|
By default, the runner discovers files matching:
|
|
283
342
|
|
|
284
|
-
```
|
|
343
|
+
```text
|
|
285
344
|
*.test.vitest.js
|
|
286
345
|
*.test.vitest.mjs
|
|
287
346
|
*.test.vitest.cjs
|
|
@@ -297,37 +356,41 @@ vitest-runner --file-pattern '\.spec\.ts$'
|
|
|
297
356
|
```
|
|
298
357
|
|
|
299
358
|
```js
|
|
300
|
-
await run({ cwd, testDir:
|
|
359
|
+
await run({ cwd, testDir: "src", testFilePattern: /\.spec\.ts$/i });
|
|
301
360
|
```
|
|
302
361
|
|
|
303
362
|
---
|
|
304
363
|
|
|
305
364
|
## Source layout
|
|
306
365
|
|
|
307
|
-
```
|
|
308
|
-
|
|
309
|
-
index.
|
|
310
|
-
|
|
311
|
-
|
|
366
|
+
```text
|
|
367
|
+
dist/ ← built library entry (npm run build / tsup) — generated, not committed
|
|
368
|
+
index.mjs ← bundled ESM entry
|
|
369
|
+
index.cjs ← bundled CJS entry (real sync require, generated from the same source)
|
|
370
|
+
bin/ ← built CLI binary (npm run build / tsup) — generated, not committed
|
|
371
|
+
vitest-runner.mjs ← bundled CLI, from src/bin/vitest-runner.mjs (shebang preserved)
|
|
312
372
|
src/
|
|
313
373
|
runner.mjs ← main run() API + re-exports
|
|
374
|
+
bin/
|
|
375
|
+
vitest-runner.mjs ← CLI entry SOURCE — run this directly for source-level dev/testing
|
|
314
376
|
utils/
|
|
315
377
|
ansi.mjs ← stripAnsi, colourPct
|
|
316
378
|
duration.mjs ← formatDuration
|
|
317
379
|
env.mjs ← buildNodeOptions
|
|
318
380
|
resolve.mjs ← resolveBin, resolveVitestConfig
|
|
319
381
|
core/
|
|
320
|
-
discover.mjs ← discoverVitestFiles, sortWithPriority
|
|
382
|
+
discover.mjs ← discoverVitestFiles, sortWithPriority, computeFilterConflicts
|
|
321
383
|
parse.mjs ← parseVitestOutput, deduplicateErrors
|
|
322
384
|
spawn.mjs ← runSingleFile, runVitestDirect, runMergeReports
|
|
323
385
|
report.mjs ← printCoverageSummary, printMergeOutput
|
|
324
386
|
progress.mjs ← createCoverageProgressTracker
|
|
387
|
+
scratch.mjs ← makeRunTmpDir + the scratch-directory lifecycle
|
|
325
388
|
cli/
|
|
326
389
|
args.mjs ← parseArguments
|
|
327
390
|
help.mjs ← showHelp
|
|
328
391
|
```
|
|
329
392
|
|
|
330
|
-
All sub-module utilities are re-exported from the root entry point, so deep imports are optional.
|
|
393
|
+
`src/` is not published — only `dist/`, `bin/`, and `types/` ship (see [Programmatic API](#programmatic-api) for the `vitest-runner-dev` export condition, used when developing against a workspace/local checkout instead of the published package). All sub-module utilities are re-exported from the root entry point, so deep imports are optional.
|
|
331
394
|
|
|
332
395
|
---
|
|
333
396
|
|
|
@@ -341,15 +404,15 @@ MIT
|
|
|
341
404
|
<!-- [release date]: https://img.shields.io/github/release-date/CLDMV/vitest-runner?style=for-the-badge&logo=github&logoColor=white&labelColor=181717 -->
|
|
342
405
|
<!-- [release_date_url]: https://github.com/CLDMV/vitest-runner/releases -->
|
|
343
406
|
|
|
344
|
-
[npm version]: https://img.shields.io/npm/v
|
|
407
|
+
[npm version]: https://img.shields.io/npm/v/%40cldmv%2Fvitest-runner.svg?style=for-the-badge&logo=npm&logoColor=white&labelColor=CB3837
|
|
345
408
|
[npm_version_url]: https://www.npmjs.com/package/@cldmv/vitest-runner
|
|
346
|
-
[npm downloads]: https://img.shields.io/npm/dm
|
|
409
|
+
[npm downloads]: https://img.shields.io/npm/dm/%40cldmv%2Fvitest-runner.svg?style=for-the-badge&logo=npm&logoColor=white&labelColor=CB3837
|
|
347
410
|
[npm_downloads_url]: https://www.npmjs.com/package/@cldmv/vitest-runner
|
|
348
411
|
[github downloads]: https://img.shields.io/github/downloads/CLDMV/vitest-runner/total?style=for-the-badge&logo=github&logoColor=white&labelColor=181717
|
|
349
412
|
[github_downloads_url]: https://github.com/CLDMV/vitest-runner/releases
|
|
350
413
|
[last commit]: https://img.shields.io/github/last-commit/CLDMV/vitest-runner?style=for-the-badge&logo=github&logoColor=white&labelColor=181717
|
|
351
414
|
[last_commit_url]: https://github.com/CLDMV/vitest-runner/commits
|
|
352
|
-
[npm last update]: https://img.shields.io/npm/last-update
|
|
415
|
+
[npm last update]: https://img.shields.io/npm/last-update/%40cldmv%2Fvitest-runner?style=for-the-badge&logo=npm&logoColor=white&labelColor=CB3837
|
|
353
416
|
[npm_last_update_url]: https://www.npmjs.com/package/@cldmv/vitest-runner
|
|
354
417
|
[coverage]: https://img.shields.io/endpoint?url=https%3A%2F%2Fraw.githubusercontent.com%2FCLDMV%2Fvitest-runner%2Fbadges%2Fcoverage.json&style=for-the-badge&logo=vitest&logoColor=white
|
|
355
418
|
[coverage_url]: https://github.com/CLDMV/vitest-runner/blob/badges/coverage.json
|