voidzero-dev / voidzero-dev/vite-plus
Allow configuring the Oxlint output format for `vp lint` and `vp check`
- Vorherrschende Sprache
- Rust
- Sterne
- 5.8k
- Forks
- 262
- Ø Merge
- 23 Std. 41 Min.
- Gemergte PRs (30 T.)
- 138
Beschreibung
### Description
`vp lint` supports selecting an Oxlint output format through the CLI:
```sh
vp lint --format=agent
```
However, there is no equivalent project-level setting in `vite.config.ts`. In addition, `vp check` does not accept `--format` or provide another way to control the output format of its lint phase.
Vitest already supports configuring agent-friendly output centrally:
```ts
export default defineConfig({
test: {
reporters: ["agent"],
silent: "passed-only",
},
});
```
It would be useful to configure Oxlint output in the same place so that local development, coding agents, CI, `vp check`, and staged checks all use consistent diagnostics.
Oxlint automatically selects the agent formatter in some recognized agent environments, but this behavior is environment-dependent and does not cover every coding-agent harness. It also does not let a project enforce deterministic output across different environments.
Without a configuration option, projects must maintain separate package scripts and ensure every caller knows which script to use.
### Suggested solution
Add a Vite+ configuration option for the Oxlint output format. For example:
```ts
export default defineConfig({
lint: {
format: "agent",
},
});
```
The option should:
- Apply to `vp lint`
- Apply to the lint phase of `vp check`
- Apply when those commands are invoked through `vp staged`
- Support the same values as Oxlint’s `--format` option
- Preserve the current behavior when omitted
- Allow an explicit CLI `--format` argument to override the configured value
For `vp check`, the configured format should apply only to lint diagnostics while preserving Vite+’s own formatting and summary output.
Since output format is currently an Oxlint CLI option rather than part of `OxlintConfig`, Vite+ could treat this as command configuration and pass it separately to the Oxlint runner.
### Alternative
As a workaround:
```json
{
"scripts": {
"lint": "vp lint --format=agent",
"check": "vp fmt --check && vp lint --format=agent"
}
}
```
This has several drawbacks:
- It bypasses the integrated `vp check` execution path
- It duplicates Vite+ command behavior
- It requires staged hooks, CI, contributors, and coding agents to know which script to invoke
- It can diverge from the project’s normal `vp check` behavior
Another alternative is to rely on Oxlint’s automatic agent-environment detection. This is not deterministic across environments and does not currently recognize every agent harness.
### Additional context
## Related issues
- [#925](https://github.com/voidzero-dev/vite-plus/issues/925) concerns preserving the automatically selected GitHub reporter in `vp check`.
- [#2035](https://github.com/voidzero-dev/vite-plus/issues/2035) discusses Oxlint’s environment-dependent reporter selection and clean-pass output.
- [oxc-project/oxc#20514](https://github.com/oxc-project/oxc/issues/20514) implemented the agent formatter and automatic agent detection.
- [oxc-project/oxc#19072](https://github.com/oxc-project/oxc/issues/19072) proposes an environment-variable override for compact agent output.
This request is specifically about defining a deterministic, project-level output format in `vite.config.ts` and applying it consistently to both `vp lint` and `vp check`.
### Validations
- [x] Read the [Contributing Guidelines](https://github.com/voidzero-dev/vite-plus/blob/main/CONTRIBUTING.md).
- [x] Confirm this request is for Vite+ itself and not for Vite, Vitest, tsdown, Rolldown, or Oxc.
- [x] Check that there isn't already an issue requesting the same feature.
Beitragsleitfaden
Rechercherichtung
Beginne am Konfigurationseinstiegspunkt in vite.config.ts sowie an den Befehlspfaden von vp lint und vp check; verfolge außerdem, wie die Lint-Phase über vp staged aufgerufen wird. Überprüfe, wie die Oxlint-Argumente zusammengestellt werden, und bestätige anschließend, dass konfigurierte und über die CLI angegebene Formate auf Lint-Diagnosen angewendet werden, während vp check seine eigene Zusammenfassungsausgabe beibehält und eine weggelassene Konfiguration das aktuelle Verhalten bewahrt.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- typescript
- Bereich
- cli, developer-experience, tooling
- Issue-Typ
- Feature
- Schwierigkeit
- 4/5
- Geschätzter Aufwand
- 3-5 Tage
- Aktivitätsstatus
- Aktiv
- Klarheit
- Klar beschrieben
- Anfängerfreundlichkeit
- 65/100