UNPKG

monorepo-build

Version:

Builds a monorepo.

48 lines (47 loc) 1.98 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const exec_1 = require("./util/exec"); const monorepo_repkg_1 = require("monorepo-repkg"); const packages_1 = require("monorepo-repkg/lib/util/packages"); const path = require("path"); const fs = require("fs-extra"); const Debug = require("debug"); const debug = Debug('monorepo-build'); function build(directory, cloneUrl, sha, { userName = 'monorepo-build', userEmail = 'monorepo-build@hostname.local', packagesDirectory = './packages/', exclude = [], preRepkg = function (cwd) { }, postRepkg = function (cwd) { }, } = {}) { debug(`cloning ${cloneUrl} into ${directory} ...`); exec_1.execSync(directory, `git clone ${cloneUrl} .`); debug(`(ok)`); const pkgs = path.resolve(directory, packagesDirectory); debug(`setting commit user ...`); exec_1.execSync(directory, `git config user.name "${userName}"`); exec_1.execSync(directory, `git config user.email "${userEmail}"`); debug(`(ok)`); debug(`checking out ${sha} ...`); exec_1.execSync(directory, `git reset --hard ${sha}`); debug(`(ok)`); debug(`getting packages ...`); const _packages = packages_1.getPackages(pkgs); debug(`-> packages: ${_packages.map(({ name }) => name).join(', ')}`); _packages .filter(({ name }) => exclude.includes(name)) .forEach(({ name, directory }) => { debug(`\t removing ${name} ...`); fs.removeSync(directory); debug('(ok)'); }); debug('calling preRepkg ...'); preRepkg(directory); debug('(ok)'); debug('calling repkg ...'); monorepo_repkg_1.repkg(pkgs); debug('(ok)'); debug('calling postRepkg ...'); postRepkg(directory); debug('(ok)'); debug(`committing changes ...`); exec_1.execSync(directory, 'git add -A'); exec_1.execSync(directory, 'git commit -m "chore: alias packages"'); debug('(ok)'); return packages_1.getPackages(pkgs); } exports.build = build;