UNPKG

1.19 kBJavaScriptView Raw
1require('shelljs/global')
2const fs = require('fs')
3const path = require('path')
4const sep = path.sep
5let exists = fs.existsSync || path.existsSync
6let pkgName = require('../package.json').name
7
8// 文件夹选择
9let hook = path.resolve(__dirname, 'hook')
10let root = exec('git rev-parse --show-toplevel').stdout.replace('\n', '')
11let git = path.resolve(root, '.git')
12let hooks = path.resolve(git, 'hooks')
13
14let tasks = ['pre-commit', 'commit-msg']
15
16if (!exists(git) || !fs.lstatSync(git).isDirectory()) {
17 console.log('请先安装git,再执行 `npm run git-install` 命令安装git钩子')
18 process.exit(0)
19}
20
21if (!exists(hooks)) {
22 console.log('未找到.git/hooks文件夹,帮您创建')
23 fs.mkdirSync(hooks)
24}
25
26tasks.forEach(value => {
27 let task = path.resolve(hooks, value)
28 let hookFile = fs.readFileSync(hook).toString()
29 hookFile = hookFile.replace('$NODEJS', process.execPath)
30 hookFile = hookFile.replace('$NODEJSPATH', path.resolve(process.execPath, '../'))
31 hookFile = hookFile.replace('$TASK', `${pkgName}${sep}gitHooks${sep}script${sep}${value}.js`)
32 fs.writeFileSync(task, hookFile)
33
34 fs.chmodSync(task, '777')
35 console.log(`${task} installed success !`)
36})