ESLint base configurations.
Add the dependency.
yarn add -D @straw-hat/eslint-config-baseMake sure to install the peer dependencies.
npx install-peerdeps --dev @straw-hat/eslint-config-base eslint-plugin-simple-import-sortExtend your ESLint configuration.
{
"extends": ["@straw-hat/eslint-config-base"]
}Linting every file as you save it is nice, but we can also format all source files at once using ESLint CLI.
In the package.json, add a lint script to lint files matching the mask,
and to write them back to disk. Also add lint:ci script to check for
existing issues in CI.
{
"scripts": {
"lint": "eslint '**/*' --fix",
"lint:ci": "yarn lint --output-file tmp/eslint/report.json --format json"
}
}Whenever we work with files locally, we might accidentally commit them without proper linting.
That's where Git hooks and linting staged files comes in handy. To consistently lint all files before committing and then commit changes, we recommend using husky + lint-staged combination of tools.
yarn add -D husky lint-stagedNow configure pre-commit hook to run Prettier against staged JavaScript files.
Create .huskyrc.json with the following content.
{
"hooks": {
"pre-commit": "lint-staged"
}
}Create .lintstagedrc.json with the following content.
{
"**/*": ["eslint --fix", "git add"]
}See lint-staged code formatting documentation.
You can skip the Git pre-commit hook by committing with -n flag.
Install ESLint VSCode extension
called dbaeumer.vscode-eslint.
- Launch VS Code Quick Open (Ctrl+P)
- Run the following command
ext install dbaeumer.vscode-eslint
Because you might have global settings related to code formatting, we suggest
having in each repository a file with local workspace VSCode settings. Commit
this file .vscode/settings.json to source control to make sure everyone uses
the same extension to format the code.
.vscode/settings.json
{
"editor.defaultFormatter": "dbaeumer.vscode-eslint",
"editor.formatOnSave": true,
"eslint.enable": true,
"eslint.alwaysShowStatus": true,
"eslint.autoFixOnSave": true
}Sometimes you have files that should not be formatted, use .eslintignore to
ignore files.
LICENSE
yarn.lock
*.log
*.json
*.md
*.js.map
mocha.opts
**/dist/**
tmp
*.cmd