tslib-cli
Version:
maximum overkill for typescript and javascript library authors
55 lines (49 loc) • 1.31 kB
JavaScript
const fs = require('fs');
const commandExists = require('command-exists').sync;
const { run, error, warn, question, info, paths } = require('./utils');
const hasYarn = commandExists('yarn') && !fs.existsSync(paths.app('package-lock.json'));
let pkg;
try {
pkg = require(paths.app('package.json'));
} catch (e) {}
module.exports = {
install: (deps, isDev = false) => {
let command = hasYarn ? 'yarn' : 'npm install';
if (deps) {
let flags = '';
if (isDev) {
flags = hasYarn ? ' add --dev' : ' --save-dev';
} else {
flags = hasYarn ? ' add' : '';
}
command = command + flags + ' ' + deps;
}
return command;
},
publish: () => {
if (hasYarn) {
run('yarn publish');
} else {
info('Bumping version...');
info(`Current version: ${pkg.version}`);
const version = question('New version: ');
run(`npm version ${version}`);
try {
run(`npm publish`);
} catch (e) {
error('Publish Failed !!', e);
warn('Reverting tag v${version}');
run(`git tag -d v${version}`);
run('git reset HEAD~');
process.exit(1);
}
}
},
script: script => {
if (pkg && pkg.scripts && pkg.scripts[script]) return hasYarn ? `yarn ${script}` : `npm run ${script}`;
else {
error(`command ${script} NOT FOUND (skipping...)`);
return false;
}
},
};