Support multiple Node.js and npm versions

pull/14501/head
Daniel García Aubert 6 years ago
parent dd96db7fc3
commit 1c5e5310f2

@ -7,8 +7,8 @@ var shrinkwrapDependencies = require('./lib/build/tasks/shrinkwrap-dependencies.
var webpackTask = null;
var EDITOR_ASSETS_VERSION = require('./config/editor_assets_version.json').version;
var REQUIRED_NODE_VERSION = '10.13.0';
var REQUIRED_NPM_VERSION = '6.4.1';
var REQUIRED_NODE_VERSIONS = ['10.x', '6.9.2'];
var REQUIRED_NPM_VERSIONS = ['6.x', '3.10.9'];
var DEVELOPMENT = 'development';
@ -39,10 +39,10 @@ function requireWebpackTask () {
return webpackTask;
}
function logVersionsError (err, requiredNodeVersion, requiredNpmVersion) {
function logVersionsError (err, requiredNodeVersions, requiredNpmVersions) {
if (err) {
grunt.log.fail('############### /!\\ CAUTION /!\\ #################');
grunt.log.fail('PLEASE installed required versions to build CARTO:\n- node: ' + requiredNodeVersion + '\n- node: ' + requiredNpmVersion);
grunt.log.fail('PLEASE installed required versions to build CARTO:\n- node: ' + requiredNodeVersions.join(', ') + '\n- npm: ' + requiredNpmVersions.join(', '));
grunt.log.fail('#################################################');
process.exit(1);
}
@ -77,7 +77,7 @@ module.exports = function (grunt) {
grunt.log.writeln('Running tasks: ' + runningTasks);
}
function preFlight (requiredNodeVersion, requiredNpmVersion, logFn) {
function preFlight (requiredNodeVersions, requiredNpmVersions, logFn) {
function checkVersion (cmd, versionRange, name, logFn) {
grunt.log.writeln('Required ' + name + ' version: ' + versionRange);
require('child_process').exec(cmd, function (error, stdout, stderr) {
@ -86,7 +86,7 @@ module.exports = function (grunt) {
err = 'failed to check version for ' + name;
} else {
var installed = semver.clean(stdout);
if (!semver.satisfies(installed, versionRange)) {
if (!semver.satisfies(installed, versionRange.join(' || '))) {
err = 'Installed ' + name + ' version does not match with required [' + versionRange + '] Installed: ' + installed;
}
}
@ -96,13 +96,13 @@ module.exports = function (grunt) {
logFn && logFn(err ? new Error(err) : null);
});
}
checkVersion('node -v', requiredNodeVersion, 'node', logFn);
checkVersion('npm -v', requiredNpmVersion, 'npm', logFn);
checkVersion('node -v', requiredNodeVersions, 'node', logFn);
checkVersion('npm -v', requiredNpmVersions, 'npm', logFn);
}
var mustCheckNodeVersion = grunt.option('no-node-checker');
if (!mustCheckNodeVersion) {
preFlight(REQUIRED_NODE_VERSION, REQUIRED_NPM_VERSION, logVersionsError);
preFlight(REQUIRED_NODE_VERSIONS, REQUIRED_NPM_VERSIONS, logVersionsError);
grunt.log.writeln('');
}

Loading…
Cancel
Save