My personal & professional linting setup. Run's Prettier as an ESLint rule via their ESLint plugin. Dynamic support for react or non-react applications depending on your project dependencies. Dynamic inclusion of Kent C Dodds' ESLint Jest config depending on your project dependencies.
Convenient opt-in configs for projects using Docker or Ethereum to avoid common false positives.
To understand more, see https://github.com/codfish/eslint-config-codfish.
To avoid having to manually setup everything and add all configuration/boilerplate code to your project, use cod-scripts instead. It was forked from kcd-scripts and ultimately inspired by react-scripts
.
Ultimate goal is maximize code linting coverage, leveraging the power of Prettier while deferring to Airbnb's style guide AS MUCH as possible without breaking anything. Idea being that Airbnb's styleguide happens to be the most popular, well documented, and well maintained open-source JS styleguide.
I typically work in very large teams where consensus can be difficult, and linting is like politics, people are generally passionate and rarely unopinionated. I've found that, while we all may not agree on everything in Airbnb's approach, sticking to a styleguide like theirs and avoiding opinionated overrides has had the most success across the teams I've worked on. It also helps relieve the burden of maintaining a custom set of rules (as well as the documentation).
There has to be a very good reason for an override: https://github.com/codfish/eslint-config-codfish/blob/2444e8b63426d8cea1e6da47bce1561278ddd2c2/index.js#L19
You may be able to uninstall a number of top-level dependencies from your project but be careful.
npm uninstall @babel/core @babel/cli @babel/preset-env @babel/preset-react eslint eslint-config-codfish prettier husky lint-staged jest @commitlint/cli @commitlint/config-conventional markdownlint-cli
npm install --save-dev cod-scripts
npm install --save @babel/runtime
Full usage: https://github.com/codfish/cod-scripts#usage
- Delete configuration.
sh -c 'rm -f .babelrc* .eslintrc* .eslintignore .huskyrc* .lintstagedrc* .prettierrc* .prettierignore jest.config.js .commitlintrc* commitlint* .markdownlint*'
- Delete any configs from the package.json, i.e.
jest
. - Update
package.json
with the following:
"eslintConfig": {
"extends": [
"./node_modules/cod-scripts/eslint.js"
]
},
"husky": {
"hooks": {
"pre-commit": "cod-scripts pre-commit",
"commit-msg": "cod-scripts commitlint -E HUSKY_GIT_PARAMS"
}
}
- Adding
eslintConfig
to package.json is not required in theory but helps your editor enforce your eslint configuration. - If you're building a dapp, you can extend
codfish/dapp
as well to adjust some eslint rules that throw false positive errors.
"eslintConfig": {
"extends": [
"./node_modules/cod-scripts/eslint.js",
"codfish/dapp"
]
},
- Add desired scripts to
package.json
Note to self: Investigate https://github.com/remarkjs/remark