настройка eslint+prettier+lint-staged+husky
Eсть старый React App и решил я добавить в проект eslint + prettier, следом пришла идея запретить всем гадить в проект добавив hook на pre-commit c помощью husky. Плюс чтоб не фиксить весь код по проекту сразу, а только в тех файлах что были изменены добавил lint-staged . Вот так выглядит package.json
{
"name": "Very intersing Project Best of the Best",
"version": "0.1.0",
"private": true,
"dependencies": {
"@many-many-diferen-dependencies": "^4.2.4",
},
"scripts": {
"start": "env-cmd -f .env.stage react-scripts start",
"start:dev": "env-cmd -f .env.dev react-scripts start",
"start:test": "env-cmd -f .env.test react-scripts start",
"start:ci": "env-cmd -f .env.ci react-scripts start",
"lint-staged": "lint-staged",
"lint": "eslint --debug src/",
"lint:write": "eslint --debug src/ --fix"
},
"eslintConfig": {
"extends": "react-app"
},
"browserslist": {
"production": [
">0.2%",
"not dead",
"not op_mini all"
],
"development": [
"last 1 chrome version",
"last 1 firefox version",
"last 1 safari version"
]
},
"devDependencies": {
"@babel/core": "^7.10.2",
"@use-it/interval": "^0.1.3",
"babel-loader": "^8.1.0",
"camelcase": "^6.2.0",
"cross-env": "^7.0.2",
"env-cmd": "^10.1.0",
"eslint": "^6.6.0",
"eslint-config-airbnb": "^18.2.0",
"eslint-config-prettier": "^6.11.0",
"eslint-plugin-import": "^2.22.0",
"eslint-plugin-jsx-a11y": "^6.3.1",
"eslint-plugin-prettier": "^3.1.4",
"eslint-plugin-react": "^7.20.5",
"eslint-plugin-react-hooks": "^4.0.8",
"font-awesome": "^4.7.0",
"http-proxy-middleware": "^1.0.4",
"husky": "^4.2.5",
"lint-staged": "^10.2.11",
"prettier": "^2.0.5",
"pretty-quick": "^2.0.1",
"react-moment": "^1.0.0"
},
"husky": {
"hooks": {
"pre-commit": "lint-staged"
}
},
"lint-staged": {
"src/**/*.{js,jsx}": [
"eslint --fix",
"prettier --write"
]
}
}
В чем собственно вопрос. Я пытаюсь добавить команду lint-staged которая бы просто проверяла staged files без преварительного добавиления их в staged. Сейчас эта команда работает только если я сделаю git status => git add . Я пытался расширить "lint-staged" добавить туда git add, Но это не работает. Я хочу как-то запустить эту команду. Ecть идеи как это может быть решено?
И второй вопрос может быть таких блока два?
"lint-staged": {
"src/**/*.{js,jsx}": [
"eslint --fix",
"prettier --write"
]
}
Например "lint-staged-1" ? Чтоб я вызывал командой lint-staged-1 а не "lint-staged".
И трейти вопрос как добавить команду на обход pre-commit ? Чтоб я мог например добвить комиит не запуская этого хука?
Ответы (1 шт):
Я не тестировал это, но можете ли вы попробовать и посмотреть, работает ли это?
"lint-staged": {
"src/**/*.{js,jsx}": [
"eslint --fix",
"prettier --write",
"git add"
]
}