react-lifecycle-appear
Version:
A React HOC, adding lifecycle methods for handling a component enters or exits the viewport.
61 lines (52 loc) • 1.61 kB
JavaScript
const readline = require('readline');
const util = require('util');
const exec = require('child_process').execFileSync;
async function ask(question) {
const readLineFromShell = readline.createInterface({
input: process.stdin,
output: process.stdout
});
return new Promise((resolve, reject) => {
readLineFromShell.question(question, answer => {
resolve(answer);
readLineFromShell.close();
});
});
}
function requireNoCache(modulePath) {
delete require.cache[require.resolve(modulePath)];
return require(modulePath);
}
async function main() {
const currentVer = require('../package.json').version;
const inputVer = await ask(`当前版本号:${currentVer}\n\r请输入发布版本号:`);
const versionMessage = await ask(`请输入版本信息:`);
const isBetaVersion = /(^pre)|-/.test(inputVer);
// upgrade version
exec('npm', [
'version',
'--no-git-tag-version',
inputVer,
'--preid' + (isBetaVersion ? '=beta' : '')
]);
const releaseVer = requireNoCache('../package.json').version;
console.log(`正在发布 ${releaseVer} ... \n\r`);
// build
exec('npm', ['run', 'build'], { stdio: 'inherit' });
// publish
exec('npm', ['publish', '--tag', isBetaVersion ? 'beta' : 'latest'], {
stdio: 'inherit'
});
// git push
exec('git', ['add', '-A']);
exec('git', ['commit', '-m', `release:${releaseVer}: ${versionMessage}`]);
if (!isBetaVersion) {
exec('git', ['tag', `v${releaseVer}`, '-m', versionMessage]);
}
exec('git', ['push', '--follow-tags']);
}
try {
main();
} catch (e) {
console.error(e);
}