Files
docmd-io--docmd/tools/resolve-ws-deps.js
T
wehub-resource-sync 6db8fca185
docmd CI verification / verify (push) Failing after 0s
chore: import upstream snapshot with attribution
2026-07-13 12:31:55 +08:00

66 lines
1.9 KiB
JavaScript

/**
* --------------------------------------------------------------------
* docmd : the minimalist, zero-config documentation generator.
*
* @package @docmd/core (and ecosystem)
* @website https://docmd.io
* @repository https://github.com/docmd-io/docmd
* @license MIT
* @copyright Copyright (c) 2025-present docmd.io
*
* [docmd-source] - Please do not remove this header.
* --------------------------------------------------------------------
*/
const fs = require("fs");
const path = require("path");
const root = process.cwd();
const packagesDir = path.join(root, "packages");
// Build name → version map
const versionMap = {};
function collectVersions(dir) {
for (const entry of fs.readdirSync(dir)) {
const full = path.join(dir, entry);
if (fs.existsSync(path.join(full, "package.json"))) {
const pkg = require(path.join(full, "package.json"));
versionMap[pkg.name] = pkg.version;
} else if (fs.statSync(full).isDirectory()) {
collectVersions(full);
}
}
}
collectVersions(packagesDir);
// Rewrite workspace deps
function rewriteDeps(dir) {
for (const entry of fs.readdirSync(dir)) {
const full = path.join(dir, entry);
if (fs.existsSync(path.join(full, "package.json"))) {
const pkgPath = path.join(full, "package.json");
const pkg = JSON.parse(fs.readFileSync(pkgPath, "utf8"));
["dependencies", "devDependencies", "peerDependencies", "optionalDependencies"].forEach(field => {
if (!pkg[field]) return;
for (const dep in pkg[field]) {
if (pkg[field][dep].startsWith("workspace:")) {
pkg[field][dep] = `^${versionMap[dep]}`;
}
}
});
fs.writeFileSync(pkgPath, JSON.stringify(pkg, null, 2));
} else if (fs.statSync(full).isDirectory()) {
rewriteDeps(full);
}
}
}
rewriteDeps(packagesDir);
console.log("Workspace dependencies resolved.");