在Angular的开发过程中,使用husky可以实现在代码提交的时候通过husky的hook来回掉一些定制化的需求,最常见的使用场景就是代码ng lint的代码检查。而ng-alain也将husky集成至其中。这篇文章memo一下一个常见问题的对应方法。
现象
- ng-alain版本:8.5.0
- 现象说明:commit时由husky在pre-commit阶段调用lint,结果提示如下错误信息
> tslint -p tsconfig.app.json -c tslint.json "src/**/*.ts" --fix "/private/tmp/aaa/glaucus/ui/src/test.ts" ...省略
'/private/tmp/aaa/glaucus/ui/src/test.ts' is not included in project.
对应方法
经过确认:husky中又如下两条命令需要进行执行:
- 检查typescript代码:npm run lint:ts
- 检查less代码:npm run lint:style
而手动执行此两项命令,并无实际错误,因此判断此应为配置或者本身存在问题。因为husky本身的功能就是识别出提交的时点调用我们的预设检查而已。所以将husky里面的hook直接设定为上述两行代码,发现并没有什么问题,而看了一下原先的husky的配置也似乎没有什么问题,这里先记录一下,如下是修改前后的diff信息:
liumiaocn:ui liumiao$ git diff
diff --git a/ui/package.json b/ui/package.json
index 967ce78..f4a0369 100644
--- a/ui/package.json
+++ b/ui/package.json
@@ -99,22 +99,7 @@
},
"husky": {
"hooks": {
- "pre-commit": "npm run lint-staged"
+ "pre-commit": "npm run lint:ts && npm run lint:style"
}
- },
- "lint-staged": {
- "linters": {
- "src/**/*.ts": [
- "npm run lint:ts",
- "git add"
- ],
- "src/**/*.less": [
- "npm run lint:style",
- "git add"
- ]
- },
- "ignore": [
- "src/assets/*"
- ]
}
}
liumiaocn:ui liumiao$
结果确认
上述修改之后,执行commit可以看到预定的lint检查得以正常执行。
liumiaocn:ui liumiao$ git commit -m "change husky format for unkown reason"
husky > pre-commit (node v10.15.3)
> ui@8.5.0 lint:ts /private/tmp/aaa/glaucus/ui
> tslint -p tsconfig.app.json -c tslint.json "src/**/*.ts" --fix
> ui@8.5.0 lint:style /private/tmp/aaa/glaucus/ui
> stylelint "src/**/*.less" --syntax less --fix
[master 44fb1ae] change husky format for unkown reason
1 file changed, 1 insertion(+), 16 deletions(-)
liumiaocn:ui liumiao$