UNPKG

workspace-tools

Version:

A collection of utilities that are useful in a git-controlled monorepo managed by one of these tools:

76 lines 3.05 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.getWorkspacePackageInfoAsync = exports.getWorkspacePackageInfo = void 0; const path_1 = __importDefault(require("path")); const promises_1 = __importDefault(require("fs/promises")); const logging_1 = require("../logging"); const infoFromPackageJson_1 = require("../infoFromPackageJson"); const getPackageInfo_1 = require("../getPackageInfo"); /** * Get an array with names, paths, and package.json contents for each of the given package paths * ("workspace" paths in npm/yarn/pnpm terms) within a monorepo. * * This is an internal helper used by `getWorkspaces` implementations for different managers. * * @param packagePaths Paths to packages within a monorepo * @returns Array of workspace package infos * @internal */ function getWorkspacePackageInfo(packagePaths) { if (!packagePaths) { return []; } return packagePaths .map((workspacePath) => { const packageJson = (0, getPackageInfo_1.getPackageInfo)(workspacePath); if (!packageJson) { return null; // getPackageInfo already logged a warning } return { name: packageJson.name, path: workspacePath, packageJson, }; }) .filter(Boolean); } exports.getWorkspacePackageInfo = getWorkspacePackageInfo; /** * Get an array with names, paths, and package.json contents for each of the given package paths * ("workspace" paths in npm/yarn/pnpm terms) within a monorepo. * * NOTE: As of writing, this will start promises to read all package.json files in parallel, * without direct concurrency control. * * This is an internal helper used by `getWorkspaces` implementations for different managers. * * @param packagePaths Paths to packages within a monorepo * @returns Array of workspace package infos * @internal */ async function getWorkspacePackageInfoAsync(packagePaths) { if (!packagePaths) { return []; } const workspacePkgPromises = packagePaths.map(async (workspacePath) => { const packageJsonPath = path_1.default.join(workspacePath, "package.json"); try { const packageJson = JSON.parse(await promises_1.default.readFile(packageJsonPath, "utf-8")); return { name: packageJson.name, path: workspacePath, packageJson: (0, infoFromPackageJson_1.infoFromPackageJson)(packageJson, packageJsonPath), }; } catch (err) { (0, logging_1.logVerboseWarning)(`Error reading or parsing ${packageJsonPath} while getting workspace package info`, err); return null; } }); return (await Promise.all(workspacePkgPromises)).filter(Boolean); } exports.getWorkspacePackageInfoAsync = getWorkspacePackageInfoAsync; //# sourceMappingURL=getWorkspacePackageInfo.js.map