From 7693b492534b53b895bdfea61ed9e61e27d29903 Mon Sep 17 00:00:00 2001 From: robonen Date: Sun, 7 Jun 2026 16:28:10 +0700 Subject: [PATCH] =?UTF-8?q?chore(configs):=20migrate=20oxlint=E2=86=92esli?= =?UTF-8?q?nt=20presets,=20refactor=20tsconfig?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Replace @robonen/oxlint with @robonen/eslint (composable ESLint flat-config presets: base, typescript, vue, vitest, imports, node, stylistic). - Plugins bundled as deps: typescript-eslint, eslint-plugin-vue, @vitest/eslint-plugin, eslint-plugin-import-x, eslint-plugin-n, eslint-plugin-unicorn, @stylistic/eslint-plugin. - @robonen/tsconfig: add base/dom/node/vue configs for composite project refs. --- configs/eslint/README.md | 74 ++++++++ configs/eslint/eslint.config.ts | 3 + configs/{oxlint => eslint}/package.json | 43 +++-- configs/{oxlint => eslint}/rules/README.md | 4 +- configs/{oxlint => eslint}/rules/base.md | 12 +- configs/{oxlint => eslint}/rules/imports.md | 12 +- configs/eslint/rules/node.md | 22 +++ configs/{oxlint => eslint}/rules/stylistic.md | 0 configs/eslint/rules/typescript.md | 33 ++++ configs/{oxlint => eslint}/rules/vitest.md | 2 +- configs/{oxlint => eslint}/rules/vue.md | 0 configs/eslint/src/compose.ts | 34 ++++ configs/eslint/src/index.ts | 13 ++ configs/eslint/src/presets/base.ts | 101 +++++++++++ configs/eslint/src/presets/imports.ts | 53 ++++++ .../{oxlint => eslint}/src/presets/index.ts | 2 +- configs/eslint/src/presets/node.ts | 27 +++ configs/eslint/src/presets/stylistic.ts | 165 +++++++++++++++++ configs/eslint/src/presets/typescript.ts | 51 ++++++ configs/eslint/src/presets/vitest.ts | 38 ++++ configs/eslint/src/presets/vue.ts | 52 ++++++ configs/eslint/src/types.ts | 27 +++ configs/eslint/test/compose.test.ts | 67 +++++++ configs/eslint/tsconfig.json | 7 + configs/eslint/tsconfig.node.json | 8 + configs/eslint/tsconfig.src.json | 9 + configs/{oxlint => eslint}/tsdown.config.ts | 1 + configs/{oxlint => eslint}/vitest.config.ts | 0 configs/oxlint/README.md | 67 ------- configs/oxlint/oxlint.config.ts | 4 - configs/oxlint/rules/node.md | 22 --- configs/oxlint/rules/typescript.md | 33 ---- configs/oxlint/src/compose.ts | 120 ------------ configs/oxlint/src/index.ts | 18 -- configs/oxlint/src/presets/base.ts | 73 -------- configs/oxlint/src/presets/imports.ts | 22 --- configs/oxlint/src/presets/node.ts | 17 -- configs/oxlint/src/presets/stylistic.ts | 162 ----------------- configs/oxlint/src/presets/typescript.ts | 39 ---- configs/oxlint/src/presets/vitest.ts | 35 ---- configs/oxlint/src/presets/vue.ts | 26 --- configs/oxlint/src/types.ts | 19 -- configs/oxlint/test/compose.test.ts | 171 ------------------ configs/oxlint/tsconfig.json | 9 - configs/tsconfig/README.md | 95 +++++++++- configs/tsconfig/package.json | 8 +- configs/tsconfig/tsconfig.base.json | 35 ++++ configs/tsconfig/tsconfig.dom.json | 8 + configs/tsconfig/tsconfig.json | 37 +--- configs/tsconfig/tsconfig.node.json | 9 + configs/tsconfig/tsconfig.vue.json | 15 ++ 51 files changed, 988 insertions(+), 916 deletions(-) create mode 100644 configs/eslint/README.md create mode 100644 configs/eslint/eslint.config.ts rename configs/{oxlint => eslint}/package.json (57%) rename configs/{oxlint => eslint}/rules/README.md (85%) rename configs/{oxlint => eslint}/rules/base.md (50%) rename configs/{oxlint => eslint}/rules/imports.md (57%) create mode 100644 configs/eslint/rules/node.md rename configs/{oxlint => eslint}/rules/stylistic.md (100%) create mode 100644 configs/eslint/rules/typescript.md rename configs/{oxlint => eslint}/rules/vitest.md (84%) rename configs/{oxlint => eslint}/rules/vue.md (100%) create mode 100644 configs/eslint/src/compose.ts create mode 100644 configs/eslint/src/index.ts create mode 100644 configs/eslint/src/presets/base.ts create mode 100644 configs/eslint/src/presets/imports.ts rename configs/{oxlint => eslint}/src/presets/index.ts (84%) create mode 100644 configs/eslint/src/presets/node.ts create mode 100644 configs/eslint/src/presets/stylistic.ts create mode 100644 configs/eslint/src/presets/typescript.ts create mode 100644 configs/eslint/src/presets/vitest.ts create mode 100644 configs/eslint/src/presets/vue.ts create mode 100644 configs/eslint/src/types.ts create mode 100644 configs/eslint/test/compose.test.ts create mode 100644 configs/eslint/tsconfig.json create mode 100644 configs/eslint/tsconfig.node.json create mode 100644 configs/eslint/tsconfig.src.json rename configs/{oxlint => eslint}/tsdown.config.ts (82%) rename configs/{oxlint => eslint}/vitest.config.ts (100%) delete mode 100644 configs/oxlint/README.md delete mode 100644 configs/oxlint/oxlint.config.ts delete mode 100644 configs/oxlint/rules/node.md delete mode 100644 configs/oxlint/rules/typescript.md delete mode 100644 configs/oxlint/src/compose.ts delete mode 100644 configs/oxlint/src/index.ts delete mode 100644 configs/oxlint/src/presets/base.ts delete mode 100644 configs/oxlint/src/presets/imports.ts delete mode 100644 configs/oxlint/src/presets/node.ts delete mode 100644 configs/oxlint/src/presets/stylistic.ts delete mode 100644 configs/oxlint/src/presets/typescript.ts delete mode 100644 configs/oxlint/src/presets/vitest.ts delete mode 100644 configs/oxlint/src/presets/vue.ts delete mode 100644 configs/oxlint/src/types.ts delete mode 100644 configs/oxlint/test/compose.test.ts delete mode 100644 configs/oxlint/tsconfig.json create mode 100644 configs/tsconfig/tsconfig.base.json create mode 100644 configs/tsconfig/tsconfig.dom.json create mode 100644 configs/tsconfig/tsconfig.node.json create mode 100644 configs/tsconfig/tsconfig.vue.json diff --git a/configs/eslint/README.md b/configs/eslint/README.md new file mode 100644 index 0000000..3791415 --- /dev/null +++ b/configs/eslint/README.md @@ -0,0 +1,74 @@ +# @robonen/eslint + +Composable [ESLint](https://eslint.org) flat-config presets. + +## Install + +```bash +pnpm install -D @robonen/eslint eslint jiti +``` + +> `jiti` lets ESLint load a TypeScript `eslint.config.ts`. + +## Usage + +Create `eslint.config.ts` in your project root: + +```ts +import { compose, base, typescript, vue, vitest, imports } from '@robonen/eslint'; + +export default compose(base, typescript, vue, vitest, imports); +``` + +Append custom config objects after presets to override them: + +```ts +import { compose, base, typescript } from '@robonen/eslint'; + +export default compose(base, typescript, { + rules: { 'no-console': 'off' }, +}, { + files: ['**/*.vue'], + rules: { '@stylistic/no-multiple-empty-lines': 'off' }, +}); +``` + +## Presets + +| Preset | Plugin(s) | Description | +| ------------ | -------------------------------------- | ---------------------------------------------- | +| `base` | `@eslint/js`, `eslint-plugin-unicorn` | Core eslint + unicorn rules, global ignores | +| `typescript` | `typescript-eslint` | TypeScript rules (`**/*.ts`, `**/*.vue`) | +| `vue` | `eslint-plugin-vue` | Vue 3 Composition API / `