UNPKG

@alexaegis/workspace-tools

Version:

Tools for working with javascript workspaces

69 lines (68 loc) 3.32 kB
const require_get_workspace_root_function = require("./get-workspace-root.function-BKR-FeN5.cjs"); const require_get_root_package_json_function = require("./get-root-package-json.function-DWdZuWlE.cjs"); let _alexaegis_common = require("@alexaegis/common"); let node_path = require("node:path"); let _alexaegis_fs = require("@alexaegis/fs"); let _alexaegis_match = require("@alexaegis/match"); let globby = require("globby"); //#region src/monorepo/collect-workspace-packages.function.options.ts var normalizeCollectWorkspacePackagesOptions = (options) => { return { ...require_get_root_package_json_function.normalizeGetRootPackageJsonOptions(options), onlyWorkspaceRoot: options?.onlyWorkspaceRoot ?? false, skipWorkspaceRoot: options?.skipWorkspaceRoot ?? false, dependencyCriteria: options?.dependencyCriteria?.map(_alexaegis_common.normalizeRegExpLikeToRegExp) ?? [], packageJsonMatcher: options?.packageJsonMatcher }; }; //#endregion //#region src/monorepo/collect-workspace-packages.function.ts var collectWorkspacePackages = async (rawOptions) => { const options = normalizeCollectWorkspacePackagesOptions(rawOptions); const rootPackage = await require_get_root_package_json_function.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 (0, _alexaegis_common.asyncFilterMap)(await (0, globby.globby)(rootPackage.workspacePackagePatterns, { gitignore: true, onlyDirectories: true, ignore: [require_get_workspace_root_function.NODE_MODULES_DIRECTORY_NAME], absolute: true, cwd: rootPackage.packagePath }), (path) => { const packageJsonPath = (0, node_path.join)(path, require_get_workspace_root_function.PACKAGE_JSON_NAME); return (0, _alexaegis_fs.readJson)(packageJsonPath).catch(() => void 0).then((packageJson) => packageJson ? { packageKind: "regular", packageJson, packagePath: path, packagePathFromRootPackage: (0, node_path.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) => (0, _alexaegis_match.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 Object.defineProperty(exports, "collectWorkspacePackages", { enumerable: true, get: function() { return collectWorkspacePackages; } }); Object.defineProperty(exports, "normalizeCollectWorkspacePackagesOptions", { enumerable: true, get: function() { return normalizeCollectWorkspacePackagesOptions; } }); //# sourceMappingURL=monorepo-BmQlwwyA.cjs.map