mirror of
https://github.com/zebrajr/react.git
synced 2025-12-06 12:20:20 +01:00
74 lines
2.1 KiB
JavaScript
74 lines
2.1 KiB
JavaScript
|
|
// Publishes the built npm packages from build/packages
|
|
// 1. Show checklist (automate later)
|
|
// 2. Prompt to ensure build is complete
|
|
// 3. Prompt for dist-tag?
|
|
|
|
|
|
'use strict';
|
|
|
|
const path = require('path');
|
|
const semver = require('semver');
|
|
|
|
const glob = require('glob');
|
|
|
|
|
|
module.exports = function(vorpal, app) {
|
|
vorpal
|
|
.command('npm-publish')
|
|
.description('Update the version of React, useful while publishing')
|
|
.action(function(args) {
|
|
return new Promise((resolve, reject) => {
|
|
const currentVersion = app.getReactVersion();
|
|
const isStable = semver.prerelease(currentVersion) === null;
|
|
|
|
this.log(`Preparing to publish v${currentVersion}…`);
|
|
if (isStable) {
|
|
this.log(`"latest" dist-tag will be added to this version`);
|
|
}
|
|
|
|
// TODO: show checklist
|
|
this.prompt([
|
|
{
|
|
type: 'confirm',
|
|
message: 'Did you run `grunt build` or `grunt release` and bump the version number?',
|
|
name: 'checklist',
|
|
},
|
|
]).then((answers) => {
|
|
if (!answers.checklist) {
|
|
return reject('Complete the build process first');
|
|
}
|
|
|
|
// We'll grab all the tarballs and publish those directly. This
|
|
// is how we've historically done it, though in the past it was
|
|
// just npm publish pkg1.tgz && npm publish pkg2.tgz. This
|
|
// avoided the need to cd and publish.
|
|
const tgz = glob.sync('build/packages/*.tgz', {
|
|
cwd: app.PATH_TO_REPO,
|
|
});
|
|
|
|
// Just in case they didn't actually prep this.
|
|
// TODO: verify packages?
|
|
if (tgz.length === 0) {
|
|
reject('No built packages found');
|
|
}
|
|
|
|
// TODO: track success
|
|
tgz.forEach((file) => {
|
|
this.log(app.execInRepo(`npm publish ${file} --tag=next`));
|
|
});
|
|
|
|
if (isStable) {
|
|
tgz.forEach((file) => {
|
|
const pkg = path.parse(file).name;
|
|
this.log(app.execInRepo(`npm dist-tag add ${pkg}@${currentVersion} latest`));
|
|
});
|
|
}
|
|
|
|
resolve();
|
|
});
|
|
});
|
|
|
|
});
|
|
};
|