UNPKG

@tsed/cli-core

Version:
29 lines (28 loc) 1.16 kB
import { taskLogger } from "@tsed/cli-tasks"; import { injector, lazyInject, logger } from "@tsed/di"; import chalk from "chalk"; import figures from "figures"; import { CliFs } from "../services/CliFs.js"; import { ProjectPackageJson } from "../services/ProjectPackageJson.js"; const all = (promises) => Promise.all(promises); export async function loadPlugins() { const $inj = injector(); const name = $inj.settings.get("name"); const projectPackageJson = $inj.invoke(ProjectPackageJson); const fs = $inj.invoke(CliFs); const promises = Object.keys(projectPackageJson.allDependencies) .filter((mod) => mod.startsWith(`@${name}/cli-plugin`) || mod.includes(`${name}-cli-plugin`)) .map(async (mod) => { try { if ($inj.settings.get("loaded")) { taskLogger().info(`Try to load ${mod}`); await lazyInject(() => fs.importModule(mod, projectPackageJson.cwd)); } taskLogger().info(`${mod} module loaded`); } catch (er) { taskLogger().warn(`Fail to load plugin ${mod} ${er.message}`); } }); await all(promises); }