{"_id":"@brandlen/eslint-config","_rev":"5-9aa2a0a3236db37cd241b35b87adf0ac","name":"@brandlen/eslint-config","dist-tags":{"latest":"0.2.1"},"versions":{"0.1.1":{"name":"@brandlen/eslint-config","version":"0.1.1","_id":"@brandlen/eslint-config@0.1.1","maintainers":[{"name":"brandon_leon","email":"awesome163@126.com"}],"homepage":"https://github.com/Brandon-Ln/eslint-config#readme","bugs":{"url":"https://github.com/Brandon-Ln/eslint-config/issues"},"dist":{"shasum":"de1854a31af5ea0ac82cea7c3c411facd0f38486","tarball":"https://registry.npmjs.org/@brandlen/eslint-config/-/eslint-config-0.1.1.tgz","fileCount":4,"integrity":"sha512-zDGnyej4PTaSSc6lkRSBzztgnaBS/VO9rBKqq/4CydZlk7BDczwDf86A/ArKgKRJRk1TN9A5nAscm23P7YuVsA==","signatures":[{"sig":"MEYCIQDYAAXjnUbpnviC/TRqkNtuPtBB2TWo4pTA3IMKJbPACwIhANxcm8OTEcMS7gdqA5m/h27JfyDzpT2NBS+7hDJ67mbG","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":18593},"type":"module","engines":{"node":">=18.18.0"},"exports":{".":"./dist/index.js"},"gitHead":"b4754de7c9ed1ccc9efa86f8ef79a02b052c9d39","scripts":{"lint":"eslint .","test":"vitest run","build":"tsdown","verify":"pnpm build && pnpm lint && pnpm typecheck && pnpm test","release":"bumpp","lint:fix":"eslint . --fix","typecheck":"tsc --noEmit","test:watch":"vitest","build:watch":"tsdown --watch"},"_npmUser":{"name":"brandon_leon","email":"awesome163@126.com"},"repository":{"url":"git+https://github.com/Brandon-Ln/eslint-config.git","type":"git"},"_npmVersion":"11.16.0","description":"Personal ESLint flat config for JavaScript and strongly typed TypeScript projects.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"globals":"^16.0.0","@eslint/js":"^9.0.0","@eslint/compat":"^1.3.0","eslint-plugin-vue":"^10.0.0","typescript-eslint":"^8.0.0","eslint-plugin-react":"^7.37.0","eslint-plugin-import":"^2.31.0","eslint-plugin-react-hooks":"^7.0.0","@vue/eslint-config-typescript":"^14.0.0","eslint-plugin-simple-import-sort":"^13.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.16.1","devDependencies":{"vue":"^3.0.0","bumpp":"^11.1.0","react":"^19.0.0","eslint":"^9.0.0","tsdown":"^0.22.4","vitest":"^3.0.0","publint":"^0.3.21","typescript":"^6.0.0","@types/node":"^22.0.0","@nestjs/common":"^11.0.0","@arethetypeswrong/core":"^0.18.2"},"peerDependencies":{"eslint":"^9.0.0","typescript":">=5.0.0 <6.1.0"},"peerDependenciesMeta":{"typescript":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/eslint-config_0.1.1_1783961426832_0.9277706324156481","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@brandlen/eslint-config","version":"0.1.2","_id":"@brandlen/eslint-config@0.1.2","maintainers":[{"name":"brandon_leon","email":"awesome163@126.com"}],"homepage":"https://github.com/Brandon-Ln/eslint-config#readme","bugs":{"url":"https://github.com/Brandon-Ln/eslint-config/issues"},"dist":{"shasum":"7490c9c918672aca25d1c1cf127b885a4c8286ab","tarball":"https://registry.npmjs.org/@brandlen/eslint-config/-/eslint-config-0.1.2.tgz","fileCount":5,"integrity":"sha512-tHqt1QSGWQjsrcDyu4yHCkMbWTIMeLOe48SVKyBVYeit2FJJYHsmkJkwflHerzGPDKlOlqDA2Zm1ZcUI2VMDUw==","signatures":[{"sig":"MEQCIF1RgJRpadp1a8/NwyXkU7uaZP8/RtSSWW88rzony6gsAiBcDZ2rhqBPUmnvejn8RxX7RntgjsMQwFi5zrGFfPYAmg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@brandlen%2feslint-config@0.1.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":18333},"type":"module","engines":{"node":">=18.18.0"},"exports":{".":"./dist/index.js"},"gitHead":"61d6630397131fe7392dfe3c62111371fb73df1b","scripts":{"lint":"eslint .","test":"vitest run","build":"tsdown","verify":"pnpm build && pnpm lint && pnpm typecheck && pnpm test","release":"bumpp","lint:fix":"eslint . --fix","typecheck":"tsc --noEmit","test:watch":"vitest","build:watch":"tsdown --watch"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:1e72a7ae-5d35-4fb5-a365-8cc3f951a2d0"}},"repository":{"url":"git+https://github.com/Brandon-Ln/eslint-config.git","type":"git"},"_npmVersion":"11.16.0","description":"Personal ESLint flat config for JavaScript and strongly typed TypeScript projects.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"globals":"^16.0.0","@eslint/js":"^9.0.0","@eslint/compat":"^1.3.0","eslint-plugin-vue":"^10.0.0","typescript-eslint":"^8.0.0","eslint-plugin-react":"^7.37.0","eslint-plugin-import":"^2.31.0","eslint-plugin-react-hooks":"^7.0.0","@vue/eslint-config-typescript":"^14.0.0","eslint-plugin-simple-import-sort":"^13.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.16.1","devDependencies":{"vue":"^3.0.0","bumpp":"^11.1.0","react":"^19.0.0","eslint":"^9.0.0","tsdown":"^0.22.4","vitest":"^3.0.0","publint":"^0.3.21","typescript":"^6.0.0","@types/node":"^22.0.0","@nestjs/common":"^11.0.0","@arethetypeswrong/core":"^0.18.2"},"peerDependencies":{"eslint":"^9.0.0","typescript":">=5.0.0 <6.1.0"},"peerDependenciesMeta":{"typescript":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/eslint-config_0.1.2_1783962665392_0.2168917432023587","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"name":"@brandlen/eslint-config","version":"0.1.3","license":"MIT","_id":"@brandlen/eslint-config@0.1.3","maintainers":[{"name":"brandon_leon","email":"awesome163@126.com"}],"homepage":"https://github.com/Brandon-Ln/eslint-config#readme","bugs":{"url":"https://github.com/Brandon-Ln/eslint-config/issues"},"dist":{"shasum":"7e732fadd05e751b4e05653845aaf13aa06e8fa3","tarball":"https://registry.npmjs.org/@brandlen/eslint-config/-/eslint-config-0.1.3.tgz","fileCount":6,"integrity":"sha512-nQRTuFiKNEYdeX3LcEVL1xS0ba36D6rsj5WeKwxzJZd+meTviLLHgKoxkn+bg6Get/EelAI5Cyqzzi0KQpT4jw==","signatures":[{"sig":"MEUCIQCja9k9s+kGhMekiqNV3RIhLUrSGvb3HokfB+vO8dpI6wIgO8nvv5v98varhhIXCUn4MSj3IajElNd3VX2zofbhCaQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@brandlen%2feslint-config@0.1.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":19494},"type":"module","engines":{"node":">=18.18.0"},"exports":{".":"./dist/index.js"},"gitHead":"744052d312219efaaa404a5c878f46dbfe3c3904","scripts":{"lint":"eslint .","test":"vitest run","build":"tsdown","verify":"pnpm build && pnpm lint && pnpm typecheck && pnpm test","release":"bumpp","lint:fix":"eslint . --fix","typecheck":"tsc --noEmit","test:watch":"vitest","build:watch":"tsdown --watch"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:1e72a7ae-5d35-4fb5-a365-8cc3f951a2d0"}},"repository":{"url":"git+https://github.com/Brandon-Ln/eslint-config.git","type":"git"},"_npmVersion":"11.16.0","description":"Personal ESLint flat config for JavaScript and strongly typed TypeScript projects.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"globals":"^16.0.0","@eslint/js":"^9.0.0","@eslint/compat":"^1.3.0","eslint-plugin-vue":"^10.0.0","typescript-eslint":"^8.0.0","eslint-plugin-react":"^7.37.0","eslint-plugin-import":"^2.31.0","eslint-plugin-react-hooks":"^7.0.0","@vue/eslint-config-typescript":"^14.0.0","eslint-plugin-simple-import-sort":"^13.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.16.1","devDependencies":{"vue":"^3.0.0","bumpp":"^11.1.0","react":"^19.0.0","eslint":"^9.0.0","tsdown":"^0.22.4","vitest":"^3.0.0","publint":"^0.3.21","typescript":"^6.0.0","@types/node":"^22.0.0","@nestjs/common":"^11.0.0","@arethetypeswrong/core":"^0.18.2"},"peerDependencies":{"eslint":"^9.0.0","typescript":">=5.0.0 <6.1.0"},"peerDependenciesMeta":{"typescript":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/eslint-config_0.1.3_1783963621756_0.9925131825396929","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@brandlen/eslint-config","version":"0.2.0","license":"MIT","_id":"@brandlen/eslint-config@0.2.0","maintainers":[{"name":"brandon_leon","email":"awesome163@126.com"}],"homepage":"https://github.com/Brandon-Ln/eslint-config#readme","bugs":{"url":"https://github.com/Brandon-Ln/eslint-config/issues"},"dist":{"shasum":"5cd7bbbc024b73d6a6b4b7a7f255cdc47256e05a","tarball":"https://registry.npmjs.org/@brandlen/eslint-config/-/eslint-config-0.2.0.tgz","fileCount":6,"integrity":"sha512-BORGgX8ZI2/WgczsT0MZEDU1cPIGBNkvgTSPC/28yR2ZzSxWCoqpI8pr3QgpCl64pZ49//ekIqvvdW7epNASoA==","signatures":[{"sig":"MEUCICjoK5ybxptRciHF7rxAerQQ+dFDIcuqC0bSjBTXnWKpAiEAt/u6ymDBuBJTsrsoM72DKx+YRpRHXBuKpOAKlAIhwZU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@brandlen%2feslint-config@0.2.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":28635},"type":"module","engines":{"node":">=18.18.0"},"exports":{".":"./dist/index.js"},"gitHead":"e5aef2cc9cc316270f9c6cfb82f31061e3fc1b95","scripts":{"lint":"eslint .","test":"vitest run","build":"tsdown","verify":"pnpm build && pnpm lint && pnpm typecheck && pnpm test","release":"bumpp","lint:fix":"eslint . --fix","typecheck":"tsc --noEmit","test:watch":"vitest","build:watch":"tsdown --watch"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:1e72a7ae-5d35-4fb5-a365-8cc3f951a2d0"}},"repository":{"url":"git+https://github.com/Brandon-Ln/eslint-config.git","type":"git"},"_npmVersion":"11.16.0","description":"Personal ESLint flat config for JavaScript and strongly typed TypeScript projects.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"globals":"^16.0.0","@eslint/js":"^9.0.0","@eslint/compat":"^1.3.0","eslint-plugin-vue":"^10.0.0","typescript-eslint":"^8.0.0","eslint-plugin-react":"^7.37.0","eslint-plugin-import":"^2.31.0","eslint-config-prettier":"^10.1.8","eslint-plugin-react-hooks":"^7.0.0","@vue/eslint-config-typescript":"^14.0.0","eslint-plugin-simple-import-sort":"^13.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.16.1","devDependencies":{"vue":"^3.0.0","bumpp":"^11.1.0","react":"^19.0.0","eslint":"^9.0.0","tsdown":"^0.22.4","vitest":"^3.0.0","publint":"^0.3.21","typescript":"^6.0.0","@types/node":"^22.0.0","@nestjs/common":"^11.0.0","@arethetypeswrong/core":"^0.18.2"},"peerDependencies":{"eslint":"^9.0.0","typescript":">=5.0.0 <6.1.0"},"peerDependenciesMeta":{"typescript":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/eslint-config_0.2.0_1784057315598_0.644209675238036","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"@brandlen/eslint-config","version":"0.2.1","description":"Personal ESLint flat config for JavaScript and strongly typed TypeScript projects.","license":"MIT","type":"module","packageManager":"pnpm@10.16.1","repository":{"type":"git","url":"git+https://github.com/Brandon-Ln/eslint-config.git"},"exports":{".":"./dist/index.js"},"engines":{"node":">=18.18.0"},"publishConfig":{"access":"public"},"scripts":{"build":"tsdown","build:watch":"tsdown --watch","typecheck":"tsc --noEmit","lint":"eslint .","lint:fix":"eslint . --fix","test":"vitest run","test:watch":"vitest","verify":"pnpm build && pnpm lint && pnpm typecheck && pnpm test","release":"bumpp"},"peerDependencies":{"eslint":"^9.0.0","typescript":">=5.0.0 <6.1.0"},"peerDependenciesMeta":{"typescript":{"optional":true}},"dependencies":{"@eslint/compat":"^1.3.0","@eslint/js":"^9.0.0","@vue/eslint-config-typescript":"^14.0.0","eslint-plugin-import":"^2.31.0","eslint-plugin-react":"^7.37.0","eslint-plugin-react-hooks":"^7.0.0","eslint-plugin-simple-import-sort":"^13.0.0","eslint-plugin-vue":"^10.0.0","eslint-config-prettier":"^10.1.8","globals":"^16.0.0","typescript-eslint":"^8.0.0"},"devDependencies":{"@arethetypeswrong/core":"^0.18.2","@types/node":"^22.0.0","bumpp":"^11.1.0","eslint":"^9.0.0","publint":"^0.3.21","tsdown":"^0.22.4","typescript":"^6.0.0","vitest":"^3.0.0","vue":"^3.0.0","react":"^19.0.0","@nestjs/common":"^11.0.0"},"gitHead":"b2076efc3a6affd67f5eb5f323ef365f21d5302d","_id":"@brandlen/eslint-config@0.2.1","bugs":{"url":"https://github.com/Brandon-Ln/eslint-config/issues"},"homepage":"https://github.com/Brandon-Ln/eslint-config#readme","_nodeVersion":"24.18.0","_npmVersion":"11.16.0","dist":{"integrity":"sha512-QU88QhIrwOnUotYZybFiUi4Joo7KrQur+/sM6+ZspSywdaYiyUobhrv+NqwiYk0o3aj2TZ9Rg7mO02aHZUYmsg==","shasum":"aacd3d0b04295c4740d455597c226f7168d14042","tarball":"https://registry.npmjs.org/@brandlen/eslint-config/-/eslint-config-0.2.1.tgz","fileCount":7,"unpackedSize":29349,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@brandlen%2feslint-config@0.2.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQCLnluAXj8Z+dTAdQo5jjXQcZxtUbdA4uthN2mWkRA+rAIhAPMyyZ6HQ+yKoWRGwYjl09cAQgge83fLxIGOIAln7mCH"}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:1e72a7ae-5d35-4fb5-a365-8cc3f951a2d0"}},"directories":{},"maintainers":[{"name":"brandon_leon","email":"awesome163@126.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/eslint-config_0.2.1_1784129429711_0.7898493272967528"},"_hasShrinkwrap":false}},"time":{"created":"2026-07-13T16:50:26.651Z","modified":"2026-07-15T15:30:30.119Z","0.1.1":"2026-07-13T16:50:26.982Z","0.1.2":"2026-07-13T17:11:05.538Z","0.1.3":"2026-07-13T17:27:01.881Z","0.2.0":"2026-07-14T19:28:35.737Z","0.2.1":"2026-07-15T15:30:29.852Z"},"bugs":{"url":"https://github.com/Brandon-Ln/eslint-config/issues"},"license":"MIT","homepage":"https://github.com/Brandon-Ln/eslint-config#readme","repository":{"type":"git","url":"git+https://github.com/Brandon-Ln/eslint-config.git"},"description":"Personal ESLint flat config for JavaScript and strongly typed TypeScript projects.","maintainers":[{"name":"brandon_leon","email":"awesome163@126.com"}],"readme":"[English](./README.md) | [简体中文](./README.zh-CN.md)\n\n# @brandlen/eslint-config\n\n个人使用的 ESLint 9+ Flat Config：默认开启 JavaScript 基线规则，按项目依赖自动探测 TypeScript 类型信息 lint，并自动启用 Vue 3、React 或 Nest 适配器。\n\n```js\n// eslint.config.mjs\nimport brandlen from '@brandlen/eslint-config'\n\nexport default brandlen({\n    node: true,\n    react: false,\n    nest: false,\n})\n```\n\n`typescript`、`vue`、`react`、`nest`、`prettier` 均支持 `true`、`false`、`'auto'`（默认），`node` 默认为 `false`。`typescript` 在 `'auto'` 时按项目是否安装 TypeScript 启用；设为 `false` 会忽略独立的 TS 文件，设为 `true` 则强制启用。\n\n启用 TS 后保留原有的 JS/TS 混合规则与类型感知 lint。Vue 始终保留 Vue lint。\n\n## 忽略文件\n\n`brandlen` 始终输出一个 `brandlen/ignores` 块，用于排除 agent skills 目录与测试目录，并自动并入项目 `.gitignore` 的忽略规则。可通过 `ignores` 字段（数组，或接收内置默认值并返回最终清单的函数）追加或改写默认忽略项：\n\n```js\n// eslint.config.mjs\nimport brandlen from '@brandlen/eslint-config'\n\nexport default brandlen({\n    ignores: ['dist/**', 'coverage/**'],\n})\n\n// 或改写默认清单\nexport default brandlen({\n    ignores: (defaults) => [...defaults, 'generated/**'],\n})\n```\n\n如需只检测某些目录，推荐通过 ESLint CLI 限定范围而不是在共享配置中收窄——例如在 `package.json` 的 `lint` 脚本中执行 `eslint src/ scripts/`。这样使配置与 ESLint flat-config 的设计哲学一致（配置负责匹配文件，CLI 负责选取运行对象）。\n\n## Prettier 集成\n\n`prettier` 默认采用 `'auto'`：当项目已安装 `prettier` 时，`brandlen` 会在配置数组最末追加 [`eslint-config-prettier`](https://github.com/prettier/eslint-config-prettier) 块，关闭所有会与 Prettier 冲突的格式化规则。依赖已随本包打包，只需自行安装 `prettier` 本体。传 `prettier: false` 可显式跳过。\n\n## 开发\n\n- `pnpm build`：生成产物并校验公开 `exports`、声明文件和发布包。\n- `pnpm lint` / `pnpm lint:fix`：使用构建后的本包配置检查项目源码。修改 ESLint 配置实现后，应先运行 `pnpm build`，使 dogfood 使用最新产物。\n- `pnpm verify`：CI 与发布共用的完整校验，不会修改仓库文件。\n\n## 发布\n\n发布前确保工作区干净并切换到 `main`，然后执行：\n\n```sh\npnpm release\n```\n\n它会交互式选择 SemVer 版本，在提交前运行完整校验，创建提交与 tag 并推送。GitHub Actions 的 `publish.yml` 是唯一的发布源，会在 tag 推送后再次运行完整校验，通过后发布到 npm；失败不会发布。\n","readmeFilename":"README.zh-CN.md"}