Skip to content
Snippets Groups Projects
check-versions.js 1.15 KiB
Newer Older
  • Learn to ignore specific revisions
  • lain's avatar
    lain committed
    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)
      }
    }