husky+lint-staged работает с неустановленными файлами

Я пытаюсь добавить git-ловушку перед фиксацией, которая будет запускать мой линтер только для затронутых (поставленных) файлов. Мой проект основан на приложении Create React.

Я добавил следующее в свой package.json:

  "scripts": {
    "lint": "eslint 'src/**/*.js'",
    "lintfix": "eslint 'src/**/*.js' --fix"
  },
  "husky": {
    "hooks": {
      "pre-commit": "lint-staged"
    }
  },
  "lint-staged": {
    "*": ["npm run lintfix --", "git add"]
  }

Причина, по которой я запускаю его на "*", заключается в том, что я ожидаю, что сам скрипт (lintfix) применит его конфигурацию (src/**/*.js).

Проблема в том, что я получаю много ошибок eslint во всей моей кодовой базе, а не только в промежуточных файлах, как я хотел.

Какая конфигурация мне нужна для запуска моего eslint только на промежуточных файлах?


person Haji    schedule 13.08.2019    source источник


Ответы (1)


Из lint-staged readme.md:

{ "*": "your-cmd" }

Эта конфигурация выполнит your-cmd со списком файлов, которые в настоящее время подготовлены, переданным в качестве аргументов.

Итак, учитывая, что вы сделали git add file1.ext file2.ext, lint-staged выполнит следующую команду:

your-cmd file1.ext file2.ext

Итак, глядя на ваш package.json, вы выполняете следующее:

eslint 'src/**/*.js' --fix file1.js file2.js file3.js fileX.js... ....

Вам нужно заменить npm run lintfix -- на eslint --fix, чтобы сначала проверить, работает ли это (так и должно быть), а затем адаптировать команду lintfix без общего регулярного выражения src/**/*.js.

person sebastienbarbier    schedule 13.08.2019
comment
Моя конфигурация eslint работает красивее, и при запуске lint-staged она работает со всеми файлами, а не только с подготовленными. - person Joseph Chambers; 12.07.2020