Writing a custom ESLint plugin with TypeScript code

This repo is based on the "Writing a custom ESLint plugin with Typescript" Medium article written by Adam Thompson .

Why this repo?

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.

Getting started

I worked on this repo using pnpm but it should work with other package manager.

Install

pnpm i

Build

pnpm build

Test

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:

Using vitest

pnpm test

Using jest

pnpm test:jest

Docs

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.

Rules

💡 Manually fixable by editor suggestions.

Name Description 💡
my-rule An example ESLint rule 💡