JSTQL-JS-Transform/output_testing/199update-stable-version-numbers.js

53 lines
1.8 KiB
JavaScript
Raw Normal View History

#!/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;