Files
myeasycms-v2/tooling/scripts/src/requirements.mjs
Giancarlo Buomprisco 20f7fd2c22 Disable license check when offline (#198)
* Disable license check when offline. Fix issue with PNPM > 9 detection.
2025-03-01 17:28:25 +08:00

93 lines
2.5 KiB
JavaScript

import { execSync } from 'child_process';
// check requirements to run Makerkit
void checkRequirements();
function checkRequirements() {
checkNodeVersion();
checkPathNotOneDrive();
checkPnpmVersion();
}
/**
* Checks if the current pnpm version is compatible with Makerkit.
* If the current pnpm version is not compatible, it exits the script with an error message.
*/
function checkPnpmVersion() {
const requiredPnpmVersion = '>=9.12.0';
const currentPnpmVersion = execSync('pnpm --version').toString().trim();
const [major, minor] = currentPnpmVersion.split('.').map(Number);
if (!currentPnpmVersion) {
console.error(
`\x1b[31m%s\x1b[0m`,
`You are running Makerkit from a directory that does not have pnpm installed. Please install pnpm and run "pnpm install" in your project directory.`,
);
process.exit(1);
}
if (major < 9) {
console.error(
`\x1b[31m%s\x1b[0m`,
`You are running pnpm ${currentPnpmVersion}. Makerkit requires pnpm ${requiredPnpmVersion}.`,
);
process.exit(1);
}
// warn if the minor version is less than 12
if (major < 9 && minor < 12) {
console.warn(
`\x1b[33m%s\x1b[0m`,
`You are running pnpm ${currentPnpmVersion}. Makerkit recommends using pnpm 9.12.0 or higher.`,
);
} else {
console.log(
`\x1b[32m%s\x1b[0m`,
`You are running pnpm ${currentPnpmVersion}.`,
);
}
}
/**
* Checks if the current Node version is compatible with Makerkit.
* If the current Node version is not compatible, it exits the script with an error message.
*/
function checkNodeVersion() {
const requiredNodeVersion = '>=v18.18.0';
const currentNodeVersion = process.versions.node;
const [major, minor] = currentNodeVersion.split('.').map(Number);
if (major < 18 || (major === 18 && minor < 18)) {
console.error(
`\x1b[31m%s\x1b[0m`,
`You are running Node ${currentNodeVersion}. Makerkit requires Node ${requiredNodeVersion}.`,
);
process.exit(1);
} else {
console.log(
`\x1b[32m%s\x1b[0m`,
`You are running Node ${currentNodeVersion}.`,
);
}
}
/**
* Checks if the current working directory is not OneDrive.
* If the current working directory is OneDrive, it exits the script with an error message.
*/
function checkPathNotOneDrive() {
const path = process.cwd();
if (path.includes('OneDrive')) {
console.error(
`\x1b[31m%s\x1b[0m`,
`You are running Makerkit from OneDrive. Please move your project to a local folder.`,
);
process.exit(1);
}
}