This repository has been archived by the owner on Dec 8, 2022. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 19
/
runfile.js
45 lines (39 loc) · 1.56 KB
/
runfile.js
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
36
37
38
39
40
41
42
43
44
45
const { run } = require('runjs')
const semver = require('semver')
const child_process = require('child_process')
const packageJson = require('./package.json')
const packageName = packageJson.name
function ship () {
const tag = packageJson.version.includes('-') ? 'next' : 'legacy'
const legacyVersion = child_process.execSync(`npm view ${packageName}@legacy version`).toString()
// publish with a `shipping` tag so we can control the legacy/next tags manually since NPM defaults to legacy if no tag is provided
run(`export SHIP=true && npm run build && npm publish -f --tag shipping`)
// remove the temporary shipping tag
run(`npm dist-tags remove ${packageName} shipping || true`)
// only if the legacy is less than the current version do we tag it (this ignores support branches)
if (semver.gt(packageJson.version, legacyVersion)) {
// add the appropriate next or legacy tag manually to the version just published
run(`npm dist-tags add ${packageName}@${packageJson.version} ${tag}`)
}
}
function preventPublish () {
if (process.env.SHIP !== 'true') {
run(`
printf "\\033[0;31m
==========================================================\n
'npm publish' is not allowed -- use 'npm run ship' instead\n
==========================================================\n\n\n" && exit 1;`
)
} else {
run(`
printf "\\033[0;32m
===============================\n
thanks for using 'npm run ship'\n
===============================\n\n\n" && exit 0;`
)
}
}
module.exports = {
preventPublish,
ship
}