新人前端,记录一下学习笔记
什么是hook
- 和其它版本控制系统一样,Git 能在特定的重要动作发生时触发自定义脚本。 有两组这样的钩子:客户端的和服务器端的。 客户端钩子由诸如提交和合并这样的操作所调用,而服务器端钩子作用于诸如接收被推送的提交这样的联网操作。 你可以随心所欲地运用这些钩子。
钩子都被存储在 Git 目录下的 hooks 子目录中。 也即绝大部分项目中的 .git/hooks。
- 在代码被commit、margin、push等关键节点的时候都可以使用hook针对提交信息、代码进行检查。
利用hook检查代码中存在的TODO等关键字
- 本地调试的时候为了方便我们会将一些代码注释掉,但是偶尔会出现忘记去掉注释的情况,导致线上代码与实际不匹配的问题。这个时候我们就可以利用hook拦截关键字来阻止这些错误被提交到线上。
- 使用教程
- 在项目中安装pre-commit、husky这两个库,在项目中执行
npm install pre-commit husky -D
- 在项目根目录中找到./.git/hooks文件夹,创建一个文件名称为: check-keyword.sh。
check-keyword.sh文件不一定要放在上面写的那个文件目录中,随意你喜欢放在哪,只要你在package.json文件中执行的路径对就行。名字也同理。 3. 在check-keyword.sh文件中添加以下代码
#!/bin/bash
for FILE in `git diff --name-only --cached`; do
# 忽略检查的文件
if [[ $FILE == *".sh"* ]] ; then
continue
fi
# 匹配不能上传的关键字
grep 'TODO\|debugger\|alert(' $FILE 2>&1 >/dev/null
if [ $? -eq 0 ]; then
# 将错误输出
echo -e $FILE '文件中包含了TODO、debugger、alert其中一个关键字请删除后再提交'
exit 1
fi
done
exit
- 在package.json文件中添加如下命令
"scripts": {
"check-keyword": "bash ./.git/hooks/check-keyword.sh",
"check-commit": "npm run check-keyword"
},
"pre-commit": [
"check-commit"
]
- 这样在执行git的commit命令时如果匹配到关键字就会进行拦截
6. 如果想忽略某个文件的话可以在bash文件中添加想要忽略文件的正则匹配
- 注意:bash中
[[ $FILE == *".md"* ]]
这类命令需要注意空格
常见问题FAQ
- 免费下载或者VIP会员专享资源能否直接商用?
- 本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
- 提示下载完但解压或打开不了?
- 找不到素材资源介绍文章里的示例图片?
- 模板不会安装或需要功能定制以及二次开发?
发表评论
还没有评论,快来抢沙发吧!