UNPKG

@em-cli/shared

Version:

脚手架工具方法包

52 lines (46 loc) 1.25 kB
import resolveCwd from 'resolve-cwd'; import { execa } from 'execa'; import logger from "./logger"; /** * 判断当前项目是不是一个 monorepo项目 */ export function checkIsMonorepo() { const monorepoFiles = ['pnpm-workspace.yaml', 'lerna.json']; return monorepoFiles.map(v => `./${v}`).map(resolveCwd.silent).map(Boolean).some(Boolean); } /** * 通过检查是否判断是否支持一些命令 * 比如 pnpm npm jest等等 */ const pkgManager = ['pnpm', 'npm', 'yarn']; export async function support(commands) { const normalizedCommands = commands.map(cmd => { if (typeof cmd === 'string') { return { cmd: cmd, args: ['--version'] }; } return cmd; }); const imp = async ({ cmd, args }) => { try { if (pkgManager.includes(cmd)) { await execa(cmd, args); logger.success(`support ${cmd}`); } else { await execa('node', [resolveCwd(cmd), ...args]); logger.success(`support ${cmd}`); } return true; } catch (e) { logger.error(`can't find ${cmd}, check args is ${args}`); return false; } }; const result = await Promise.all(normalizedCommands.map(imp)); return result.every(Boolean); }