| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 | '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)  }}
 |