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

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

Просматриваю банкомат с документами, но ничего не нашел по этому поводу.

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

/*ignore*/

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

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

Любая мысль об этом очень ценится :)


person uidevthing    schedule 01.04.2019    source источник


Ответы (4)


При настройке 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. И вот так!

person Ayesha Iftikhar    schedule 02.08.2019
comment
Привет, спасибо за очень ценный ответ! Попробую ваше решение, еще раз спасибо :) - person uidevthing; 08.08.2019
comment
Этот формат конфигурации не работает с lint-staged 9.5 (я не уверен, какую версию он изменил). - person calvinf; 24.12.2019
comment
Я думаю, что ignore больше не поддерживается. Вы можете использовать "!(*test).js" stackoverflow.com/a/60062972/569751 - person Aamir Afridi; 04.02.2020
comment
Спасатель жизни! Спасибо ! отлично работает с lint-staged ^ 8.x.x - person Deunz; 18.02.2020

Итак, я пытался найти ответ на этот вопрос в течение целого дня и, просмотрев все форумы, предположил, что они используют минимальное совпадение для проверки глобуса, которое могло быть правильным для более старых версий, но они используют микроматч для новой версии и для решения этой проблемы. мы можем использовать их шаблон для исключения определенных каталогов. Итак, в свой .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"]
}

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

person saNiks    schedule 17.09.2019

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

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

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

  • If the glob pattern contains no slashes (/), micromatch's matchBase option will enabled, so globs match a file's basename regardless of directory:
    • "*.js" will match all JS files, like /test.js and /foo/bar/test.js
    • "!(*test).js". будет соответствовать всем файлам JS, кроме тех, которые заканчиваются на test.js, поэтому foo.js, но не foo.test.js
  • If the glob pattern does contain a slash (/), it will match for paths as well:
    • "./*.js" will match all JS files in the git repo root, so /test.js but not /foo/bar/test.js
    • "foo/**/\*.js" будет соответствовать всем файлам JS в/fooкаталоге, поэтому/foo/bar/test.js но не/test.js
person Aamir Afridi    schedule 04.02.2020
comment
Я немного поиграл / подрался с этим. Я использую: lint-staged: {projects / **! (* Node_nodules)! (* Dist) / * (package-lock). {Js, ts, json, css, scss, html}: [prettier --write] }. Micromatch поддерживает хороший синтаксис массива, но его нельзя использовать с lint-staged. - person Olivvv; 06.02.2020
comment
Вы пробовали это github.com/okonet/lint-staged# example-use-your-own-globs? - person Aamir Afridi; 06.02.2020
comment
нет, я хотел, чтобы все это было в package.json. В итоге я получил нужный мне результат (доработав приведенный выше код). Я считаю, что результат не очень приятен для чтения, он немного похож на регулярные выражения. Я воспринимаю старый синтаксис как более понятный и более доступный для тех, кто впервые читает package.json. - person Olivvv; 07.02.2020
comment
мой последний синтаксис (для ленивых людей, предпочитающих копировать и изменять материал): projects /! (node_modules | dist) / ** / *. {js, ts, json, css, scss, html} - person Olivvv; 07.02.2020

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

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

дополнительная информация: https://github.com/okonet/lint-staged/issues/797

person Nickbing Lao    schedule 18.04.2020