Husky/lint-staged 可以 exclude/ignore 归档吗?
Husky/lint-staged is it possible to exclude/ignore file?
使用 Husky/lint-staged 钩子时是否可以 exclude/ignore 文件?
正在查看 atm 文档,但没有找到任何相关内容。
希望有类似
的东西
/*ignore*/
我可以添加的标签。
让 lint-staged 忽略导致格式问题的某些文件。
任何对此的想法都非常感谢:)
最后添加了
.prettierignore
文件。
不理想,但似乎还可以。
在 package.json 中配置 lint-staged 或如果您正在使用任何其他 IDE,为了通过 lint-Staged 和 husky 挂钩 ignore/exclude 文件,您可以添加lint-staged 对象中的 "ignore" 键,使其忽略您想要忽略的任何包或文件。使用以下可扩展语法:
{
"lint-staged": {
"linters": {
"src/**/*.js": ["formatter --write", "git add"],
},
"ignore": ["node_modules", "dist", "package-lock.json"] }
}
只需将目标模式添加到 'linters' 对象,并将您之前可能添加到 .prettierignore 的所有忽略文件添加到 lint-Staged 对象的 "ignore" 键。好了!
所以我一整天都在试图找到这个问题的答案,并且查看所有论坛建议他们使用 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’ 使用 micromatch 来匹配具有以下规则的文件:
- 如果 glob 模式不包含斜杠 (
/
),micromatch 的 matchBase
选项将启用,因此 glob 匹配文件的基本名称,而不管目录:
"*.js"
将匹配所有 JS 文件,如 /test.js
和 /foo/bar/test.js
"!(*test).js"
。将匹配所有 JS 文件,除了那些以 test.js
结尾的文件,所以 foo.js
而不是 foo.test.js
- 如果 glob 模式确实包含斜杠 (
/
),它也会匹配路径:
"./*.js"
将匹配 git 存储库根目录中的所有 JS 文件,因此 /test.js
而不是 /foo/bar/test.js
"foo/**/\*.js"
会匹配/foo
目录下的所有JS文件,所以/foo/bar/test.js
而不是/test.js
可以通过三种方式修复:
- .lintstagedrc.js
- .prettierignore
- lint-staged.config.js
我终于找到了如何做到这一点(至少从 lint-staged v11.1.2
开始)
在package.json
中:
"lint-staged": {
"!(path/to/excluded/dir/**/*)*.ts": [
"eslint --fix",
"prettier --write"
]
}
注意 globstar 模式在否定模式之内而不是在它之外。这确保子目录也被排除在外。
使用 Husky/lint-staged 钩子时是否可以 exclude/ignore 文件?
正在查看 atm 文档,但没有找到任何相关内容。
希望有类似
的东西/*ignore*/
我可以添加的标签。
让 lint-staged 忽略导致格式问题的某些文件。
任何对此的想法都非常感谢:)
最后添加了
.prettierignore
文件。
不理想,但似乎还可以。
在 package.json 中配置 lint-staged 或如果您正在使用任何其他 IDE,为了通过 lint-Staged 和 husky 挂钩 ignore/exclude 文件,您可以添加lint-staged 对象中的 "ignore" 键,使其忽略您想要忽略的任何包或文件。使用以下可扩展语法:
{
"lint-staged": {
"linters": {
"src/**/*.js": ["formatter --write", "git add"],
},
"ignore": ["node_modules", "dist", "package-lock.json"] }
}
只需将目标模式添加到 'linters' 对象,并将您之前可能添加到 .prettierignore 的所有忽略文件添加到 lint-Staged 对象的 "ignore" 键。好了!
所以我一整天都在试图找到这个问题的答案,并且查看所有论坛建议他们使用 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’ 使用 micromatch 来匹配具有以下规则的文件:
- 如果 glob 模式不包含斜杠 (
/
),micromatch 的matchBase
选项将启用,因此 glob 匹配文件的基本名称,而不管目录:"*.js"
将匹配所有 JS 文件,如/test.js
和/foo/bar/test.js
"!(*test).js"
。将匹配所有 JS 文件,除了那些以test.js
结尾的文件,所以foo.js
而不是foo.test.js
- 如果 glob 模式确实包含斜杠 (
/
),它也会匹配路径:"./*.js"
将匹配 git 存储库根目录中的所有 JS 文件,因此/test.js
而不是/foo/bar/test.js
"foo/**/\*.js"
会匹配/foo
目录下的所有JS文件,所以/foo/bar/test.js
而不是/test.js
可以通过三种方式修复:
- .lintstagedrc.js
- .prettierignore
- lint-staged.config.js
我终于找到了如何做到这一点(至少从 lint-staged v11.1.2
开始)
在package.json
中:
"lint-staged": {
"!(path/to/excluded/dir/**/*)*.ts": [
"eslint --fix",
"prettier --write"
]
}
注意 globstar 模式在否定模式之内而不是在它之外。这确保子目录也被排除在外。