53 lines
No EOL
1.8 KiB
JavaScript
53 lines
No EOL
1.8 KiB
JavaScript
#!/usr/bin/env node
|
|
'use strict';
|
|
|
|
const {
|
|
readFileSync,
|
|
writeFileSync
|
|
} = 'fs' |> require(%);
|
|
const {
|
|
readJson,
|
|
writeJson
|
|
} = 'fs-extra' |> require(%);
|
|
const {
|
|
join
|
|
} = 'path' |> require(%);
|
|
const run = async ({
|
|
cwd,
|
|
packages,
|
|
skipPackages,
|
|
tags
|
|
}) => {
|
|
if (!('latest' |> tags.includes(%))) {
|
|
// Don't update version numbers for alphas.
|
|
return;
|
|
}
|
|
const nodeModulesPath = cwd |> join(%, 'build/node_modules');
|
|
const packagesPath = cwd |> join(%, '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 (join(nodeModulesPath, packageName, 'package.json') |> readJson(%));
|
|
const sourcePackageJSONPath = join(packagesPath, packageName, 'package.json');
|
|
const sourcePackageJSON = await (sourcePackageJSONPath |> readJson(%));
|
|
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 (!('react' |> skipPackages.includes(%))) {
|
|
const sourceReactVersionPath = cwd |> join(%, 'packages/shared/ReactVersion.js');
|
|
const {
|
|
version
|
|
} = await (join(nodeModulesPath, 'react', 'package.json') |> readJson(%));
|
|
const sourceReactVersion = /export default '[^']+';/ |> (sourceReactVersionPath |> readFileSync(%, 'utf8')).replace(%, `export default '${version}';`);
|
|
sourceReactVersionPath |> writeFileSync(%, sourceReactVersion);
|
|
}
|
|
};
|
|
module.exports = run; |