From 1c5e5310f2e0b0d121c790f7f570ac571cd63632 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Garc=C3=ADa=20Aubert?= Date: Tue, 27 Nov 2018 19:18:55 +0100 Subject: [PATCH] Support multiple Node.js and npm versions --- Gruntfile.js | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/Gruntfile.js b/Gruntfile.js index f624ba03cd..b1cfeca061 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -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(''); }