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
							 |