First, take a look at the ESLint rule documentation. Just skim it for now. It's very long and boring. You can come back to it later.
ESLint rules works on the AST (Abstract Syntax Tree) representation of the code. In short, this is a tree structure that describes the code in a very verbose form. ESLint walks this tree and rules can subscribe to be notified when it hits a specific node type, like a Literal
type, which could be the "hello"
part of const welcome = "hello";
.
Go ahead and play around with some code in AST Explorer (Make sure the parser is espree
). It's a great tool!
Here are some good articles on the subject (ignore the scaffolding parts):
- https://insideops.wordpress.com/2015/12/08/creating-custom-rules-for-eslint/
- https://medium.com/tumblbug-engineering/creating-an-eslint-plugin-87f1cb42767f
- http://blog.cowchimp.com/writing-a-custom-eslint-rule-to-spot-undeclared-props/
- https://www.sitepoint.com/understanding-asts-building-babel-plugin/ (For Babel plugins, but good AST intro)
When you have some background knowledge, try cloning our repo and open any rule file and its and start modifying just to play around.
When you're ready to start working on a rule, take a look at previous rule addition for what's needed to add: https://github.com/sindresorhus/eslint-plugin-unicorn/commit/718578aadc696dbc506bce32cd8e5bec3fb12c3a and https://github.com/sindresorhus/eslint-plugin-unicorn/commit/f0249e0f0ed341765fa2a9fad50d4599a95f3661
Happy to answer question you might have in https://gitter.im/sindresorhus/meta
Have fun! :)