check-version-sync.js 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. #!/usr/bin/env node
  2. const fs = require("fs");
  3. const path = require("path");
  4. const ROOT = path.resolve(__dirname, "..");
  5. const CORE_PKG = path.join(ROOT, "packages/core/package.json");
  6. const core = JSON.parse(fs.readFileSync(CORE_PKG, "utf8"));
  7. const version = core.version;
  8. console.log(`Canonical version (from @json-render/core): ${version}`);
  9. const packagesDir = path.join(ROOT, "packages");
  10. const mismatches = [];
  11. for (const dir of fs.readdirSync(packagesDir)) {
  12. const pkgPath = path.join(packagesDir, dir, "package.json");
  13. if (!fs.existsSync(pkgPath)) continue;
  14. const pkg = JSON.parse(fs.readFileSync(pkgPath, "utf8"));
  15. if (!pkg.name || !pkg.name.startsWith("@json-render/")) continue;
  16. if (pkg.version !== version) {
  17. mismatches.push({ name: pkg.name, version: pkg.version });
  18. }
  19. }
  20. if (mismatches.length > 0) {
  21. console.error("\nVersion mismatch detected:");
  22. for (const m of mismatches) {
  23. console.error(` ${m.name}: ${m.version} (expected ${version})`);
  24. }
  25. console.error("\nRun `pnpm run version:sync` to fix.");
  26. process.exit(1);
  27. } else {
  28. console.log("All @json-render/* packages are in sync.");
  29. }