45 lines
		
	
	
	
		
			1.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			45 lines
		
	
	
	
		
			1.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
var semver = require('semver')
 | 
						|
var chalk = require('chalk')
 | 
						|
var packageConfig = require('../package.json')
 | 
						|
var exec = function (cmd) {
 | 
						|
  return require('child_process')
 | 
						|
    .execSync(cmd).toString().trim()
 | 
						|
}
 | 
						|
 | 
						|
var versionRequirements = [
 | 
						|
  {
 | 
						|
    name: 'node',
 | 
						|
    currentVersion: semver.clean(process.version),
 | 
						|
    versionRequirement: packageConfig.engines.node
 | 
						|
  },
 | 
						|
  {
 | 
						|
    name: 'npm',
 | 
						|
    currentVersion: exec('npm --version'),
 | 
						|
    versionRequirement: packageConfig.engines.npm
 | 
						|
  }
 | 
						|
]
 | 
						|
 | 
						|
module.exports = function () {
 | 
						|
  var warnings = []
 | 
						|
  for (var i = 0; i < versionRequirements.length; i++) {
 | 
						|
    var 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 (var i = 0; i < warnings.length; i++) {
 | 
						|
      var warning = warnings[i]
 | 
						|
      console.log('  ' + warning)
 | 
						|
    }
 | 
						|
    console.log()
 | 
						|
    process.exit(1)
 | 
						|
  }
 | 
						|
}
 |