everything-dev
Version:
A consolidated product package for building Module Federation apps with oRPC APIs.
34 lines (32 loc) • 1.65 kB
JavaScript
import { existsSync, readFileSync } from "node:fs";
import { join } from "node:path";
//#region src/cli/framework-version.ts
function stripVersionPrefix(version) {
return version.replace(/^[\^~>=]+/, "");
}
function readRootCatalogVersion(projectDir, packageName) {
const pkgPath = join(projectDir, "package.json");
if (!existsSync(pkgPath)) return void 0;
const version = JSON.parse(readFileSync(pkgPath, "utf-8")).workspaces?.catalog?.[packageName];
return version ? stripVersionPrefix(version) : void 0;
}
function readNodeModulesVersion(projectDir, packageName) {
const pkgPath = join(projectDir, "node_modules", packageName, "package.json");
if (!existsSync(pkgPath)) return void 0;
return JSON.parse(readFileSync(pkgPath, "utf-8")).version;
}
function readInstalledFrameworkVersion(projectDir, packageName) {
const pkgPath = join(projectDir, "package.json");
if (!existsSync(pkgPath)) return void 0;
const pkg = JSON.parse(readFileSync(pkgPath, "utf-8"));
const deps = pkg.dependencies ?? {};
const devDeps = pkg.devDependencies ?? {};
const version = deps[packageName] || devDeps[packageName];
if (!version) return readRootCatalogVersion(projectDir, packageName) ?? readNodeModulesVersion(projectDir, packageName);
if (version.startsWith("catalog:")) return readRootCatalogVersion(projectDir, packageName) ?? readNodeModulesVersion(projectDir, packageName);
if (version.startsWith("workspace:") || version.startsWith("file:")) return readNodeModulesVersion(projectDir, packageName);
return stripVersionPrefix(version);
}
//#endregion
export { readInstalledFrameworkVersion };
//# sourceMappingURL=framework-version.mjs.map