12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 |
- "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);
- }
- };
|