From ae6fb855e469b85e4272996a58251166550a8144 Mon Sep 17 00:00:00 2001 From: Liang Date: Fri, 11 Sep 2026 18:49:43 +0800 Subject: [PATCH 1/5] docs: clarify unsupported nested lint/fmt config --- docs/config/fmt.md | 4 ++-- docs/config/lint.md | 4 ++-- docs/guide/fmt.md | 4 +++- docs/guide/lint.md | 4 +++- docs/guide/monorepo.md | 2 ++ docs/guide/troubleshooting.md | 14 ++++++++++++++ 6 files changed, 26 insertions(+), 6 deletions(-) diff --git a/docs/config/fmt.md b/docs/config/fmt.md index 254ed73b2a..845bc35b3d 100644 --- a/docs/config/fmt.md +++ b/docs/config/fmt.md @@ -1,6 +1,6 @@ # Format Config -`vp fmt` and `vp check` read Oxfmt settings from the `fmt` block in `vite.config.ts`. See [Oxfmt's configuration](https://oxc.rs/docs/guide/usage/formatter/config.html) for details. +`vp fmt` and `vp check` read Oxfmt settings from the `fmt` block in the root `vite.config.ts`. See [Oxfmt's configuration](https://oxc.rs/docs/guide/usage/formatter/config.html) for details. ## Example @@ -17,4 +17,4 @@ export default defineConfig({ }); ``` -For package-specific formatting settings in a workspace, use [`fmt.overrides`](/guide/monorepo#format-overrides) from the root `vite.config.ts`. +Vite+ does not currently support nested format configuration. For now, use [`fmt.overrides`](/guide/monorepo#format-overrides) from the root `vite.config.ts` for file- or package-specific formatting settings. See [troubleshooting](/guide/troubleshooting#nested-lint-or-format-config-is-not-applied) for details and how to give feedback on future support. diff --git a/docs/config/lint.md b/docs/config/lint.md index 3d097b6603..52e335b21a 100644 --- a/docs/config/lint.md +++ b/docs/config/lint.md @@ -1,6 +1,6 @@ # Lint Config -`vp lint` and `vp check` read Oxlint settings from the `lint` block in `vite.config.ts`. See [Oxlint's configuration](https://oxc.rs/docs/guide/usage/linter/config.html) for details. +`vp lint` and `vp check` read Oxlint settings from the `lint` block in the root `vite.config.ts`. See [Oxlint's configuration](https://oxc.rs/docs/guide/usage/linter/config.html) for details. ## Example @@ -23,4 +23,4 @@ export default defineConfig({ We recommend enabling both `options.typeAware` and `options.typeCheck` so `vp lint` and `vp check` can use the full type-aware path. -For package-specific lint rules in a workspace, use [`lint.overrides`](/guide/monorepo#root-config-with-overrides) from the root `vite.config.ts`. +Vite+ does not currently support nested lint configuration. For now, use [`lint.overrides`](/guide/monorepo#root-config-with-overrides) from the root `vite.config.ts` for file- or package-specific lint rules. See [troubleshooting](/guide/troubleshooting#nested-lint-or-format-config-is-not-applied) for details and how to give feedback on future support. diff --git a/docs/guide/fmt.md b/docs/guide/fmt.md index 73bd9eee0c..8f384f2e73 100644 --- a/docs/guide/fmt.md +++ b/docs/guide/fmt.md @@ -18,7 +18,9 @@ vp fmt . --write ## Configuration -Put formatting configuration directly in the `fmt` block in `vite.config.ts` so all your configuration stays in one place. We do not recommend using `.oxfmtrc.json` with Vite+. +Put formatting configuration directly in the `fmt` block in the root `vite.config.ts` so all your configuration stays in one place. We do not recommend using `.oxfmtrc.json` with Vite+. + +Vite+ does not currently support nested format configuration. For now, use [`fmt.overrides`](/guide/monorepo#format-overrides) in the root `vite.config.ts` for file- or package-specific options. The long-term behavior is open for discussion; [share your use case and expectations](/guide/troubleshooting#nested-lint-or-format-config-is-not-applied) to help shape it. For editors, disable nested formatter configs so format-on-save uses the root Vite+ `fmt` block: diff --git a/docs/guide/lint.md b/docs/guide/lint.md index 27a575f5ea..467d911268 100644 --- a/docs/guide/lint.md +++ b/docs/guide/lint.md @@ -18,7 +18,9 @@ vp lint --type-aware ## Configuration -Put lint configuration directly in the `lint` block in `vite.config.ts` so all your configuration stays in one place. We do not recommend using `oxlint.config.ts` or `.oxlintrc.json` with Vite+. +Put lint configuration directly in the `lint` block in the root `vite.config.ts` so all your configuration stays in one place. We do not recommend using `oxlint.config.ts` or `.oxlintrc.json` with Vite+. + +Vite+ does not currently support nested lint configuration. For now, use [`lint.overrides`](/guide/monorepo#root-config-with-overrides) in the root `vite.config.ts` for file- or package-specific rules. The long-term behavior is open for discussion; [share your use case and expectations](/guide/troubleshooting#nested-lint-or-format-config-is-not-applied) to help shape it. For the upstream rule set, options, and compatibility details, see the [Oxlint docs](https://oxc.rs/docs/guide/usage/linter.html). diff --git a/docs/guide/monorepo.md b/docs/guide/monorepo.md index 74482b3e64..e928907888 100644 --- a/docs/guide/monorepo.md +++ b/docs/guide/monorepo.md @@ -6,6 +6,8 @@ Because `vite.config.ts` is just JavaScript, you can choose to put your entire c ## Root Config With Overrides +Vite+ does not currently support nested lint or format configuration. Package-level `lint` and `fmt` blocks are not automatically applied. For now, define file- or package-specific settings with overrides in the root `vite.config.ts`. The long-term behavior is open for discussion; [share your use case and expectations](/guide/troubleshooting#nested-lint-or-format-config-is-not-applied) to help shape it. + Use `lint.overrides` for Oxlint rules that only apply to some packages: ```ts [vite.config.ts] diff --git a/docs/guide/troubleshooting.md b/docs/guide/troubleshooting.md index ce88a329c5..18236c4aa7 100644 --- a/docs/guide/troubleshooting.md +++ b/docs/guide/troubleshooting.md @@ -28,6 +28,20 @@ The Oxlint type checker path powered by `tsgolint` does not support `baseUrl`. fix before enabling type-aware linting. If that fix fails or is declined, Vite+ skips `typeAware` and `typeCheck`. +## Nested lint or format config is not applied + +Vite+ does not currently support nested lint or format configuration. When running `vp lint`, `vp fmt`, or `vp check` from the workspace root, do not rely on configs in subdirectories or on `lint` and `fmt` blocks in package-level `vite.config.ts` files to override the root settings. + +We're holding off on nested config support for now. Some of the factors we're considering are how implicit config discovery affects the predictability of linting and formatting, what context AI agents need to understand the settings that apply, and the potential performance cost of finding and loading multiple configs. At the same time, we recognize that keeping package-specific context close to the code may have benefits. The use cases we've heard so far haven't given us a strong enough reason to commit to those semantics. Waiting leaves room to add support later, and we'd like to hear why your project needs nested configs, especially where root-level overrides fall short. + +Keep lint and format settings in the root `vite.config.ts`. Use [`lint.overrides`](/guide/monorepo#root-config-with-overrides) and [`fmt.overrides`](/guide/monorepo#format-overrides) for file- or package-specific settings. You can also [import configuration objects](/guide/monorepo#composing-configuration-files) into the root config to keep settings in separate files. + +For format-on-save, [disable nested formatter configs](/guide/fmt#configuration) in the editor so it uses the root Vite+ `fmt` block. + +Do you need nested configs? [Share your use case and opinion on GitHub](#asking-for-help), including your project structure, the reason why you want them and whether root-level overrides meet your needs. + +We sincerely hope to hear your feedback. This will help us decide whether to improve the current situation in the future. + ## VS Code extension does not read `vite.config.ts` If VS Code has multiple folders open, the shared Oxc language server may pick a different workspace than expected. That can make it look like `vite.config.ts` support is missing. From def8ade4f235456817d99415e7b81f7952d52909 Mon Sep 17 00:00:00 2001 From: Liang Date: Fri, 11 Sep 2026 18:56:06 +0800 Subject: [PATCH 2/5] wip --- docs/guide/troubleshooting.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/guide/troubleshooting.md b/docs/guide/troubleshooting.md index 18236c4aa7..605ebc9b86 100644 --- a/docs/guide/troubleshooting.md +++ b/docs/guide/troubleshooting.md @@ -36,7 +36,7 @@ We're holding off on nested config support for now. Some of the factors we're co Keep lint and format settings in the root `vite.config.ts`. Use [`lint.overrides`](/guide/monorepo#root-config-with-overrides) and [`fmt.overrides`](/guide/monorepo#format-overrides) for file- or package-specific settings. You can also [import configuration objects](/guide/monorepo#composing-configuration-files) into the root config to keep settings in separate files. -For format-on-save, [disable nested formatter configs](/guide/fmt#configuration) in the editor so it uses the root Vite+ `fmt` block. +For IDE integration, we have `disableNestedConfig` and `fmt.disableNestedConfig` config to disable nested lint and format configs and keep editor behavior aligned with the root Vite+ config. See [IDE Integration](/guide/ide-integration) for setup instructions for your editor. Do you need nested configs? [Share your use case and opinion on GitHub](#asking-for-help), including your project structure, the reason why you want them and whether root-level overrides meet your needs. From de0d136dee42625df2a89d575874bc48388d8cb5 Mon Sep 17 00:00:00 2001 From: Liang Date: Fri, 11 Sep 2026 19:00:58 +0800 Subject: [PATCH 3/5] wip --- docs/guide/troubleshooting.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/guide/troubleshooting.md b/docs/guide/troubleshooting.md index 605ebc9b86..9a821e3d25 100644 --- a/docs/guide/troubleshooting.md +++ b/docs/guide/troubleshooting.md @@ -38,7 +38,7 @@ Keep lint and format settings in the root `vite.config.ts`. Use [`lint.overrides For IDE integration, we have `disableNestedConfig` and `fmt.disableNestedConfig` config to disable nested lint and format configs and keep editor behavior aligned with the root Vite+ config. See [IDE Integration](/guide/ide-integration) for setup instructions for your editor. -Do you need nested configs? [Share your use case and opinion on GitHub](#asking-for-help), including your project structure, the reason why you want them and whether root-level overrides meet your needs. +Do you need nested configs? [Share your use case and opinion on GitHub](https://github.com/voidzero-dev/vite-plus/discussions/2669), including your project structure, the reason why you want them and whether root-level overrides meet your needs. We sincerely hope to hear your feedback. This will help us decide whether to improve the current situation in the future. From 5bfdca47f007f5225ade26e63d465fd1418289e7 Mon Sep 17 00:00:00 2001 From: Liang Date: Fri, 11 Sep 2026 19:06:13 +0800 Subject: [PATCH 4/5] wip --- docs/config/fmt.md | 4 +++- docs/config/lint.md | 4 +++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/docs/config/fmt.md b/docs/config/fmt.md index 845bc35b3d..fcd56d7ad9 100644 --- a/docs/config/fmt.md +++ b/docs/config/fmt.md @@ -17,4 +17,6 @@ export default defineConfig({ }); ``` -Vite+ does not currently support nested format configuration. For now, use [`fmt.overrides`](/guide/monorepo#format-overrides) from the root `vite.config.ts` for file- or package-specific formatting settings. See [troubleshooting](/guide/troubleshooting#nested-lint-or-format-config-is-not-applied) for details and how to give feedback on future support. +For file- or package-specific formatting settings, use [`fmt.overrides`](/guide/monorepo#format-overrides) from the root `vite.config.ts`. + +Vite+ does not currently support nested format configuration. See [troubleshooting](/guide/troubleshooting#nested-lint-or-format-config-is-not-applied) for details and how to give feedback on future support. diff --git a/docs/config/lint.md b/docs/config/lint.md index 52e335b21a..059e294a0e 100644 --- a/docs/config/lint.md +++ b/docs/config/lint.md @@ -23,4 +23,6 @@ export default defineConfig({ We recommend enabling both `options.typeAware` and `options.typeCheck` so `vp lint` and `vp check` can use the full type-aware path. -Vite+ does not currently support nested lint configuration. For now, use [`lint.overrides`](/guide/monorepo#root-config-with-overrides) from the root `vite.config.ts` for file- or package-specific lint rules. See [troubleshooting](/guide/troubleshooting#nested-lint-or-format-config-is-not-applied) for details and how to give feedback on future support. +For file- or package-specific lint rules, use [`lint.overrides`](/guide/monorepo#root-config-with-overrides) from the root `vite.config.ts`. + +Vite+ does not currently support nested lint configuration. See [troubleshooting](/guide/troubleshooting#nested-lint-or-format-config-is-not-applied) for details and how to give feedback on future support. From ee905784b4ba36979dcf9231dbb702b516658ea6 Mon Sep 17 00:00:00 2001 From: Liang Date: Fri, 11 Sep 2026 19:08:25 +0800 Subject: [PATCH 5/5] wip --- docs/guide/troubleshooting.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/guide/troubleshooting.md b/docs/guide/troubleshooting.md index 9a821e3d25..6e13007ee9 100644 --- a/docs/guide/troubleshooting.md +++ b/docs/guide/troubleshooting.md @@ -32,12 +32,12 @@ skips `typeAware` and `typeCheck`. Vite+ does not currently support nested lint or format configuration. When running `vp lint`, `vp fmt`, or `vp check` from the workspace root, do not rely on configs in subdirectories or on `lint` and `fmt` blocks in package-level `vite.config.ts` files to override the root settings. -We're holding off on nested config support for now. Some of the factors we're considering are how implicit config discovery affects the predictability of linting and formatting, what context AI agents need to understand the settings that apply, and the potential performance cost of finding and loading multiple configs. At the same time, we recognize that keeping package-specific context close to the code may have benefits. The use cases we've heard so far haven't given us a strong enough reason to commit to those semantics. Waiting leaves room to add support later, and we'd like to hear why your project needs nested configs, especially where root-level overrides fall short. - Keep lint and format settings in the root `vite.config.ts`. Use [`lint.overrides`](/guide/monorepo#root-config-with-overrides) and [`fmt.overrides`](/guide/monorepo#format-overrides) for file- or package-specific settings. You can also [import configuration objects](/guide/monorepo#composing-configuration-files) into the root config to keep settings in separate files. For IDE integration, we have `disableNestedConfig` and `fmt.disableNestedConfig` config to disable nested lint and format configs and keep editor behavior aligned with the root Vite+ config. See [IDE Integration](/guide/ide-integration) for setup instructions for your editor. +We're holding off on nested config support for now. Some of the factors we're considering are how implicit config discovery affects the predictability of linting and formatting, what context AI agents need to understand the settings that apply, and the potential performance cost of finding and loading multiple configs. At the same time, we recognize that keeping package-specific context close to the code may have benefits. The use cases we've heard so far haven't given us a strong enough reason to commit to those semantics. Waiting leaves room to add support later, and we'd like to hear why your project needs nested configs, especially where root-level overrides fall short. + Do you need nested configs? [Share your use case and opinion on GitHub](https://github.com/voidzero-dev/vite-plus/discussions/2669), including your project structure, the reason why you want them and whether root-level overrides meet your needs. We sincerely hope to hear your feedback. This will help us decide whether to improve the current situation in the future.