UNPKG

workspace-tools

Version:

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

93 lines 4.41 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.getCatalogs = exports.getWorkspacesAsync = exports.getWorkspaces = exports.getYarnCatalogs = exports.getYarnWorkspacesAsync = exports.getYarnWorkspaces = exports.getWorkspacePackagePathsAsync = exports.getWorkspacePackagePaths = exports.getYarnWorkspaceRoot = void 0; const fs_1 = __importDefault(require("fs")); const path_1 = __importDefault(require("path")); const index_1 = require("./index"); const packageJsonWorkspaces_1 = require("./packageJsonWorkspaces"); const getPackageInfo_1 = require("../../getPackageInfo"); const logging_1 = require("../../logging"); const readYaml_1 = require("../../lockfile/readYaml"); /** @deprecated Use `getWorkspaceManagerRoot` */ function getYarnWorkspaceRoot(cwd) { const root = (0, index_1.getWorkspaceManagerAndRoot)(cwd, undefined, "yarn")?.root; if (!root) { throw new Error("Could not find yarn workspace root from " + cwd); } return root; } exports.getYarnWorkspaceRoot = getYarnWorkspaceRoot; /** Get paths for each package ("workspace") in a yarn monorepo. */ function getWorkspacePackagePaths(cwd) { const yarnWorkspacesRoot = getYarnWorkspaceRoot(cwd); return (0, packageJsonWorkspaces_1.getPackagePathsFromWorkspaceRoot)(yarnWorkspacesRoot); } exports.getWorkspacePackagePaths = getWorkspacePackagePaths; /** Get paths for each package ("workspace") in a yarn monorepo. */ function getWorkspacePackagePathsAsync(cwd) { const yarnWorkspacesRoot = getYarnWorkspaceRoot(cwd); return (0, packageJsonWorkspaces_1.getPackagePathsFromWorkspaceRootAsync)(yarnWorkspacesRoot); } exports.getWorkspacePackagePathsAsync = getWorkspacePackagePathsAsync; /** * Get an array with names, paths, and package.json contents for each package ("workspace") * in a yarn monorepo. */ function getYarnWorkspaces(cwd) { const yarnWorkspacesRoot = getYarnWorkspaceRoot(cwd); return (0, packageJsonWorkspaces_1.getWorkspaceInfoFromWorkspaceRoot)(yarnWorkspacesRoot); } exports.getYarnWorkspaces = getYarnWorkspaces; exports.getWorkspaces = getYarnWorkspaces; /** * Get an array with names, paths, and package.json contents for each package ("workspace") * in a yarn monorepo. */ function getYarnWorkspacesAsync(cwd) { const yarnWorkspacesRoot = getYarnWorkspaceRoot(cwd); return (0, packageJsonWorkspaces_1.getWorkspaceInfoFromWorkspaceRootAsync)(yarnWorkspacesRoot); } exports.getYarnWorkspacesAsync = getYarnWorkspacesAsync; exports.getWorkspacesAsync = getYarnWorkspacesAsync; /** * Get version catalogs if present. * Returns undefined if there's no catalog, or any issue reading or parsing. * @see https://yarnpkg.com/features/catalogs */ function getYarnCatalogs(cwd) { try { const root = getYarnWorkspaceRoot(cwd); const yarnrcYmlPath = path_1.default.join(root, ".yarnrc.yml"); if (fs_1.default.existsSync(yarnrcYmlPath)) { const yarnrcYml = (0, readYaml_1.readYaml)(yarnrcYmlPath); if (yarnrcYml?.catalog || yarnrcYml?.catalogs) { // Yarn v4+ format return { default: yarnrcYml.catalog, named: yarnrcYml.catalogs }; } } else { // Check for midgard-yarn-strict definition of catalogs in package.json const workspaceSettings = (0, getPackageInfo_1.getPackageInfo)(root)?.workspaces; if (workspaceSettings && !Array.isArray(workspaceSettings) && (workspaceSettings?.catalog || workspaceSettings?.catalogs)) { // This probably handles a catalog named "default" as the default catalog const { default: namedDefaultCatalog, ...namedCatalogs } = workspaceSettings.catalogs || {}; return { default: workspaceSettings.catalog || namedDefaultCatalog, named: Object.keys(namedCatalogs).length ? namedCatalogs : undefined, }; } } } catch (err) { (0, logging_1.logVerboseWarning)(`Error getting yarn catalogs for ${cwd}`, err); return undefined; } } exports.getYarnCatalogs = getYarnCatalogs; exports.getCatalogs = getYarnCatalogs; //# sourceMappingURL=yarn.js.map