UNPKG

@alexaegis/workspace-tools

Version:

Tools for working with javascript workspaces

58 lines (57 loc) 2.88 kB
import { a as PACKAGE_JSON_NAME, r as NODE_MODULES_DIRECTORY_NAME } from "./get-workspace-root.function-DnORClbN.js"; import { r as normalizeGetRootPackageJsonOptions, t as getRootPackageJson } from "./get-root-package-json.function-CFklF0V2.js"; import { asyncFilterMap, normalizeRegExpLikeToRegExp } from "@alexaegis/common"; import { join, relative } from "node:path"; import { readJson } from "@alexaegis/fs"; import { match } from "@alexaegis/match"; import { globby } from "globby"; //#region src/monorepo/collect-workspace-packages.function.options.ts var normalizeCollectWorkspacePackagesOptions = (options) => { return { ...normalizeGetRootPackageJsonOptions(options), onlyWorkspaceRoot: options?.onlyWorkspaceRoot ?? false, skipWorkspaceRoot: options?.skipWorkspaceRoot ?? false, dependencyCriteria: options?.dependencyCriteria?.map(normalizeRegExpLikeToRegExp) ?? [], packageJsonMatcher: options?.packageJsonMatcher }; }; //#endregion //#region src/monorepo/collect-workspace-packages.function.ts var collectWorkspacePackages = async (rawOptions) => { const options = normalizeCollectWorkspacePackagesOptions(rawOptions); const rootPackage = await getRootPackageJson(options); if (!rootPackage) { options.logger.error("No package json was found! Cannot collect workspace packages!"); return []; } let result = []; if (rootPackage.workspacePackagePatterns.length > 0) { const subPackages = await asyncFilterMap(await globby(rootPackage.workspacePackagePatterns, { gitignore: true, onlyDirectories: true, ignore: [NODE_MODULES_DIRECTORY_NAME], absolute: true, cwd: rootPackage.packagePath }), (path) => { const packageJsonPath = join(path, PACKAGE_JSON_NAME); return readJson(packageJsonPath).catch(() => void 0).then((packageJson) => packageJson ? { packageKind: "regular", packageJson, packagePath: path, packagePathFromRootPackage: relative(rootPackage.packagePath, path), packageJsonPath } : void 0); }); if (!options.onlyWorkspaceRoot) result.push(...subPackages); } if (!options.skipWorkspaceRoot || rootPackage.workspacePackagePatterns.length === 0) result.unshift(rootPackage); if (options.packageJsonMatcher) result = result.filter((relativePackage) => match(relativePackage.packageJson, options.packageJsonMatcher)); if (options.dependencyCriteria.length > 0) result = result.filter((relativePackage) => { const packageDependencies = [...Object.keys(relativePackage.packageJson.dependencies ?? {}), ...Object.keys(relativePackage.packageJson.devDependencies ?? {})]; return options.dependencyCriteria.every((dependencyCriteria) => packageDependencies.some((dependency) => dependencyCriteria.test(dependency))); }); return result; }; //#endregion export { normalizeCollectWorkspacePackagesOptions as n, collectWorkspacePackages as t }; //# sourceMappingURL=monorepo-oshQmH-3.js.map