cwait/packages/contract.cm/scripts/package-relink.js
2025-04-02 17:07:30 +03:00

34 lines
1.2 KiB
JavaScript

import { readFileSync, writeFileSync } from 'fs';
import { resolve } from 'path';
import { fileURLToPath } from 'url';
const workspaceLink = 'workspaces:*';
const __dirname = fileURLToPath(new URL('.', import.meta.url));
// Update target package.json
const targetPath = resolve(__dirname, '../dist/out/package.json');
const targetPackage = JSON.parse(readFileSync(targetPath, 'utf8'));
// Process all cm- dependencies
Object.keys(targetPackage.dependencies).forEach((dependency) => {
if (dependency.startsWith('cwap-cm-')) {
// Read source version from the corresponding package
const sourcePath = resolve(__dirname, `../../${dependency}/package.json`);
try {
const sourcePackage = JSON.parse(readFileSync(sourcePath, 'utf8'));
const sourceVersion = sourcePackage.version;
if (targetPackage.dependencies[dependency] === workspaceLink) {
targetPackage.dependencies[dependency] = sourceVersion;
} else {
targetPackage.dependencies[dependency] = workspaceLink;
}
} catch (err) {
console.warn(`Warning: Could not read package.json for ${dependency} at ${sourcePath}: ${err.message}`);
}
}
});
// Write back the updated package.json
writeFileSync(targetPath, JSON.stringify(targetPackage, null, 2));