Demonstrating an ESLint plugin using TypeScript
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:
tsconfig.json
with:
{
"compilerOptions": {
"module": "nodenext",
"moduleResolution": "nodenext"
}
}
More info can be found on v6
: Cannot find module @typescript-eslint/*
or its corresponding type declarations.
You can use
bundler
,node16
, ornodenext
formoduleResolution
.
eslint
with v8
, typescript-eslint
does not support v9
yet
vitest
pnpm test
jest
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 nex section.
💡 Manually fixable by editor suggestions.
Name | Description | 💡 |
---|---|---|
my-rule | An example ESLint rule | 💡 |