From 0c6f71c82f86c8b0e584f1c83bbbf49de62b5750 Mon Sep 17 00:00:00 2001 From: Ben Irvin Date: Wed, 3 Aug 2022 13:58:01 +0200 Subject: [PATCH 1/6] update version check --- .../app/lib/utils/check-requirements.js | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/packages/generators/app/lib/utils/check-requirements.js b/packages/generators/app/lib/utils/check-requirements.js index 09e6a91ef8..c4f9a68936 100644 --- a/packages/generators/app/lib/utils/check-requirements.js +++ b/packages/generators/app/lib/utils/check-requirements.js @@ -1,13 +1,15 @@ 'use strict'; -module.exports = function checkBeforeInstall() { - var currentNodeVersion = process.versions.node; - var semver = currentNodeVersion.split('.'); - var major = semver[0]; +const { red, green, bold } = require('chalk'); - if (major < 12) { - console.error(`You are running Node ${currentNodeVersion}`); - console.error('Strapi requires Node 12 and higher.'); +module.exports = function checkBeforeInstall() { + const currentNodeVersion = process.versions.node; + const semver = currentNodeVersion.split('.'); + const major = semver[0]; + + if (major < 14 || major > 16) { + console.error(red(`You are running ${bold(`Node ${currentNodeVersion}`)}`)); + console.error(`Strapi requires ${bold(green('Node 14 or 16'))}`); console.error('Please make sure to use the right version of Node.'); process.exit(1); } From be37742a46a03be4dc60a314b214a61a39188cf6 Mon Sep 17 00:00:00 2001 From: Ben Irvin Date: Wed, 3 Aug 2022 15:57:26 +0200 Subject: [PATCH 2/6] compare specific versions --- .../app/lib/utils/check-requirements.js | 16 +++++++++++----- packages/generators/app/package.json | 1 + 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/packages/generators/app/lib/utils/check-requirements.js b/packages/generators/app/lib/utils/check-requirements.js index c4f9a68936..1d4c475592 100644 --- a/packages/generators/app/lib/utils/check-requirements.js +++ b/packages/generators/app/lib/utils/check-requirements.js @@ -1,15 +1,21 @@ 'use strict'; const { red, green, bold } = require('chalk'); +const semver = require('semver'); module.exports = function checkBeforeInstall() { const currentNodeVersion = process.versions.node; - const semver = currentNodeVersion.split('.'); - const major = semver[0]; + const minNodeVersion = '14.19.1'; // greater than or equal to this + const maxNodeVersion = '17.0.0'; // less than this - if (major < 14 || major > 16) { - console.error(red(`You are running ${bold(`Node ${currentNodeVersion}`)}`)); - console.error(`Strapi requires ${bold(green('Node 14 or 16'))}`); + if ( + !semver.gte(currentNodeVersion, minNodeVersion) || + !semver.lt(currentNodeVersion, maxNodeVersion) + ) { + console.error(red(`You are running ${bold(`node ${currentNodeVersion}`)}`)); + console.error( + `Strapi requires ${bold(green(`node >=${minNodeVersion} and <${maxNodeVersion}`))}` + ); console.error('Please make sure to use the right version of Node.'); process.exit(1); } diff --git a/packages/generators/app/package.json b/packages/generators/app/package.json index acb60a334c..d51f74e95a 100644 --- a/packages/generators/app/package.json +++ b/packages/generators/app/package.json @@ -46,6 +46,7 @@ "node-machine-id": "^1.1.10", "ora": "^5.4.1", "tar": "6.1.11", + "semver": "^7.3.4", "uuid": "^8.3.2" }, "engines": { From 7875a2aaaea16fc30986ca0c95428cfaf344deee Mon Sep 17 00:00:00 2001 From: Ben Irvin Date: Thu, 4 Aug 2022 12:41:19 +0200 Subject: [PATCH 3/6] only exit on lower versions --- packages/generators/app/lib/utils/check-requirements.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/packages/generators/app/lib/utils/check-requirements.js b/packages/generators/app/lib/utils/check-requirements.js index 1d4c475592..abf3a0fdf0 100644 --- a/packages/generators/app/lib/utils/check-requirements.js +++ b/packages/generators/app/lib/utils/check-requirements.js @@ -17,6 +17,10 @@ module.exports = function checkBeforeInstall() { `Strapi requires ${bold(green(`node >=${minNodeVersion} and <${maxNodeVersion}`))}` ); console.error('Please make sure to use the right version of Node.'); + } + + // only exit on lower version; higher version is allowed to proceed with only the warning + if (!semver.gte(currentNodeVersion, minNodeVersion)) { process.exit(1); } }; From 826e3ecf343b9bd792770bcec5b54a8cca72479c Mon Sep 17 00:00:00 2001 From: Ben Irvin Date: Fri, 12 Aug 2022 14:12:32 +0200 Subject: [PATCH 4/6] fix supported node versions --- .../generators/app/lib/resources/json/common/package.json.js | 2 +- .../generators/lib/templates/ts/plugin-package.json.hbs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/generators/app/lib/resources/json/common/package.json.js b/packages/generators/app/lib/resources/json/common/package.json.js index 7760415ddb..b32f04a2b2 100644 --- a/packages/generators/app/lib/resources/json/common/package.json.js +++ b/packages/generators/app/lib/resources/json/common/package.json.js @@ -44,7 +44,7 @@ module.exports = opts => { ...packageJsonStrapi, }, engines: { - node: '>=12.x.x <=16.x.x', + node: '>=14.19.1 <=16.x.x', npm: '>=6.0.0', }, license: 'MIT', diff --git a/packages/generators/generators/lib/templates/ts/plugin-package.json.hbs b/packages/generators/generators/lib/templates/ts/plugin-package.json.hbs index 8303bcada1..cea3874273 100644 --- a/packages/generators/generators/lib/templates/ts/plugin-package.json.hbs +++ b/packages/generators/generators/lib/templates/ts/plugin-package.json.hbs @@ -21,7 +21,7 @@ } ], "engines": { - "node": ">=12.x.x <=16.x.x", + "node": ">=14.19.1 <=16.x.x", "npm": ">=6.0.0" }, "scripts": { From ef35dbb2f724fabedbe91864d24943d0529af2ff Mon Sep 17 00:00:00 2001 From: Ben Irvin Date: Fri, 12 Aug 2022 14:14:35 +0200 Subject: [PATCH 5/6] use supported versions from generated package.json --- .../app/lib/utils/check-requirements.js | 32 ++++++++++--------- 1 file changed, 17 insertions(+), 15 deletions(-) diff --git a/packages/generators/app/lib/utils/check-requirements.js b/packages/generators/app/lib/utils/check-requirements.js index abf3a0fdf0..8a6caa2373 100644 --- a/packages/generators/app/lib/utils/check-requirements.js +++ b/packages/generators/app/lib/utils/check-requirements.js @@ -1,26 +1,28 @@ 'use strict'; -const { red, green, bold } = require('chalk'); +const { red, green, bold, yellow } = require('chalk'); const semver = require('semver'); +const packageJSON = require('../resources/json/common/package.json'); module.exports = function checkBeforeInstall() { const currentNodeVersion = process.versions.node; - const minNodeVersion = '14.19.1'; // greater than or equal to this - const maxNodeVersion = '17.0.0'; // less than this + const { engines } = packageJSON({ strapiDependencies: [] }); - if ( - !semver.gte(currentNodeVersion, minNodeVersion) || - !semver.lt(currentNodeVersion, maxNodeVersion) - ) { - console.error(red(`You are running ${bold(`node ${currentNodeVersion}`)}`)); - console.error( - `Strapi requires ${bold(green(`node >=${minNodeVersion} and <${maxNodeVersion}`))}` - ); + // error if the node version isn't supported + if (!semver.satisfies(currentNodeVersion, engines.node)) { + console.error(red(`You are running ${bold(`Node.js ${currentNodeVersion}`)}`)); + console.error(`Strapi requires ${bold(green(`Node.js ${engines.node}`))}`); console.error('Please make sure to use the right version of Node.'); - } - - // only exit on lower version; higher version is allowed to proceed with only the warning - if (!semver.gte(currentNodeVersion, minNodeVersion)) { process.exit(1); } + + // warn if not using a LTS version + else if (!semver.satisfies(currentNodeVersion, '14.x.x || 16.x.x || 18.x.x || 20.x.x')) { + console.warn(yellow(`You are running ${bold(`Node.js ${currentNodeVersion}`)}`)); + console.warn( + `Strapi only supports ${bold( + green('LTS versions of Node.js') + )}, other versions may not be compatible.` + ); + } }; From 69ae32594efaab4d1c1536c5676864014edbf559 Mon Sep 17 00:00:00 2001 From: Ben Irvin Date: Fri, 12 Aug 2022 14:24:24 +0200 Subject: [PATCH 6/6] fix logic --- packages/generators/app/lib/utils/check-requirements.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/generators/app/lib/utils/check-requirements.js b/packages/generators/app/lib/utils/check-requirements.js index 8a6caa2373..bfd051859f 100644 --- a/packages/generators/app/lib/utils/check-requirements.js +++ b/packages/generators/app/lib/utils/check-requirements.js @@ -17,7 +17,7 @@ module.exports = function checkBeforeInstall() { } // warn if not using a LTS version - else if (!semver.satisfies(currentNodeVersion, '14.x.x || 16.x.x || 18.x.x || 20.x.x')) { + else if (semver.satisfies(currentNodeVersion, '15.x.x || 17.x.x || 19.x.x')) { console.warn(yellow(`You are running ${bold(`Node.js ${currentNodeVersion}`)}`)); console.warn( `Strapi only supports ${bold(