UNPKG

@o3r/schematics

Version:

Schematics module of the Otter framework

116 lines 4.61 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.isSupportedPackageManager = isSupportedPackageManager; exports.getPackageManager = getPackageManager; exports.getPackageManagerRunner = getPackageManagerRunner; exports.getPackageManagerExecutor = getPackageManagerExecutor; exports.isPackageInstalled = isPackageInstalled; exports.getPackageManagerVersion = getPackageManagerVersion; exports.getPackageManagerInfo = getPackageManagerInfo; const node_child_process_1 = require("node:child_process"); const node_path_1 = require("node:path"); const PACKAGE_MANAGER_WORKSPACE_MAPPING = { npm: '--workspace', yarn: 'workspace' }; /** * Determine if the given packager manager is supported * @param name Name of the package manager */ function isSupportedPackageManager(name) { return name === 'yarn' || name === 'npm'; } /** * Get the Package Manager * @param enforcedNpmManager package manager to enforce */ function getPackageManagerName(enforcedNpmManager) { const envCustomPackageManager = isSupportedPackageManager(process.env?.ENFORCED_PACKAGE_MANAGER) && process.env.ENFORCED_PACKAGE_MANAGER; const envNodePackageManager = process.env?.npm_execpath?.includes('yarn') && 'yarn'; return enforcedNpmManager || envCustomPackageManager || envNodePackageManager || 'npm'; } /** * Get package manager used in runs * Defaults to the package manager setup in process.env if no package manager set in angular.json * @param options Option to determine the final package manager */ function getPackageManager(options) { let packageManagerFromWorkspace; if (options?.workspaceConfig) { const angularJsonObj = (typeof options?.workspaceConfig === 'string' ? JSON.parse(options?.workspaceConfig) : options?.workspaceConfig); if (angularJsonObj?.cli?.packageManager) { packageManagerFromWorkspace = angularJsonObj.cli.packageManager; } } const enforcedNpmManager = options?.enforcedNpmManager && isSupportedPackageManager(options.enforcedNpmManager) ? options.enforcedNpmManager : undefined; const workspaceNpmManager = isSupportedPackageManager(packageManagerFromWorkspace) ? packageManagerFromWorkspace : undefined; return getPackageManagerName(enforcedNpmManager || workspaceNpmManager); } /** * Get command to run scripts with your package manager * @param workspaceConfig Workspace configuration * @param packageName Name of the package of the workspace to run the script (name from package.json) */ function getPackageManagerRunner(workspaceConfig, packageName) { const pckManager = getPackageManager({ workspaceConfig }); if (!packageName) { return `${pckManager} run`; } return `${pckManager} ${PACKAGE_MANAGER_WORKSPACE_MAPPING[pckManager]} ${packageName} run`; } /** * Get command to execute bin command with your package manager * @param workspaceConfig Workspace configuration * @param packageName Name of the package of the workspace to execute the command */ function getPackageManagerExecutor(workspaceConfig, packageName) { const pckManager = getPackageManager({ workspaceConfig }); if (!packageName) { return `${pckManager} exec`; } return `${pckManager} ${PACKAGE_MANAGER_WORKSPACE_MAPPING[pckManager]} ${packageName} exec`; } /** * Determine if the given package is installed * @param packageName name of the package to check */ function isPackageInstalled(packageName) { try { return !!require.resolve(node_path_1.posix.join(packageName, 'package.json')); } catch { return false; } } /** * Get package manager version * @param options Option to determine the final package manager */ function getPackageManagerVersion(options) { try { return (0, node_child_process_1.execSync)(`${getPackageManager(options)} --version`, { encoding: 'utf8', stdio: ['ignore', 'pipe', 'ignore'], env: { ...process.env, // NPM updater notifier will prevents the child process from closing until it timeout after 3 minutes. NO_UPDATE_NOTIFIER: '1', NPM_CONFIG_UPDATE_NOTIFIER: 'false' } }).trim(); } catch { return undefined; } } /** * Get package manager information * @param options Option to determine the final package manager */ function getPackageManagerInfo(options) { return { name: getPackageManager(options), version: getPackageManagerVersion(options) }; } //# sourceMappingURL=package-manager-runner.js.map