博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
记一次gitHook带来的思考
阅读量:6277 次
发布时间:2019-06-22

本文共 1676 字,大约阅读时间需要 5 分钟。

前言

我在看的时候发现,在CLI服务下有一个Git Hook

在安装之后,@vue/cli-service 也会安装 ,它会让你在 package.jsongitHooks 字段中方便地指定 Git hook:

{  "gitHooks": {    "pre-commit": "lint-staged"  }}复制代码

是尤大fork自,内置到了@vue/cli中。

看到这我想到了一个问题,我在搭vue架子的时候githook用的就是,那么问题来了,既然@vue/cli中已经内置了,我为什么还要在装一遍,所以就有了下面的故事。

故事

多装一个让我觉着很是多余,可能是强迫症吧。所以我就到package.json中直接把"husky": "^1.3.1"删除了,舒服了很多,按照文档一顿操作猛如虎

打开husky.config.js, 复制,删除

module.exports = {  hooks: {    'pre-commit': 'npm run fix',    'commit-msg': 'commitlint -E HUSKY_GIT_PARAMS'  }};复制代码

打开package.json,粘贴,稍加修改

{  "gitHooks": {    "pre-commit": "npm run fix",    "commit-msg": "commitlint -E HUSKY_GIT_PARAMS"  }}复制代码

大功告成,试探性操作?

git commit -m "test"复制代码

结果:成功!

我简直就是天才,哈哈。等等,成功?fix没有工作,commitlint没有工作。

稍加思考

gitHook文件存储在.git/hooks中,先去看一眼发生了什么

打开.git/hooks/commit-msg

#!/bin/sh# husky# Hook created by Husky#   Version: 1.3.1#   At: 2019-4-10 21:26:25#   See: https://github.com/typicode/husky#readme...复制代码

Hushy?不是删除了吗?是因为删除姿势不正确吗?

npm uninstall husky复制代码

再看一下.git/hooks/commit-msg已经被删除了,很满意。

再次试探

git commit -m "test"复制代码

结果:成功! 想看个失败咋就这么难呢。

再次思考

安装的时候对.git/hooks里的钩子进行了更改,那么在用@vue/cli创建项目的时候也会对.git/hooks里的钩子进行更改,所以再次安装也会改变,没错,答案只有一个。

npm i yorkie复制代码

看一下.git/hooks/commit-msg

#!/bin/sh#yorkie 2.0.0command_exists () {  command -v "$1" >/dev/null 2>&1}...复制代码

果然是这样的,第三次试探

git commit -m "test"复制代码

结果:失败!终于失败了。

Error: Recieved 'HUSKY_GIT_PARAMS' as value for -E | ...复制代码

此处的环境变量忘记修改,在中也没有找到。看了下.git/hooks/commit-msg中应该是GIT_PARAMS

最终结果:fix工作,commitlint工作。

大功告成???

冷静分析

  • 类似的工具在安装的时候会创建相关钩子
  • npminstalluninstall的时候可以执行脚本 --
  • 删除依赖不要在package.json中直接删除,而是用npm uninstall来删除
  • 官方文档要多看,会发现很多惊喜
  • 遇到问题要多尝试,文档加源码,干就完了

参考资料

转载于:https://juejin.im/post/5cade280f265da035d0c63fb

你可能感兴趣的文章
数学公式的英语读法
查看>>
留德十年
查看>>
迷人的卡耐基说话术
查看>>
PHP导出table为xls出现乱码解决方法
查看>>
PHP问题 —— 丢失SESSION
查看>>
Java中Object类的equals()和hashCode()方法深入解析
查看>>
数据库
查看>>
Vue------第二天(计算属性、侦听器、绑定Class、绑定Style)
查看>>
dojo.mixin(混合进)、dojo.extend、dojo.declare
查看>>
Python 数据类型
查看>>
iOS--环信集成并修改头像和昵称(需要自己的服务器)
查看>>
PHP版微信权限验证配置,音频文件下载,FFmpeg转码,上传OSS和删除转存服务器本地文件...
查看>>
教程前言 - 回归宣言
查看>>
PHP 7.1是否支持操作符重载?
查看>>
Vue.js 中v-for和v-if一起使用,来判断select中的option为选中项
查看>>
Java中AES加密解密以及签名校验
查看>>
定义内部类 继承 AsyncTask 来实现异步网络请求
查看>>
VC中怎么读取.txt文件
查看>>
如何清理mac系统垃圾
查看>>
企业中最佳虚拟机软件应用程序—Parallels Deskto
查看>>