mirror of
https://github.com/TryGhost/Ghost.git
synced 2025-01-03 00:15:11 +03:00
Node version check w/o semver (#7097)
closes #6691 - removes dependency on semver & package.json in preinstall script - has a simplified proxy of semver to look for the right version numbers
This commit is contained in:
parent
ee1f4fdbdd
commit
37da544dcc
47
core/server/utils/npm/preinstall.js
Normal file
47
core/server/utils/npm/preinstall.js
Normal file
@ -0,0 +1,47 @@
|
||||
var validVersions = process.env.npm_package_engines_node.split(' || '),
|
||||
currentVersion = process.versions.node,
|
||||
foundMatch = false,
|
||||
majMinRegex = /(\d+\.\d+)/,
|
||||
majorRegex = /^\d+/,
|
||||
minorRegex = /\d+$/,
|
||||
exitCodes = {
|
||||
NODE_VERSION_UNSUPPORTED: 231
|
||||
};
|
||||
|
||||
function doError() {
|
||||
console.error('\x1B[31mERROR: Unsupported version of Node');
|
||||
console.error('\x1B[37mGhost supports LTS Node versions: ' + process.env.npm_package_engines_node);
|
||||
console.error('You are currently using version: ' + process.versions.node + '\033[0m');
|
||||
console.error('\x1B[32mThis check can be overridden, see http://support.ghost.org/supported-node-versions/ for more info\033[0m');
|
||||
|
||||
process.exit(exitCodes.NODE_VERSION_UNSUPPORTED);
|
||||
}
|
||||
|
||||
if (process.env.GHOST_NODE_VERSION_CHECK === 'false') {
|
||||
console.log('\x1B[33mSkipping Node version check\033[0m');
|
||||
} else {
|
||||
try {
|
||||
currentVersion = currentVersion.match(majMinRegex)[0];
|
||||
|
||||
validVersions.forEach(function (version) {
|
||||
var matchChar = version.charAt(0),
|
||||
versionString = version.match(majMinRegex)[0];
|
||||
|
||||
if (
|
||||
(matchChar === '~' && currentVersion === versionString)
|
||||
|| (matchChar === '^'
|
||||
&& currentVersion.match(majorRegex)[0] === versionString.match(majorRegex)[0]
|
||||
&& currentVersion.match(minorRegex)[0] >= versionString.match(minorRegex)[0]
|
||||
)
|
||||
) {
|
||||
foundMatch = true;
|
||||
}
|
||||
});
|
||||
|
||||
if (foundMatch !== true) {
|
||||
doError();
|
||||
}
|
||||
} catch (e) {
|
||||
doError();
|
||||
}
|
||||
}
|
@ -18,7 +18,7 @@
|
||||
"license": "MIT",
|
||||
"main": "./core/index",
|
||||
"scripts": {
|
||||
"preinstall": "npm install semver && node -e \"require('./core/server/utils/startup-check.js').nodeVersion()\"",
|
||||
"preinstall": "node core/server/utils/npm/preinstall.js",
|
||||
"start": "node index",
|
||||
"test": "grunt validate --verbose"
|
||||
},
|
||||
|
Loading…
Reference in New Issue
Block a user