настройка 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 шт):

Автор решения: Ajeet Shah

Я не тестировал это, но можете ли вы попробовать и посмотреть, работает ли это?

"lint-staged": {
  "src/**/*.{js,jsx}": [
      "eslint --fix",
      "prettier --write",
      "git add"
  ]
}
→ Ссылка