EditorConfig помогает поддерживать единый набор правил. Чтобы все члены команды пользовались едиными настройками, касающимися отступов или символов перевода строки и т.п. применяют файл .editorconfig
[*]
end_of_line = lf
charset = utf-8
trim_trailing_whitespace = true
insert_final_newline = true
max_line_length = 80
ESLint - Find and fix problems in your JavaScript code.
ESLint - это статический анализатор кода для нахождения проблемных участков, который не соответствуют руководству по стилю.
npm install eslint --save-dev
"scripts": {
...
"lint": "eslint './src/**/*.{js,jsx}'"
},
// .eslintrc
{
"env": {
"browser": true,
"node": true
},
"extends": ["react-app", "airbnb"],
"parserOptions": {
"ecmaVersion": 2018,
"sourceType": "module",
"ecmaFeatures": {
"jsx": true
},
},
"rules": { ... },
}
Prettier — это средство для форматирования кода, которое нацелено на использование жёстко заданных правил.
npm i -D prettier eslint-config-prettier
eslint-config-prettier - Отключает все правила, которые могут конфликтовать с Prettier.
{
...
"extends": ["react-app", "airbnb", "prettier"], // eslint-config-prettier
"plugins": ["react"],
...
"rules": {
...
"react/jsx-filename-extension": [1, { "extensions": [".js", ".jsx"] }]
...
}
}
Husky improves your commits and more 🐶 woof!
npx husky-init && npm install
Добавляем хуки и испольняемые команды:
npx husky add .husky/pre-commit "npm run lint"
или ручками в файлике .husky/pre-commit
Run linters against staged git files and don't let 💩 slip into your code base!
npm install --save-dev lint-staged
.husky/pre-commit
#!/bin/sh
. "$(dirname "$0")/_/husky.sh"
npx lint-staged
package.json
...
"lint-staged": {
"src/**/*.{js,jsx}": [
"prettier --write",
"eslint"
],
},
...