Husky/lint-staged возможно ли исключить / игнорировать файл?

Можно ли исключить / игнорировать файл при использовании хуков Husky/lint-staged?

Просматривая документы в банкомате, но не имея никакой удачи найти что-либо по этому вопросу.

Надеюсь, что-то вроде

/*ignore*/

тег, который я мог бы добавить.

Для создания lint-staged игнорируйте определенные файлы, которые вызывали проблемы с форматированием.

Любая мысль по этому поводу высоко ценится:)

6 ответов

Решение

Закончилось добавлением

.prettierignore 

файл.

Не идеально, но, кажется, делает работу хорошо.

Я наконец узнал, как это сделать (по крайней мере, с lint-staged v11.1.2)

В package.json:

      "lint-staged": {
  "!(path/to/excluded/dir/**/*)*.ts": [
    "eslint --fix",
    "prettier --write"
  ]
}

Обратите внимание, что паттерн глобус-звезды находится внутри паттерна отрицания, а не вне его. Это гарантирует, что подкаталоги также исключены.

При настройке lint-staged в package.json или если вы используете любую другую IDE, чтобы игнорировать / исключать файлы с помощью lint-Staged и хаски-хуков, вы можете добавить ключ "ignore" в lint-staged объект, чтобы сделать он игнорирует любые пакеты или файлы, которые вы хотите игнорировать. Используйте следующий расширяемый синтаксис:

{
  "lint-staged": {
    "linters": {
      "src/**/*.js": ["formatter --write", "git add"],
    },
    "ignore": ["node_modules", "dist", "package-lock.json"]  }
}

Просто добавьте целевой шаблон в объект 'linters' и все игнорируемые файлы, которые вы могли добавить ранее в.prettierignore, чтобы "игнорировать" ключ объекта lint-Staged. И вот так!

Если кто-то еще ищет, взгляните на этот https://github.com/okonet/lint-staged есть хорошие примеры.

Фильтрация файлов

Команды ЛИНТЕР работают с подмножеством всех поэтапных файлов, определенных шаблоном глобуса. lint-staged использует микроматч для сопоставления файлов по следующим правилам:

  • Если шаблон глобуса не содержит косых черт (/), микроматч matchBase опция будет включена, поэтому глобусы будут соответствовать базовому имени файла независимо от каталога:
    • "*.js" будет соответствовать всем файлам JS, например /test.js а также /foo/bar/test.js
    • "!(*test).js". будет соответствовать всем файлам JS, кроме тех, которые заканчиваются наtest.js, так foo.js но нет foo.test.js
  • Если шаблон глобуса содержит косую черту (/), он также будет соответствовать путям:
    • "./*.js" будет соответствовать всем файлам JS в корне репозитория git, поэтому /test.js но нет /foo/bar/test.js
    • "foo/**/\*.js" будет соответствовать всем файлам JS внутри/fooкаталог, поэтому/foo/bar/test.jsно нет/test.js

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

{
  "*.{json,md,html,scss}": ["prettier --write", "git add"],
  ["**/!(folder1|folder2)/*.ts"]: ["tslint --project tsconfig.json -c tslint.commit.json --fix", "prettier --write", "git add"]
}

Итак, глобус здесь является фактическим массивом, и убедитесь, что он не передает этот массив в строке, иначе он не распознает шаблоны, также не включают **/*. Ts причина, по которой lint-staged, автоматически преобразует это в сравнение matchBase если он найдет / в шаблоне, то включение этого также будет соответствовать вашим файлам folder1|folder2.

Можно исправить тремя способами:

  • .lintstagedrc.js
  • .prettierignore
  • lint-staged.config.js

больше информации: https://github.com/okonet/lint-staged/issues/797

Другие вопросы по тегам