Skip to content

refactor(cli): use native lint and fmt config discovery - #2731

Merged
fengmk2 merged 9 commits into
mainfrom
refactor/oxc-config-auto-discovery
Sep 22, 2026
Merged

fengmk2 merged 9 commits into
mainfrom
refactor/oxc-config-auto-discovery

Conversation

@fengmk2

@fengmk2 fengmk2 commented Sep 17, 2026 •

Copy link
Copy Markdown
Member

Oxlint and Oxfmt now discover every supported vite.config.* extension and disable nested configs in Vite+ mode. Remove the extra config load and automatic flags for commands run at the workspace root.

From a package directory, vp lint, vp fmt, and vp check still use the matching root lint or fmt block. This prevents package configs from replacing root format settings, lint rules, or type-check options. Commands keep the package working directory. Explicit -c and --config arguments take precedence.

If the root config lacks the relevant block, the tool uses native discovery.

@fengmk2 fengmk2 self-assigned this Sep 17, 2026
@github-actions

github-actions Bot commented Sep 17, 2026 •

Copy link
Copy Markdown
Contributor

✅ Staging deployment successful!

Preview: https://viteplus-staging.void.app/
Commit: 748bd5d

@cloudflare-workers-and-pages

cloudflare-workers-and-pages Bot commented Sep 17, 2026 •

Copy link
Copy Markdown

🚀 Deploying Preview to Cloudflare 🚀

Preview URL: https://refactor-oxc-config-auto-discovery-viteplus-dev.voidzero-docs.workers.dev (commit 748bd5d)

This URL reflects your latest Preview deployment

Preview Deployments by commit

Status Deployment URL Commit Updated (UTC) See this deployment's details
  • Build: Success ✅
  • Deployment: Success ✅

View logs ↗
https://1d50824c-viteplus-dev.voidzero-docs.workers.dev 748bd5d 2026-09-22T06:55:31.490Z Visit the dashboard ↗
  • Build: Success ✅
  • Deployment: Success ✅

View logs ↗
https://ef7b5206-viteplus-dev.voidzero-docs.workers.dev 46a45fa 2026-09-22T06:30:51.253Z Visit the dashboard ↗
  • Build: Success ✅
  • Deployment: Success ✅

View logs ↗
https://ee8f2c5d-viteplus-dev.voidzero-docs.workers.dev 133702e 2026-09-22T04:46:20.543Z Visit the dashboard ↗
  • Build: Success ✅
  • Deployment: Success ✅

View logs ↗
https://42f8077f-viteplus-dev.voidzero-docs.workers.dev 2996b3a 2026-09-22T04:26:50.689Z Visit the dashboard ↗
  • Build: Success ✅
  • Deployment: Success ✅

View logs ↗
https://13f82110-viteplus-dev.voidzero-docs.workers.dev d70c247 2026-09-22T03:55:00.560Z Visit the dashboard ↗
  • Build: Success ✅
  • Deployment: Success ✅

View logs ↗
https://a4d82239-viteplus-dev.voidzero-docs.workers.dev 00178bb 2026-09-22T03:51:26.222Z Visit the dashboard ↗
  • Build: Success ✅
  • Deployment: Success ✅

View logs ↗
https://689c40dd-viteplus-dev.voidzero-docs.workers.dev 13215e5 2026-09-21T13:55:47.991Z Visit the dashboard ↗
  • Build: Success ✅
  • Deployment: Success ✅

View logs ↗
https://d0978c77-viteplus-dev.voidzero-docs.workers.dev 43102d9 2026-09-17T06:58:14.578Z Visit the dashboard ↗
  • Build: Success ✅
  • Deployment: Success ✅

View logs ↗
https://3c332245-viteplus-dev.voidzero-docs.workers.dev 577e32f 2026-09-17T05:46:05.781Z Visit the dashboard ↗
  • Build: Success ✅
  • Deployment: Success ✅

View logs ↗
https://889369cc-viteplus-dev.voidzero-docs.workers.dev 1af1d78 2026-09-17T05:26:00.958Z Visit the dashboard ↗

View all previews: View all previews ↗

@fengmk2
fengmk2 force-pushed the refactor/oxc-config-auto-discovery branch from d579500 to 1af1d78 Compare September 17, 2026 05:24
@github-actions

github-actions Bot commented Sep 17, 2026 •

Copy link
Copy Markdown
Contributor

CLI artifact sizes (748bd5d)

Final release artifacts built by the canonical build-upstream and build-windows-cli actions.
The dist rows use the Linux build. The core total excludes .node files to match the release artifact.

Artifact Format Base PR Change
packages/cli/dist Directory total 2.12 MiB 2.12 MiB 0 B (0.00%)
packages/core/dist Directory total 3.95 MiB 3.95 MiB 0 B (0.00%)
Combined package dist Directory total 6.07 MiB 6.07 MiB 0 B (0.00%)
vp (Linux x64) Binary 11.28 MiB 11.28 MiB 0 B (0.00%)
vp (Linux x64) gzip -9 4.88 MiB 4.88 MiB 0 B (0.00%)
NAPI (Linux x64) Binary 32.11 MiB 32.11 MiB +4.00 KiB (+0.01%)
NAPI (Linux x64) gzip -9 12.73 MiB 12.74 MiB +1.19 KiB (+0.01%)
vp (macOS ARM64) Binary 8.41 MiB 8.41 MiB 0 B (0.00%)
vp (macOS ARM64) gzip -9 4.26 MiB 4.26 MiB 0 B (0.00%)
NAPI (macOS ARM64) Binary 39.71 MiB 39.72 MiB +16.13 KiB (+0.04%)
NAPI (macOS ARM64) gzip -9 17.04 MiB 17.04 MiB +650 B (+0.00%)
vp (Windows x64) Binary 9.16 MiB 9.16 MiB 0 B (0.00%)
vp (Windows x64) gzip -9 4.00 MiB 4.00 MiB 0 B (0.00%)
NAPI (Windows x64) Binary 27.07 MiB 27.07 MiB +2.50 KiB (+0.01%)
NAPI (Windows x64) gzip -9 10.84 MiB 10.84 MiB +1,009 B (+0.01%)
Trampoline (Windows x64) Binary 13.50 KiB 13.50 KiB 0 B (0.00%)
Trampoline (Windows x64) gzip -9 7.09 KiB 7.09 KiB +1 B (+0.01%)
Installer (Windows x64) Binary 4.56 MiB 4.56 MiB 0 B (0.00%)
Installer (Windows x64) gzip -9 2.13 MiB 2.13 MiB -1 B (-0.00%)

@fengmk2

fengmk2 commented Sep 17, 2026

Copy link
Copy Markdown
Member Author

Wait for oxlint|fmt to support vite.config.* extensions.

@leaysgur If you have time, you can review this change in advance to see whether it meets your expectations.

@leaysgur

leaysgur commented Sep 17, 2026 •

Copy link
Copy Markdown
Contributor

NOTE:

graphite-app Bot pushed a commit to oxc-project/oxc that referenced this pull request Sep 21, 2026
Precondition for voidzero-dev/vite-plus#2731

Also fixes existing bug that;

If that Vite+ project is using `vite.config.js` (not `.ts`):
- CLI by `vp lint` is covered by Vite+ injecting `-c path/to/vite.config.js`,
- but LSP cannot find it via find-up process.

`-c` for LSP is not supported, since LSP options should be managed by workspace option. So, user need to set `oxc(.fmt).configPath` for each workspace...

Only VP mode is affected, and there is no syscall perf hit.
@fengmk2
fengmk2 force-pushed the refactor/oxc-config-auto-discovery branch from 43102d9 to 13215e5 Compare September 21, 2026 13:54
@fengmk2
fengmk2 marked this pull request as ready for review September 21, 2026 14:01
@fengmk2
fengmk2 force-pushed the refactor/oxc-config-auto-discovery branch from 13215e5 to 00178bb Compare September 22, 2026 03:50
@fengmk2
fengmk2 merged commit 462111c into main Sep 22, 2026
122 checks passed
@fengmk2
fengmk2 deleted the refactor/oxc-config-auto-discovery branch September 22, 2026 07:10
fengmk2 added a commit that referenced this pull request Sep 22, 2026
…2780)

Vite+ now uses Vitest 5, and `vp migrate` helps Vitest 4 projects adopt
the new APIs and defaults. Standalone installs and upgrades now require
verified npm provenance for release binaries.

### Breaking Changes

#### Vitest 5

`vp test` and the public `vite-plus/test*` exports now use
`vitest@5.0.1`
([#2551](#2551)), by
@fengmk2.

| Area | Old | New |
| --- | --- | --- |
| Test runner | `vitest@4.1.11` | `vitest@5.0.1` |
| CLI Node.js range | `^20.19.0 \|\| ^22.18.0 \|\| >=24.11.0` |
`^22.18.0 \|\| ^24.11.0 \|\| >=26.0.0` |
| `vite-plus/test/runners` and `vite-plus/test/suite` | Vite+
compatibility exports | Use supported APIs from `vite-plus/test`; review
unsupported runner and expect plugins |
| `vite-plus/test/browser-webdriverio` | Bundled export | Use the
community `@vitest/browser-webdriverio` package |

Run `vp migrate` from the workspace root before you install the new
dependencies. The migrator updates supported config, source, benchmark,
command, and import changes. It reports manual work as `BLOCK` or
`REVIEW` items. See the [Vitest 5 migration
guide](https://viteplus.dev/guide/vitest-v5) for the full process.
Projects can stay on the prior release until their runtimes and tests
are ready.

#### `vp staged` runtime requirements

`vp staged` now uses `lint-staged@17.5.1`
([#2754](#2754)), by
@fengmk2.

| Requirement | Old | New |
| --- | --- | --- |
| Node.js for `vp staged` | The Vite+ CLI runtime range | `^22.22.1 \|\|
^24.11.0 \|\| >=26.0.0` |
| Git | No separate documented minimum | `>=2.32.0` |

Update Node.js and Git on developer machines and CI runners that execute
`vp staged` or its pre-commit hook. Other workflows do not use these
extra requirements.

### Highlights

- Standalone installers, `vp upgrade`, and `vp-setup.exe` now reject
release binaries without supported SLSA provenance
([#2440](#2440)), by
@kazupon.
- Installers now show progress and the exact shell activation command.
Download progress preserves earlier terminal output
([#2744](#2744),
[#2741](#2741)), by
@fengmk2.
- System-first runtime and package-manager shims now use a fallback
directory at the end of `PATH`. Setup restores missing package-manager
preferences
([#2758](#2758),
[#2763](#2763)), by
@liangmiQwQ and @fengmk2.
- `vp run` now finishes when background processes remain. Large file
traces run without caching instead of killing the task
([#2767](#2767),
[vite-task#675](voidzero-dev/vite-task#675)), by
@wan9chi.

### Features

- `vp add` now supports shared install options such as `--offline`,
`--frozen-lockfile`, and `--lockfile-only`
([#2722](#2722)), by
@jong-kyung.
- `vp pm patch` and `vp pm patch-commit` now use the native commands in
npm 12 and later
([#2736](#2736)), by
@jong-kyung.
- `vp rebuild` now supports Yarn Berry and forwards package names and
extra arguments
([#2761](#2761)), by
@jong-kyung.
- The bundled tools update `oxlint` `1.83.0` -> `1.85.0`,
`oxlint-tsgolint` `7.0.2001` -> `7.0.2002`, and `oxfmt` `0.68.0` ->
`0.70.0` ([#2745](#2745),
[#2773](#2773),
[#2778](#2778)), by
@voidzero-guard[bot]. These versions can flag or format code that passed
before. Run `vp fmt` after upgrading if CI runs `vp check`.

### Fixes & Enhancements

- `oxlint` and `oxfmt` no longer expose bin wrappers that conflict with
upstream packages. Editors must use `vp lint --lsp`, `vp fmt --lsp`, or
`vp fmt --stdin-filepath`
([#2672](#2672)), by
@fengmk2.
- `vp create vite:generator` now replaces catalog references for package
managers that do not support catalogs
([#2720](#2720)), by
@SaKaNa-Y.
- Unpinned npm projects now use the npm version bundled with the
selected Node.js runtime. The same policy works during migration
([#2742](#2742),
[#2748](#2748)), by
@liangmiQwQ.
- The CLI now loads its local versions module through a file URL,
including on Windows paths
([#2749](#2749)), by
@YanChenBai.
- Package-manager commands now use pnpm when the project has no detected
package manager
([#2750](#2750)), by
@liangmiQwQ.
- `vp migrate` now removes unused `@oxlint/plugins` dependencies after
it rewrites plugin imports
([#2751](#2751)), by
@fengmk2.
- `vp update --no-save` now warns that Yarn Classic and Yarn Berry do
not support the option
([#2762](#2762)), by
@jong-kyung.
- `vp migrate` now explains its `tsdown@0.23` compatibility settings and
links to removal guidance
([#2769](#2769)), by
@fengmk2.
- Environment setup now installs and diagnoses the official `pn` and
`pnx` aliases for pnpm
([#2770](#2770)), by
@iruoy.
- Cached tasks now receive GitHub Actions OIDC variables, so npm Trusted
Publishing works through `vp run`
([vite-task#691](voidzero-dev/vite-task#691)),
by @naokihaba.
- Automatic task input tracking now records file access from signal
handlers
([vite-task#687](voidzero-dev/vite-task#687)),
by @wan9chi.

### Refactor

- `vp lint`, `vp fmt`, and `vp check` now use native config discovery.
Package commands keep matching workspace-root settings, while explicit
config flags take precedence
([#2731](#2731)), by
@fengmk2.

### Chore

- Generated workflows and `vp migrate` now use `setup-vp@v1.21.1`,
including its installation fixes
([#2760](#2760),
[#2772](#2772)), by
@renovate[bot] and @fengmk2.

### Bundled Versions

| Tool | Version | Source |
| --- | --- | --- |
| vite | `8.3.0` |
[`434e8e9`](vitejs/vite@434e8e9)
|
| rolldown | `1.2.9` |
[`5b4746e`](rolldown/rolldown@5b4746e)
|
| tsdown | `0.23.0` | [npm](https://npmx.dev/package/tsdown/v/0.23.0) |
| vitest | `5.0.1` | [npm](https://npmx.dev/package/vitest/v/5.0.1) |
| oxlint | `1.85.0` | [npm](https://npmx.dev/package/oxlint/v/1.85.0) |
| oxlint-tsgolint | `7.0.2002` |
[npm](https://npmx.dev/package/oxlint-tsgolint/v/7.0.2002) |
| oxfmt | `0.70.0` | [npm](https://npmx.dev/package/oxfmt/v/0.70.0) |

### Upgrade

```bash
vp upgrade
```

### New Contributors

@YanChenBai, @iruoy

**Full Changelog**:
v0.3.3...v1.0.0-rc.0

---

Merging this PR will trigger the release workflow.

---------

Co-authored-by: voidzero-guard[bot] <278573678+voidzero-guard[bot]@users.noreply.github.com>
Co-authored-by: MK (fengmk2) <fengmk2@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

test: create-e2e Run `vp create` e2e tests test: e2e Auto run e2e tests

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants