forked from typicode/husky
/
index.ts
35 lines (32 loc) 路 1.07 KB
/
index.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
import { PackageJson } from 'type-fest'
function appendScript(pkg: PackageJson, scriptName: string, cmd: string) {
pkg.scripts ||= {}
if (pkg.scripts[scriptName] !== undefined) {
if (pkg.scripts[scriptName].includes(cmd)) {
console.log(
` "${cmd}" command already exists in ${scriptName} script, skipping.`,
)
} else {
console.log(` appending "${cmd}" command to ${scriptName} script`)
pkg.scripts[scriptName] += ` && ${cmd}`
}
} else {
console.log(` setting ${scriptName} script to command "${cmd}"`)
pkg.scripts[scriptName] = cmd
}
}
export function updatePkg(pkg: PackageJson, isYarn2: boolean): PackageJson {
pkg.devDependencies ||= {}
pkg.devDependencies.husky = '^6.0.0'
if (isYarn2) {
appendScript(pkg, 'postinstall', 'husky install')
if (pkg.private !== true) {
appendScript(pkg, 'prepublishOnly', 'pinst --disable')
appendScript(pkg, 'postpublish', 'pinst --enable')
pkg.devDependencies.pinst = '^2.0.0'
}
} else {
appendScript(pkg, 'prepare', 'husky install')
}
return pkg
}