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