UNPKG

@alexanderjeurissen/yarn-bundle

Version:
63 lines (62 loc) 2.9 kB
#!/usr/bin/env node "use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const chalk_1 = __importDefault(require("chalk")); const clear_1 = __importDefault(require("clear")); const figlet_1 = __importDefault(require("figlet")); const commander_1 = __importDefault(require("commander")); const fs_1 = require("fs"); const util_1 = require("./util"); const lineReader = require("line-reader"); // eslint-disable-line @typescript-eslint/no-var-requires clear_1.default(); console.log(chalk_1.default.green(figlet_1.default.textSync("Yarn Bundle", { horizontalLayout: "full" }))); console.log(chalk_1.default.greenBright("brought to you by @alexanderjeurissen")); commander_1.default .version("0.0.1") .description("A CLI for bundling global node modules") .option("-d, --dump", "Write all globally installed node_modules into a *Yarnfile* file.") .option("-D, --describe", "dump adds a description comment above each line, unless the dependency does not have a description.") .option("-i, --install", "Install all dependencies from the *Yarnfile* file") .parse(process.argv); const Dump = async (options) => { const { infoEntries } = await util_1.fetchGlobalNodeModules(); console.log(chalk_1.default.yellow(`NOTE: found ${infoEntries.length} global node modules managed by yarn..`)); console.log(""); const nodePackages = await Promise.all(infoEntries.map(util_1.getPackageDetails(options))); const data = nodePackages .map(({ name, version, description }) => { console.log(chalk_1.default.blue(name) + "@" + chalk_1.default.green(version)); return `${description ? `# ${description} \n` : ""}${name}@${version}`; }) .join("\n"); fs_1.writeFile("Yarnfile", data, (err) => { if (err) { console.error(chalk_1.default.red(err)); return; } console.log(chalk_1.default.bgGreen(chalk_1.default.black("entries in Yarnfile successfully installed"))); }); }; const Install = async (options) => { lineReader.eachLine("Yarnfile", async (line) => { if (line[0] !== "#") { const [, name, version] = line.match("(.*)@(.*)"); console.log("* installing " + chalk_1.default.blue(name) + "@" + chalk_1.default.green(version)); await util_1.execAsync(`yarn global add ${line}`); } }, (err) => { if (err) throw err; console.log(chalk_1.default.bgGreen(chalk_1.default.black("entries successfully written to ./Yarnfile"))); }); }; // NOTE: dump global installed node packages to yarn_bundle if (commander_1.default.dump) { Dump(commander_1.default); } else if (commander_1.default.install) { Install(commander_1.default); }