Есть ли способ запустить lint-staged только для новых файлов (тех, которые git не отслеживал раньше) - PullRequest
0 голосов
/ 28 февраля 2019

В моем проекте, написанном на Typescript, я хочу начать применять аннотации типов для возвращаемых типов и типов параметров всех функций.Для этого я создал отдельный конфиг tslint, который расширяет мой основной конфиг и добавляет это правило поверх этого.Я запускаю tslint через лайки и lint-staged с этой расширенной конфигурацией, чтобы проверить все подготовленные файлы перед внесением изменений.Проблема в том, что если я внесу изменения в один из старых файлов (некоторые из них довольно большие), lint staged тоже проверит этот файл и не даст мне выполнить коммит, если я не введу аннотации всех функций во всех файлах.Но это большая работа, и я хочу применить это только к новым файлам.Есть ли способ отфильтровать промежуточные файлы только к тем, которые добавлены в этот коммит?

Ответы [ 2 ]

0 голосов
/ 10 мая 2019

lint-staged использует другую библиотеку с именем staged-git-files (sgf) для получения списка файлов staged перед коммитом git.

Вот некоторые коды состояния, которые использует sgf.

  • Добавлено (A)
  • Скопировано (C)
  • Удалено (D)
  • Модифицировано (M)
  • Переименовано (R)

lint-staged передало код состояния ACM в пакет sgf.

 sgf.cwd = gitDir
  *return pify(sgf)('ACM').then(files => {*
    /* files is an Object{ filename: String, status: String } */
    const filenames = files.map(file => file.filename)

Если вы хотите, чтобы lint-staged получал только добавленные файлы, вы можете разветвить репо и передать вместо него AC в sgf.Было бы идеально, если бы у нас был способ настроить это.Я поднял вопрос в репо.Я надеюсь, что они обращаются к этому

0 голосов
/ 28 февраля 2019

Вы можете сделать это, если отделите свой «новый» код от «старого», используя структуру каталогов.После этого это всего лишь 2 различных шаблона глобуса в вашей конфигурации lint-staged.

Это самый простой способ сделать это, насколько я могу подумать, и он прекрасно работает с другими инструментами качества кода, такими как ESLint, так как вы можете поместить .eslintrc в подкаталоги.

...