UNPKG

@interopio/desktop-cli

Version:

CLI tool for setting up, building and packaging io.Connect Desktop projects

73 lines 3.86 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.validatePrerequisites = validatePrerequisites; const logger_1 = require("../../utils/logger"); const license_service_1 = __importDefault(require("../license.service")); const pacakge_json_helper_1 = require("../../utils/pacakge.json.helper"); const ensure_iocd_exists_1 = require("../../utils/ensure.iocd.exists"); const logger = logger_1.Logger.getInstance(); async function validatePrerequisites(packageNames) { // Check if the required package is available logger.info('Validating prerequisites...'); for (const packageName of packageNames) { logger.debug(`Checking required package: ${packageName}`); try { await import(packageName); logger.debug(`${packageName} found`); // Check if it's properly installed as devDependency await validatePackageInstallation(packageName); } catch (error) { throw new Error(`${packageName} is required but not found. Please install it as a dev dependency:\n` + `npm install --save-dev ${packageName}\n` + 'or\n' + `yarn add --dev ${packageName}\n\n` + `Note: ${packageName} should be installed as devDependency to avoid being bundled in the final package.`); } } (0, ensure_iocd_exists_1.ensureIOCDComponentExists)(); // Validate license const hasValidLicense = await license_service_1.default.hasValidLicense(); if (!hasValidLicense) { throw new Error('Valid license required for packaging'); } logger.info('Prerequisites validated successfully!'); } async function validatePackageInstallation(packageName) { try { // Read the current package.json to check dependency installation const packageJson = await pacakge_json_helper_1.PackageJSONHelper.getPackageJson(); // Check if package is in dependencies (bad for build tools) if (packageJson.dependencies && packageJson.dependencies[packageName]) { logger.warn(`${packageName} is installed as a regular dependency. ` + 'It should be installed as devDependency to avoid being bundled in the final package.\n' + 'Please move it to devDependencies:\n' + `1. Remove: npm uninstall ${packageName}\n` + `2. Reinstall: npm install --save-dev ${packageName}`); } // Check if package is in devDependencies (good) or peerDependencies (also acceptable) const hasInDevDeps = packageJson.devDependencies && packageJson.devDependencies[packageName]; const hasInPeerDeps = packageJson.peerDependencies && packageJson.peerDependencies[packageName]; if (hasInDevDeps) { logger.debug(`${packageName} correctly installed as devDependency`); } else if (hasInPeerDeps) { logger.debug(`${packageName} specified as peerDependency (user must install separately)`); } else { // Package is available (import worked) but not in package.json // This could happen if it's installed globally or in a parent node_modules logger.warn(`${packageName} is available but not found in package.json dependencies. ` + 'For best practices, install it as devDependency:\n' + `npm install --save-dev ${packageName}`); } } catch (error) { // If we can't read package.json, just log a debug message logger.debug(`Could not validate ${packageName} installation: ${error instanceof Error ? error.message : String(error)}`); } } //# sourceMappingURL=prerequisites.js.map