ng add @angular-eslint/schematics
npm i eslint-plugin-jasmine -D
And add a new block of rules in overrides
for files with *.spec.ts
extension:
"overrides": [
...,
{
"files": [
"src/**/*.spec.ts", "src/**/*.d.ts"
],
"parserOptions": {
"project": "./src/tsconfig.spec.json"
},
"extends": [
"plugin:jasmine/recommended"
],
"plugins": [
"jasmine"
],
"env": { "jasmine": true },
"rules": {}
},
],
npm i eslint-plugin-import eslint-config-airbnb-typescript -D
In order not to change top level settings, add AirBnB Styleguide rules in a block of the ['*.ts']
rules in overrides
property:
"extends": [
"plugin:@angular-eslint/recommended",
"plugin:@angular-eslint/template/process-inline-templates",
// AirBnB Styleguide rules
"airbnb-typescript/base",
// to avoid import errors
"plugin:import/recommend",
"plugin:import/typescript",
...
],
npm i prettier eslint-config-prettier eslint-plugin-prettier -D
In ESLint config overrides
in the bottom of extends
property in the block of rules for files with .ts
extension add Prettier settings:
"extends": [
"plugin:@angular-eslint/recommended",
"plugin:@angular-eslint/template/process-inline-templates",
"airbnb-typescript/base",
// Settings for Prettier
"plugin:prettier/recommended"
],
Create .prettierrc
in app root folder:
{
"useTabs": false,
"tabWidth": 2,
"printWidth": 80,
"semi": true,
"bracketSpacing": true,
"trailingComma": "es5",
"htmlWhitespaceSensitivity": "ignore",
"overrides": [
{
"files": "*.html",
"options": {
"parser": "angular"
}
}
]
}
npm i husky lint-staged -D
Add new settings for this plugins in package.json
:
"scripts": {
...,
},
"husky": {
"hooks": {
"pre-commit": "lint-staged --relative",
"pre-push": "lint-staged --relative"
}
},
"lint-staged": {
"src/**/*.{js,ts,html,css,scss}": [
"prettier --write && eslint"
]
},
"lint": "ng lint",
"lint:fix": "prettier --write src && ng lint --fix"