118 lines
3.6 KiB
Bash
118 lines
3.6 KiB
Bash
|
###
|
|||
|
# @Author: Hugo
|
|||
|
# @Date: 2022-04-22 14:12:38
|
|||
|
# @LastEditTime: 2022-04-27 15:31:07
|
|||
|
# @LastEditors: Please set LastEditors
|
|||
|
# @Description: 代码格式校验及提交规范校验工具初始化
|
|||
|
# @FilePath: /low_code_designer_husky/shell/watchdog-prepare.sh
|
|||
|
###
|
|||
|
#!/bin/sh
|
|||
|
|
|||
|
# 目标项目路径
|
|||
|
PROJECTDIR=$1
|
|||
|
begin=0
|
|||
|
|
|||
|
PACKAGEFILE=./package.json
|
|||
|
|
|||
|
COMMIT_MSG_FILE=$1/.husky/commit-msg
|
|||
|
COMMIT_MSG_CONTENT='../../node_modules/.bin/commitlint --edit "$1"'
|
|||
|
|
|||
|
PRE_COMMIT_FILE=$1/.husky/pre-commit
|
|||
|
# 这个是全量eslint检查的脚本
|
|||
|
# PRE_COMMIT_CONTENT='cd ../../ && npm run lint'
|
|||
|
# 这个是只对stag缓存进行检查的脚本
|
|||
|
# -d debug
|
|||
|
PRE_COMMIT_CONTENT='npx lint-staged --cwd ./ -c ./.lintstagedrc'
|
|||
|
|
|||
|
|
|||
|
|
|||
|
watchdogInit() {
|
|||
|
|
|||
|
if [ ! -f "$PROJECTDIR/.cz-config.js" ]; then
|
|||
|
echo "开始安装.cz-config.js配置文件..."
|
|||
|
cp ./shell/modules/.cz-config.js $PROJECTDIR
|
|||
|
echo ".cz-config.js配置文件安装完成!"
|
|||
|
fi
|
|||
|
|
|||
|
if [ ! -f "$PROJECTDIR/commitlint.config.js" ]; then
|
|||
|
echo "开始安装commitlint.config.js配置文件..."
|
|||
|
cp ./shell/modules/commitlint.config.js $PROJECTDIR
|
|||
|
echo "commitlint.config.js配置文件安装完成!"
|
|||
|
fi
|
|||
|
|
|||
|
if [ ! -f "$PROJECTDIR/.lintstagedrc" ]; then
|
|||
|
echo "开始安装.lintstagedrc配置文件..."
|
|||
|
cp ./shell/modules/.lintstagedrc $PROJECTDIR
|
|||
|
echo ".lintstagedrc配置文件安装完成!"
|
|||
|
fi
|
|||
|
|
|||
|
if [ ! -f "$PROJECTDIR/.eslintrc.js" ]; then
|
|||
|
echo "开始安装.eslintrc.js配置文件"
|
|||
|
cp ./shell/modules/.eslintrc.js $PROJECTDIR
|
|||
|
echo ".eslintrc.js配置文件安装完成!"
|
|||
|
fi
|
|||
|
|
|||
|
if [ ! -f "$PROJECTDIR/.eslintignore" ]; then
|
|||
|
echo "开始安装.eslintignore配置文件"
|
|||
|
cp ./shell/modules/.eslintignore $PROJECTDIR
|
|||
|
echo ".eslintignore配置文件安装完成"
|
|||
|
fi
|
|||
|
|
|||
|
if [ ! -d "$PROJECTDIR/.husky/_" ]; then
|
|||
|
echo "开始为指定项目目录安装husky钩子..."
|
|||
|
./node_modules/.bin/husky install $PROJECTDIR/.husky
|
|||
|
# husky工具默认是在项目根目录设置git config,
|
|||
|
# 我们脚手架现状,各个项目根目录在src目录下,所以需要先取消hooksPath设置
|
|||
|
# 再手动设置在目标项目根目录
|
|||
|
git config --unset core.hooksPath
|
|||
|
rm $PROJECTDIR/.husky/_/.gitignore
|
|||
|
echo "husky钩子目录添加完成"
|
|||
|
fi
|
|||
|
|
|||
|
if [ ! -f "$PROJECTDIR/.husky/commit-msg" ]; then
|
|||
|
echo "添加git commit-msg hook..."
|
|||
|
./node_modules/.bin/husky add "$COMMIT_MSG_FILE" "$COMMIT_MSG_CONTENT"
|
|||
|
echo "添加git commit-msg hook完成"
|
|||
|
fi
|
|||
|
|
|||
|
if [ ! -f "$PROJECTDIR/.husky/pre-commit" ]; then
|
|||
|
echo "添加git pre-commit hook..."
|
|||
|
./node_modules/.bin/husky add "$PRE_COMMIT_FILE" "$PRE_COMMIT_CONTENT"
|
|||
|
echo "添加git pre-commit hook完成"
|
|||
|
fi
|
|||
|
|
|||
|
if [ ! -f "$PROJECTDIR/.editorconfig" ]; then
|
|||
|
echo "开始添加.editorconfig..."
|
|||
|
cp ./shell/modules/.editorconfig $PROJECTDIR
|
|||
|
echo "添加.editorconfig完成"
|
|||
|
fi
|
|||
|
}
|
|||
|
|
|||
|
setGitHookPath() {
|
|||
|
echo "设置git config core.hooksPath"
|
|||
|
cd $PROJECTDIR
|
|||
|
git config core.hooksPath .husky
|
|||
|
echo "设置git config core.hooksPath完成"
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
if [ ! -f "$PACKAGEFILE" ]; then
|
|||
|
echo '初始化失败!'
|
|||
|
echo '请在脚手架根目录执行命令'
|
|||
|
else
|
|||
|
if [ -d "$PROJECTDIR" ]; then
|
|||
|
echo '开始为项目初始化'
|
|||
|
begin=1
|
|||
|
else
|
|||
|
echo '项目工程目录不存在,请检查项目路径是否正确'
|
|||
|
fi
|
|||
|
|
|||
|
if [ $begin == 1 ]; then
|
|||
|
echo "$PROJECTDIR 开始初始化任务..."
|
|||
|
watchdogInit $PROJECTDIR
|
|||
|
setGitHookPath
|
|||
|
else
|
|||
|
echo '初始化失败!'
|
|||
|
fi
|
|||
|
fi
|