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.json
with: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
, ornodenext
formoduleResolution
. - Use
eslint
withv8
,typescript-eslint
does not supportv9
yet
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