@ast-tools/eslint-config v0.1.1
@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-configThen, 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- validateeslintcommentseslint-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