@alexaegis/workspace-tools
Version:
Tools for working with javascript workspaces
49 lines (48 loc) • 2.11 kB
JavaScript
import { a as PACKAGE_JSON_NAME, o as PNPM_WORKSPACE_FILE_NAME, t as getWorkspaceRoot } from "./get-workspace-root.function-DnORClbN.js";
import { join } from "node:path";
import { normalizeCwdOption, readJson, readYaml } from "@alexaegis/fs";
import { normalizeLoggerOption } from "@alexaegis/logging";
//#region src/npm/get-root-package-json.function.options.ts
var normalizeGetRootPackageJsonOptions = (options) => {
return {
...normalizeCwdOption(options),
...normalizeLoggerOption(options)
};
};
//#endregion
//#region src/npm/normalize-package-json-workspaces-field.function.ts
var normalizePackageJsonWorkspacesField = (packageJsonWorkspaces) => {
if (Array.isArray(packageJsonWorkspaces)) return packageJsonWorkspaces;
else if (packageJsonWorkspaces) return [...packageJsonWorkspaces.packages ?? [], ...packageJsonWorkspaces.nohoist ?? []];
else return [];
};
//#endregion
//#region src/npm/get-root-package-json.function.ts
var getRootPackageJson = async (rawOptions) => {
const options = normalizeGetRootPackageJsonOptions(rawOptions);
const rootWorkspace = getWorkspaceRoot(options);
if (!rootWorkspace) {
options.logger.error("No package json was found! Cannot collect workspace packages!");
return;
}
const packageJsonPath = join(rootWorkspace, PACKAGE_JSON_NAME);
const packageJson = await readJson(packageJsonPath).catch(() => void 0);
if (!packageJson) {
options.logger.error("Failed to read packageJson!", packageJsonPath);
return;
}
let workspaces = normalizePackageJsonWorkspacesField(packageJson.workspaces);
const pnpmWorkspace = await readYaml(join(rootWorkspace, PNPM_WORKSPACE_FILE_NAME));
if (pnpmWorkspace?.packages) workspaces = [...workspaces, ...pnpmWorkspace.packages];
return {
packageJson,
packageKind: "root",
workspacePackagePatterns: workspaces,
packageJsonPath,
packagePath: rootWorkspace,
packagePathFromRootPackage: "."
};
};
//#endregion
export { normalizePackageJsonWorkspacesField as n, normalizeGetRootPackageJsonOptions as r, getRootPackageJson as t };
//# sourceMappingURL=get-root-package-json.function-CFklF0V2.js.map