scripts/set-versions.mjs
Rama main · réplica de lectura del repositorio original.
import { exec } from 'node:child_process';
import { readFile, unlink, writeFile } from 'node:fs/promises';
import { resolve } from 'node:path';
import { createInterface } from 'node:readline/promises';
import { promisify } from 'node:util';
const exec$ = promisify(exec);
const rl = createInterface({
input: process.stdin,
output: process.stdout
});
const readPackageJson = async (path) => {
const data = await readFile(path, 'utf-8');
return JSON.parse(data);
};
async function main() {
const answer = await rl.question('Enter the version (e.g., 1.2.3): ');
const version = answer.trim();
if (!version) {
console.error('No version bump provided. Exiting.');
process.exit(1);
}
console.log(
`Setting all workspaces and dependencies versions to: ${version}`
);
try {
console.log('Updating versions...');
await exec$(`npm version --git-tag-version=false --workspaces ${version}`, {
stdio: 'inherit'
});
console.log('Removing package-lock.json...');
await unlink('package-lock.json');
console.log('Updating dependencies...');
const rootPackage = await readPackageJson('package.json');
const workspaces = rootPackage.workspaces || [];
if (workspaces.length === 0) {
console.log('No workspaces found in package.json.');
return;
}
for (const workspace of workspaces) {
console.log(`Updating dependencies in workspace: ${workspace}`);
const workspacePath = resolve(workspace + '/package.json');
const workspacePackage = await readPackageJson(workspacePath);
for (const dependencyName of Object.keys(
workspacePackage.dependencies || {}
)) {
if (dependencyName.includes('@mockoon/')) {
workspacePackage.dependencies[dependencyName] = version;
}
}
console.log(`Writing updated package.json for workspace: ${workspace}`);
await writeFile(
workspacePath,
JSON.stringify(workspacePackage, null, 2) + '\n',
'utf-8'
);
}
console.log('Versions updated successfully.');
} catch (error) {
console.error('Error updating versions:', error);
process.exit(1);
} finally {
rl.close();
}
}
main();