This repo is based on the "Writing a custom ESLint plugin with Typescript" Medium article written by Adam Thompson .
I was expecting to find a link to a repo with the full code explained in Adam's article but I could not find it.
It will be a quick way to browse the full code on its own and possibly to enhance it by fixing issues.
I worked on this repo using pnpm but it should work with other package manager.
pnpm i
pnpm build
Tests were setup to work with jest and vitest both comes with pros and cons...
I would recommend Vitest but I also added Jest in case you want it.
| Jest | Vitest |
|---|---|
Based on commonjs |
Based on ESM |
| ✅ Mocking | ✅ Mocking |
| ✅ Snapshots | ✅ Snapshots |
| ✅ Parallel testing | ✅ Parallel testing |
| ✅ Fast | ✅ Often faster |
| - | ✅ Support benches |
❌ Require ts-jest lib |
❌ Requires setupFile and vitest.config.ts |
NB: In order to use, the RuleTester from @typescript-eslint/rule-tester, we must:
- Have a
tsconfig.jsonwith:More info can be found on{ "compilerOptions": { "module": "nodenext", "moduleResolution": "nodenext" } }v6: Cannot find module@typescript-eslint/*or its corresponding type declarations.You can use
bundler,node16, ornodenextformoduleResolution. - Use
eslintwithv8,typescript-eslintdoes not supportv9yet
pnpm test
pnpm test:jest
pnpm docs:init will create new files for each rule if necessary.
pnpm docs:update will update existing files and the rules list.
You can see an example of generated documentation in the next section.
💡 Manually fixable by editor suggestions.
| Name | Description | 💡 |
|---|---|---|
| my-rule | An example ESLint rule | 💡 |
See eslint-plugin-example-typed-linting for an example plugin that supports typed linting.
- fix:
docs:update