55 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			55 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
'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)
 | 
						|
  }
 | 
						|
}
 |