随记:服务器禁止使用Husky

372 阅读1分钟

背景

在本地安装husky以及配置之后,准备部署到测试环境,但是发现ci流程一直在抛出错误

image.png

仔细看,在npm install 的时候会自动执行npm run prepare.

image.png

当pull 下来仓库代码 install 完依赖之后,就会自动执行 prepare 脚本,于是 husky 就会被自动启用了。所以install之后就会执行husky install。但是查看package.json, husky放到了devDependencies中,所以就会报错。 husky 用于检查您的提交消息运行测试、检查代码等Husky 支持所有 Git 钩子,所以Husky确实只需要在开发环境中安装。所以接下来要解决的问题是如何在CI部署流程中禁止Husky。

开始

首先想到的解决办法执行脚本中根据环境变量区分。此时查看部署sh文件,执行脚本之前有设置环境变量:$NODE_LUCKY_ENV,那就可以利用这个环境变量

image.png

改写prepare脚本:当$NODE_LUCKY_ENV != prod && test03 才执行husky install

  "prepare": "echo $NODE_LUCKY_ENV && if [ \"$NODE_LUCKY_ENV\" != \"prod\" ] && [ \"$NODE_LUCKY_ENV\" != \"test3\" ]; then husky install; fi",

优化下,把这个脚本写到.husky/install.sh下,改名脚本命令: "prepare":"source ./.husky/install.sh"

 #!/usr/bin/env sh

 echo "echo NODE_LUCKY_ENV:" $NODE_LUCKY_ENV 

 if [ "$NODE_LUCKY_ENV" != "prod" ] && [ "$NODE_LUCKY_ENV" != "test3" ]; 
   then husky install;
 fi