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