问题描述
我的项目文件夹设置了两个子文件夹,frontend
和 backend
分别用于存放代码。
因此在我的根文件夹中:
- backend
- package.json
- other backend codes
- frontend
- package.json
- other frontend codes
- package.json
在根的 package.json 中,我有:
"scripts": {
"frontend:lint": "cd ./frontend && npm run lint && cd ..","backend:lint": "cd ./backend && npm run lint && cd .."
},"devDependencies": {
"husky": "4.3.8","lint-staged": "10.5.3"
},"husky": {
"hooks": {
"pre-commit": "lint-staged"
}
},"lint-staged": {
"frontend/**/*.{ts,tsx,json,html}": [
"npm run frontend:lint"
],"backend/**/*.{ts,json}": [
"npm run backend:lint"
]
}
但是,如果我在根级别执行 git add
和 git commit
,它一直说 No staged files match any configured task.
我查看了两个子 package.json 并且它们都有效。我不知道如何配置 lint-staged 来过滤文件。
解决方法
此处给出了有关如何定位文件的一些说明:https://www.npmjs.com/package/lint-staged#user-content-filtering-files
它可能不适用于您的情况,因为您的配置提供了多种文件类型,但只是为了将其标记为一种可能性,在 lint-staged
存储库上打开了一个“Lint-staged tasks do not run if a single filetype is specified with curly braces e.g. *.{js} ”票证,其中合作者评论:
我们使用 micromatch
作为 globs,这听起来像是库中的一个问题。
也许问题会进一步延伸。我还遇到了 No staged files match any configured task.
消息,并为我添加了 jsx
扩展到配置修复了它。
最初我有:
"lint-staged": {
"**/*.{js}": [
"eslint --fix"
]
}
修改以下内容后,效果很好:
"lint-staged": {
"**/*.{js,jsx}": [
"eslint --fix"
]
}