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