"use strict"; const chalk = require("chalk"); const semver = require("semver"); const packageConfig = require("../package.json"); const shell = require("shelljs"); function exec(cmd) { return require("child_process") .execSync(cmd) .toString() .trim(); } const versionRequirements = [ { name: "node", currentVersion: semver.clean(process.version), versionRequirement: packageConfig.engines.node } ]; if (shell.which("npm")) { versionRequirements.push({ name: "npm", currentVersion: exec("npm --version"), versionRequirement: packageConfig.engines.npm }); } module.exports = function() { const warnings = []; for (let i = 0; i < versionRequirements.length; i++) { const mod = versionRequirements[i]; if (!semver.satisfies(mod.currentVersion, mod.versionRequirement)) { warnings.push( mod.name + ": " + chalk.red(mod.currentVersion) + " should be " + chalk.green(mod.versionRequirement) ); } } if (warnings.length) { console.log(""); console.log( chalk.yellow( "To use this template, you must update following to modules:" ) ); console.log(); for (let i = 0; i < warnings.length; i++) { const warning = warnings[i]; console.log(" " + warning); } console.log(); process.exit(1); } };