使用 Husky/lint-staged 挂钩时是否可以排除/忽略文件?
浏览文档 atm 但没有任何运气找到任何关于此的内容。
希望有类似的东西
/*ignore*/
我可以添加的标签。
使 lint-staged 忽略某些导致格式问题的文件。
对此的任何想法都非常感谢:)
使用 Husky/lint-staged 挂钩时是否可以排除/忽略文件?
浏览文档 atm 但没有任何运气找到任何关于此的内容。
希望有类似的东西
/*ignore*/
我可以添加的标签。
使 lint-staged 忽略某些导致格式问题的文件。
对此的任何想法都非常感谢:)
加完了
.prettierignore
文件。
不理想,但似乎可以完成这项工作。
在 package.json 中配置 lint-staged 时,或者如果您使用任何其他 IDE,为了通过 lint-Staged 和 husky 钩子忽略/排除文件,您可以在 lint-staged 对象中添加“忽略”键它会忽略您要忽略的任何包或文件。使用以下可扩展语法:
{
"lint-staged": {
"linters": {
"src/**/*.js": ["formatter --write", "git add"],
},
"ignore": ["node_modules", "dist", "package-lock.json"] }
}
只需将目标模式添加到 'linters' 对象和您之前可能添加到 .prettierignore 的所有被忽略文件,以“忽略”lint-Staged 对象的键。你去吧!
我终于找到了如何做到这一点(至少截至lint-staged v11.1.2
)
在package.json
:
"lint-staged": {
"!(path/to/excluded/dir/**/*)*.ts": [
"eslint --fix",
"prettier --write"
]
}
请注意,globstar 模式在否定模式之内,而不是在它之外。这确保了子目录也被排除在外。
所以我一整天都在试图找到这个问题的答案,并查看所有论坛建议他们使用 minimatch 进行 glob 检查,这对于旧版本可能是正确的,但他们对新版本使用 micromatch 并解决这个问题我们可以使用他们的模式来排除某些目录所以在你的 .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"]
}
所以这里的 glob 是一个实际的数组,并确保不要在字符串中传递这个数组,否则它不会识别模式也不包括**/*.ts 被 lint-staged 自动将其转换为 matchBase 比较的原因如果它在模式中找到 / ,那么包含它也将与您的 folder1|folder2 文件匹配。
如果有人还在看,看看这个https://github.com/okonet/lint-staged#filtering-files它有很好的例子。
Linter 命令适用于所有暂存文件的子集,由glob 模式定义。`lint-staged' 使用微匹配来匹配具有以下规则的文件:
/
),matchBase
则将启用微匹配选项,因此 glob 匹配文件的基本名称而不管目录如何:
"*.js"
将匹配所有 JS 文件,例如/test.js
和/foo/bar/test.js
"!(*test).js"
. 将匹配所有 JS 文件,除了以 , 结尾的文件test.js
,所以foo.js
但不是foo.test.js
/
),它也将匹配路径:
"./*.js"
将匹配 git repo 根目录中的所有 JS 文件,所以/test.js
但不是/foo/bar/test.js
"foo/**/\*.js"
将匹配/foo
目录中的所有 JS 文件,所以/foo/bar/test.js
但不是/test.js
可以通过三种方式修复: