{"_id":"@clearlint/eslint-migrate","_rev":"2-82ada76daafcdbbb522dc7026b87c338","name":"@clearlint/eslint-migrate","dist-tags":{"latest":"1.0.1"},"versions":{"1.0.0":{"name":"@clearlint/eslint-migrate","version":"1.0.0","keywords":["eslint","migration","v10","v9","flat-config","eslintrc"],"license":"MIT","_id":"@clearlint/eslint-migrate@1.0.0","maintainers":[{"name":"leochong","email":"lowmls@gmail.com"}],"homepage":"https://github.com/clearlint/eslint","bugs":{"url":"https://github.com/clearlint/eslint/issues"},"bin":{"eslint-migrate":"bin/eslint-migrate.js"},"dist":{"shasum":"e510efc4fb5b04b8ad4b4d24c44fe9d0f5f43f29","tarball":"https://registry.npmjs.org/@clearlint/eslint-migrate/-/eslint-migrate-1.0.0.tgz","fileCount":8,"integrity":"sha512-9NJ9KjOlq6PG4pkA/cFt0azrP4xj6wML7XUSnmb84TCQ8lzEqR1OPHK8w3i7r1io3a5AkC6hslUC5Xrxy5KaiQ==","signatures":[{"sig":"MEQCIBYZsPxQ6saLUhVSVUxp5cN7kkHQrP9ernxemFwjG9uVAiBSs70oxo4Zm5ovxvGgAfcRF9Bjratlj1HUUNEzTJTCcA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":20484},"main":"lib/discover.js","type":"commonjs","gitHead":"1fada4378f83e50a8c20565752e60c4098644a4d","scripts":{"test":"node tests/migrate.test.js"},"_npmUser":{"name":"leochong","email":"lowmls@gmail.com"},"repository":{"url":"git+https://github.com/clearlint/eslint.git","type":"git","directory":"@clearlint/eslint-migrate"},"_npmVersion":"11.14.1","description":"CLI tool to analyze and migrate ESLint v9 configs to v10","directories":{},"_nodeVersion":"24.14.1","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/eslint-migrate_1.0.0_1780411345036_0.9504061659233538","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@clearlint/eslint-migrate","version":"1.0.1","description":"CLI tool to analyze and migrate ESLint v9 configs to v10","type":"commonjs","main":"lib/discover.js","bin":{"eslint-migrate":"bin/eslint-migrate.js"},"scripts":{"test":"node tests/migrate.test.js"},"keywords":["eslint","migration","v10","v9","flat-config","eslintrc"],"license":"MIT","repository":{"type":"git","url":"git+https://github.com/clearlint/eslint.git","directory":"@clearlint/eslint-migrate"},"homepage":"https://github.com/clearlint/eslint","bugs":{"url":"https://github.com/clearlint/eslint/issues"},"gitHead":"1fada4378f83e50a8c20565752e60c4098644a4d","_id":"@clearlint/eslint-migrate@1.0.1","_nodeVersion":"24.14.1","_npmVersion":"11.14.1","dist":{"integrity":"sha512-39/ZGB8UufbFv8u7/x+w+Gs2lPS4DKhNWqiecIH7BNcnu06grvpP3oKHWm3pwFEHvztyxljlsEOUo0226MQkmQ==","shasum":"441f1579f664d875bbe497ceb08e76852ea056f1","tarball":"https://registry.npmjs.org/@clearlint/eslint-migrate/-/eslint-migrate-1.0.1.tgz","fileCount":8,"unpackedSize":20486,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIA/DADhDmbOrgtFL2KefCAcT+m0airgrGfUT0xXrICHeAiBxQbOKOW5vyP6BYzrwXieQQ33RNV1vQBPRy94FefUV/w=="}]},"_npmUser":{"name":"leochong","email":"lowmls@gmail.com"},"directories":{},"maintainers":[{"name":"leochong","email":"lowmls@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/eslint-migrate_1.0.1_1780411367806_0.46620782473509825"},"_hasShrinkwrap":false}},"time":{"created":"2026-06-02T14:42:24.844Z","modified":"2026-06-02T14:42:48.110Z","1.0.0":"2026-06-02T14:42:25.163Z","1.0.1":"2026-06-02T14:42:47.957Z"},"bugs":{"url":"https://github.com/clearlint/eslint/issues"},"license":"MIT","homepage":"https://github.com/clearlint/eslint","keywords":["eslint","migration","v10","v9","flat-config","eslintrc"],"repository":{"type":"git","url":"git+https://github.com/clearlint/eslint.git","directory":"@clearlint/eslint-migrate"},"description":"CLI tool to analyze and migrate ESLint v9 configs to v10","maintainers":[{"name":"leochong","email":"lowmls@gmail.com"}],"readme":"# @clearlint/eslint-migrate\n\n**Analyze and migrate ESLint v9 configs to v10.** Understand your migration cost before you commit.\n\n## The Problem\n\nESLint v10 removes eslintrc format entirely. If your project uses `.eslintrc`, `.eslintrc.json`, or `package.json` `eslintConfig`, you need to:\n1. Convert to flat config (`eslint.config.js`)\n2. Handle removed rules\n3. Adjust rule options that changed\n\nThis tool analyzes your current config and generates a v10-compatible flat config.\n\n## Usage\n\n```bash\nnpx @clearlint/eslint-migrate analyze [dir]\nnpx @clearlint/eslint-migrate generate [dir]\nnpx @clearlint/eslint-migrate report [dir]\n```\n\n### analyze — Understand your migration cost\n\n```bash\nnpx @clearlint/eslint-migrate analyze ./my-project\n```\n\nOutput:\n```\n🔍 Analyzing ESLint config in: ./my-project\n\n  Config type: eslintrc\n  Config file: .eslintrc.json\n\n  Rules analyzed: 42\n  Compatible:     38\n  Removed:        3\n  Needs review:   1\n  Unknown:        0\n\n  Details:\n    ✅ no-eval: compatible\n    ❌ callback-return: removed in v10\n    ⚠️  custom-rule: needs review\n```\n\n### generate — Create a v10 flat config\n\n```bash\nnpx @clearlint/eslint-migrate generate ./my-project\n```\n\nCreates `eslint.config.js` with:\n- All compatible rules preserved\n- Removed rules removed (commented out with migration notes)\n- Unknown rules flagged for manual review\n\n### report — Full migration report\n\n```bash\nnpx @clearlint/eslint-migrate report ./my-project\n```\n\nGenerates `eslint-migration-report.json` with:\n- Rule-by-rule compatibility analysis\n- Effort estimate (low / medium / high)\n- Step-by-step recommendations\n\n## Install\n\n```bash\nnpm install --save-dev @clearlint/eslint-migrate\n```\n\n## How it works\n\n1. **Discover** — Finds your ESLint config (eslintrc, flat, or package.json)\n2. **Analyze** — Checks each rule against the v10 rule set\n3. **Generate** — Creates a flat config with migration notes\n4. **Report** — Produces a structured JSON report\n\n## Migration Phases\n\n| Phase | Description | Command |\n|-------|-------------|---------|\n| 1 | Config discovery | `eslint-migrate analyze` |\n| 2 | Rule compatibility | (included in analyze) |\n| 3 | Config generation | `eslint-migrate generate` |\n| 4 | Report + effort estimate | `eslint-migrate report` |\n\n## Caveats\n\n- The generated config is a starting point, not a drop-in replacement\n- Custom plugin rules and shareable configs are not analyzed\n- Always run `npx eslint .` after migration to verify\n- ESLint v10 removes approximately 15 core rules — the tool flags these\n\n---\n\n**Disclaimer:** This tool assists with ESLint v10 migration planning. Always verify the generated config against your project's requirements. Rule behavior may differ between v9 and v10 even for compatible rules.\n","readmeFilename":"README.md"}