github.com/titpetric/pendulum@v0.1.180207-1512.0.20180514135826-1f399445df57/front/src/build/check-versions.js (about)

     1  var chalk = require('chalk')
     2  var semver = require('semver')
     3  var packageConfig = require('../package.json')
     4  var shell = require('shelljs')
     5  function exec (cmd) {
     6    return require('child_process').execSync(cmd).toString().trim()
     7  }
     8  
     9  var versionRequirements = [
    10    {
    11      name: 'node',
    12      currentVersion: semver.clean(process.version),
    13      versionRequirement: packageConfig.engines.node
    14    },
    15  ]
    16  
    17  if (shell.which('npm')) {
    18    versionRequirements.push({
    19      name: 'npm',
    20      currentVersion: exec('npm --version'),
    21      versionRequirement: packageConfig.engines.npm
    22    })
    23  }
    24  
    25  module.exports = function () {
    26    var warnings = []
    27    for (var i = 0; i < versionRequirements.length; i++) {
    28      var mod = versionRequirements[i]
    29      if (!semver.satisfies(mod.currentVersion, mod.versionRequirement)) {
    30        warnings.push(mod.name + ': ' +
    31          chalk.red(mod.currentVersion) + ' should be ' +
    32          chalk.green(mod.versionRequirement)
    33        )
    34      }
    35    }
    36  
    37    if (warnings.length) {
    38      console.log('')
    39      console.log(chalk.yellow('To use this template, you must update following to modules:'))
    40      console.log()
    41      for (var i = 0; i < warnings.length; i++) {
    42        var warning = warnings[i]
    43        console.log('  ' + warning)
    44      }
    45      console.log()
    46      process.exit(1)
    47    }
    48  }