UNPKG

create-new-webpack-app

Version:

CLI for scaffolding webpack projects using default config, framework templates, loader or plugins templates

47 lines (46 loc) 2.2 kB
import { dirname, resolve } from "path"; import { spawn } from "cross-spawn"; import { fileURLToPath } from "url"; export default async function (plop) { const __dirname = dirname(fileURLToPath(import.meta.url)); plop.setPlopfilePath(resolve(__dirname, "../plopfile.js")); plop.setDefaultInclude({ actions: true }); plop.setActionType("install-dependencies", (answers, config) => { const options = { cwd: config.path, stdio: [ "inherit", // Use parent's stdio configuration process.stdout.isTTY ? "inherit" : "pipe", // Pipe child process' stdout to parent's stdout process.stderr.isTTY ? "inherit" : "pipe", // Pipe child process' stderr to parent's stderr ], }; // promise to complete subprocess of installing packages and return a message const returnPromise = new Promise((resolve, reject) => { var _a, _b; const returnMessage = `Project dependencies installed successfully!`; const packageManager = answers.packageManager; const packages = config.packages.length == 1 ? [config.packages[0]] : config.packages; const installOptions = { npm: ["install", "--save-dev"], yarn: ["add", "-D"], pnpm: ["install", "--save-dev"], }; const npmInstallPackages = spawn(`${packageManager}`, [...installOptions[packageManager], ...packages], options); (_a = npmInstallPackages.stdout) === null || _a === void 0 ? void 0 : _a.on("data", (data) => { console.log(data.toString()); }); (_b = npmInstallPackages.stderr) === null || _b === void 0 ? void 0 : _b.on("data", (data) => { console.warn(data.toString()); }); npmInstallPackages.on("exit", (code) => { if (code === 0) { resolve(returnMessage); } else { reject(`Error occurred while installing packages\n Exit code: ${code}`); } }); }); return returnPromise; }); }