monorepo-build
Version:
Builds a monorepo.
48 lines (47 loc) • 1.98 kB
JavaScript
;
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;