Skip to content

Commit 68031c4

Browse files
VdustRclaude
andauthored
fix: lazy load @eslint-react/eslint-plugin when react is disabled (#29)
* fix: lazy load react eslint plugin Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * refactor: simplify eslintReact function Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
1 parent 341693e commit 68031c4

File tree

4 files changed

+17
-2
lines changed

4 files changed

+17
-2
lines changed

.changeset/lazy-load-react.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"@vp-tw/eslint-config": patch
3+
---
4+
5+
Lazy load `@eslint-react/eslint-plugin` to avoid loading when `react: false`

packages/eslint-config/src/extends/react.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
import type { ConfigOverrides, Rules, VpComposer } from "../types";
22
import { GLOB_MARKDOWN_CODE } from "@antfu/eslint-config";
3-
import eslintReact from "@eslint-react/eslint-plugin";
43
import { omit, pick } from "es-toolkit";
54
import { reactCompiler } from "../configs/reactCompiler";
65
import { GLOB_MDX_CODE } from "../globs";
6+
import { eslintReact as importEslintReact } from "../lib/eslint-react";
77
import { extendsConfig } from "../utils/extendsConfig";
88
import { mergeConfig } from "../utils/mergeConfig";
99
import { ignoreKeys } from "./_utils";
@@ -56,6 +56,7 @@ function renameReactRules(rules: Partial<Rules>) {
5656
const react = (composer: VpComposer, options?: react.Options) => {
5757
const typescriptEnabled: boolean = options?.typescript ?? true;
5858
extendsConfig(composer, "antfu/react/rules", async (config) => {
59+
const eslintReact = await importEslintReact();
5960
const modifiedConfig = mergeConfig(pick(options?.react ?? {}, ["files", "ignores"]), config);
6061
const omittedConfig = omit(modifiedConfig, ignoreKeys);
6162
const baseConfig = typescriptEnabled
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
import { interopDefault } from "@antfu/eslint-config";
2+
3+
const eslintReact = () => interopDefault(import("@eslint-react/eslint-plugin"));
4+
5+
export { eslintReact };

packages/eslint-config/src/vdustr.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,8 @@ const vdustr = (options?: Options, ...userConfigs: Array<Config>): VpComposer =>
7676
const mdxEnabled: boolean = Boolean(vpOptions?.mdx ?? false);
7777
const storybookEnabled: boolean = Boolean(vpOptions?.storybook ?? false);
7878
const prettierEnabled: boolean = Boolean(vpOptions?.prettier ?? true);
79+
// antfu's react is disabled by default
80+
const reactEnabled: boolean = Boolean(antfuOptions?.react ?? false);
7981

8082
let config: VpComposer = antfu({
8183
...antfuOptions,
@@ -96,7 +98,9 @@ const vdustr = (options?: Options, ...userConfigs: Array<Config>): VpComposer =>
9698
sortJsonKeys(config, vpOptions?.extends?.sort?.jsoncSortKeys);
9799
sortJsonArrayValues(config, vpOptions?.extends?.sort?.jsoncSortArrayValues);
98100
yaml(config, vpOptions?.extends?.yaml);
99-
react(config, vpOptions?.extends?.react);
101+
if (reactEnabled) {
102+
react(config, vpOptions?.extends?.react);
103+
}
100104
pnpm(config, vpOptions?.extends?.pnpm);
101105

102106
if (packageJsonEnabled) {

0 commit comments

Comments
 (0)