53 lines
1.7 KiB
JavaScript
53 lines
1.7 KiB
JavaScript
#!/usr/bin/env node
|
|
|
|
'use strict';
|
|
|
|
const {readFileSync, writeFileSync} = require('fs');
|
|
const {readJson, writeJson} = require('fs-extra');
|
|
const {join} = require('path');
|
|
|
|
const run = async ({cwd, packages, skipPackages, tags}) => {
|
|
if (!tags.includes('latest')) {
|
|
// Don't update version numbers for alphas.
|
|
return;
|
|
}
|
|
|
|
const nodeModulesPath = join(cwd, 'build/node_modules');
|
|
const packagesPath = join(cwd, 'packages');
|
|
|
|
// Update package versions and dependencies (in source) to mirror what was published to NPM.
|
|
for (let i = 0; i < packages.length; i++) {
|
|
const packageName = packages[i];
|
|
const publishedPackageJSON = await readJson(
|
|
join(nodeModulesPath, packageName, 'package.json')
|
|
);
|
|
const sourcePackageJSONPath = join(
|
|
packagesPath,
|
|
packageName,
|
|
'package.json'
|
|
);
|
|
const sourcePackageJSON = await readJson(sourcePackageJSONPath);
|
|
sourcePackageJSON.version = publishedPackageJSON.version;
|
|
sourcePackageJSON.dependencies = publishedPackageJSON.dependencies;
|
|
sourcePackageJSON.peerDependencies = publishedPackageJSON.peerDependencies;
|
|
|
|
await writeJson(sourcePackageJSONPath, sourcePackageJSON, {spaces: 2});
|
|
}
|
|
|
|
// Update the shared React version source file.
|
|
// (Unless this release does not include an update to React)
|
|
if (!skipPackages.includes('react')) {
|
|
const sourceReactVersionPath = join(cwd, 'packages/shared/ReactVersion.js');
|
|
const {version} = await readJson(
|
|
join(nodeModulesPath, 'react', 'package.json')
|
|
);
|
|
const sourceReactVersion = readFileSync(
|
|
sourceReactVersionPath,
|
|
'utf8'
|
|
).replace(/export default '[^']+';/, `export default '${version}';`);
|
|
writeFileSync(sourceReactVersionPath, sourceReactVersion);
|
|
}
|
|
};
|
|
|
|
module.exports = run;
|