为何用pre-commit 加 tslint(jshint,eslint原理都相似),由于在项目中咱们会常常忘记主动的去作代码检查,虽然结合webpack各类构建工具下,存在*slint报错,项目会跑不起来。但在某些状况下,可能会由于着急,或者其余缘由,没有去观察项目运行的状况就仓促提交。团队开发的情景下,可能会成为别人的麻烦。而pre-commit tslint解决的需求既是:拒绝向仓库提交错误代码。node
在配置tslint pre commit以前,首先须要了解git hooks,正如它的名字所示,这是一个关于git 操做的钩子,好比咱们想要在作远程仓库推送时,那就会触发pre-push这个钩子,而后在这个钩子中写下本身想作的事。git hooks的配置就在项目.git文件夹下面的hooks文件夹中。webpack
在写相关的钩子函数时,须要注意的是,将钩子后面的sample后缀去掉,代码才会生效。git
好比,本文中用到的pre-commit这个钩子。web
更多关于git hooks的介绍,请参考:https://git-scm.com/book/en/v...bash
1.打开项目中的.git/hooks文件夹,找到pre-commit.sample文件,将如下代码替换到文件中。app
#!/bin/bash TSLINT="$(git rev-parse --show-toplevel)/node_modules/.bin/tslint" for file in $(git diff --cached --name-only | grep -E '\.ts$') do git show ":$file" | "$TSLINT" "$file" if [ $? -ne 0 ]; then exit 1 fi done
2.将pre-commit.sample文件名修改成pre-commit。函数
此时再打开项目运行git commit -m"xx"命令时,tslint会作自动的检查,若是没有错误的话,才会提交成功。而存在tslint报错的话,会终止提交。工具
平常开发中,有时为了方便会直接使用git commit -am"xxx"(即add+commit)的指令。而pre-commit 只是单独commit 钩子,所以还须要在pre-applypatch这个钩子下去作相同的配置。spa