@ast-tools/eslint-config
v0.1.1
Published
AST ESLint configs to rule them all
Downloads
6
Maintainers
Readme
@ast-tools/eslint-config
ESLint plugin includes Access Softek rules for JS and TS codebase.
Better to use with framework-oriented packages @ast-tools/eslint-config-react
Usage
Install from npm
npm i --save-dev @ast-tools/eslint-config
Then, need to include necessary configurations sets to .eslintrc.js
. We need to choose base configuration, and any
necessary additional configs. Package include eslint@7
and prettier@2
dependencies, so you should remove eslint
,
prettier
, and @ast-tools/eslint-config
internal dependencies from your project package.json
.
Base configurations
For application
{
"extends": ["@ast-tools/eslint-config/app"]
}
For library
{
"extends": ["@ast-tools/eslint-config/lib"]
}
Additional configurations
If we use Jest
{
"extends": ["@ast-tools/eslint-config/app", "@ast-tools/eslint-config/jest"]
}
Configurations overview
Main configurations sets contains common rules
@ast-tools/eslint-config/app
- common rules and specific rules for applications@ast-tools/eslint-config/lib
- common rules and specific rules for libraries
Additional configurations sets. This configs not contain common eslint rules, and must be included with main configurations
@ast-tools/eslint-config/jest
- rules for lint Jest test suits
Internal used plugins
@ast-tools/eslint-config/app
and @ast-tools/eslint-config/lib
include:
eslint-config-airbnb
- common and popular configurationeslint-plugin-eslint-comments
- validateeslint
commentseslint-plugin-import
- validate proper importseslint-plugin-promise
- enforce best practices for promiseseslint-plugin-jest
- validate jest tests@typescript-eslint/eslint-plugin
- lint TypeScript files, adopt many eslint rules to TS code, and provide specific TS ruleseslint-plugin-prettier
- disable code formatting using eslint tools and transfers all the logic to a prettier, and report differences as eslint issues
Troubleshooting
Wrong or duplicated eslint or some eslint plugins versions
Try to remove eslint
, prettier
, and @ast-tools/eslint-config
internal dependencies from your project package.json
,
then reinstall dependencies.
Usage tips for Nx monorepo
Connect to nx workspace
In root config
Add "@ast-tools/eslint-config/app"
to extends section on config.
Also, if you monorepo contains only buildable/publishable libs without apps, use "@ast-tools/eslint-config/lib"
instead of "@ast-tools/eslint-config/app"
{
"root": true,
"ignorePatterns": ["**/*"],
"extends": ["@ast-tools/eslint-config/app"]
...optionally some other configs
}
In apps and non-buildable/non-publishable libs
In app/lib eslint configuration just extends root config
{
"extends": ["../../.eslintrc.json"],
"ignorePatterns": ["!**/*"]
...optionally some other configs
}
Only in buildable/publishable libs (if repo contain apps or non-buildable/non-publishable libs)
Add "@ast-tools/eslint-config/lib"
in extends section after root config
{
"extends": ["../../.eslintrc.json", "@ast-tools/eslint-config/lib"],
"ignorePatterns": ["!**/*"]
...optionally some other configs
}
Non-JSON configs usage
Nx means usage .eslintrc.json
for configure ESLint. Just provide it! In .eslintrc.json
add extension of actual root config file:
{
"extends": ["./.eslintrc.js"]
}
After that:
- Nx see what they need and don't re-initialize lint infrastructure
- You can use better config formats and nx generators