voidzero-dev / voidzero-dev/vite-plus

Allow configuring the Oxlint output format for `vp lint` and `vp check`

Aperta
#2,608 2 commenti 1 reazione 0 assegnatari Vedi su GitHub
pending triage
Lingua principale
Rust
Stelle
5.8k
Fork
262
Merge medio
23h 41m
PR unite (30g)
138

Descrizione

### 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.

Guida per i contributori

Apri la guida per i contributori

Direzione di ricerca

Inizia dal punto di ingresso della configurazione in vite.config.ts e dai percorsi dei comandi vp lint e vp check; traccia inoltre il modo in cui la fase di lint viene invocata tramite vp staged. Verifica come vengono assemblati gli argomenti di Oxlint, quindi conferma che i formati configurati e quelli specificati tramite la CLI si applichino alla diagnostica di lint, mentre vp check mantenga il proprio output riepilogativo e l’omissione della configurazione preservi il comportamento attuale.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Valutazione

Stack tecnologico
typescript
Ambito
cli, developer-experience, tooling
Tipo di issue
Funzionalità
Difficoltà
4/5
Tempo stimato
3-5 giorni
Stato di attività
Attiva
Chiarezza
Specificata chiaramente
Idoneità per principianti
65/100

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.