UNPKG

setup-typescript-monorepo

Version:

Convert Workspaces to TypeScript's Project References

35 lines (33 loc) 1.32 kB
import { PackageManagerPlugin, PackageReference } from "./PackageManagerPlugin"; import { getPackages } from "@monorepo-utils/package-utils"; import { PackageResult } from "@monorepo-utils/package-utils"; export const plugin: PackageManagerPlugin = (options) => { // getPackages support "workspaces" and lerna.json const monorepoPackages = getPackages(options.rootDir); return { supports(): boolean { return monorepoPackages.length > 0; }, getAllPackages(): PackageResult[] { return monorepoPackages; }, getDependencies(packageJSON: PackageResult["packageJSON"]): PackageReference[] { const dependencies = Object.entries(packageJSON.dependencies ?? {}); const devDependencies = Object.entries(packageJSON.devDependencies ?? {}); return [...dependencies, ...devDependencies].map((dep) => { return { name: dep[0] as string }; }); }, resolve({ name }): string | null { const matchPkg = monorepoPackages.find((info) => { return info.packageJSON.name === name; }); if (!matchPkg) { return null; } return matchPkg.location; } }; };