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