UNPKG

@miyagi/core

Version:

miyagi is a component development tool for JavaScript template engines.

75 lines (62 loc) 1.7 kB
import path from "path"; import deepMerge from "deepmerge"; import getMergedConfig from "./init/config.js"; import log from "./logger.js"; /** * @param {object} args * @param {boolean} [isBuild] * @param {boolean} [isComponentGenerator] * @returns {Promise<object>} */ export default async function getConfig(args, isBuild, isComponentGenerator) { let userFile = {}; let userFileName; try { userFileName = ".miyagi.js"; userFile = await import( path.resolve(process.cwd(), `${userFileName}?time=${Date.now()}`) ); } catch (e) { log("warn", null, e); try { userFileName = ".miyagi.mjs"; userFile = await import( path.resolve(process.cwd(), `${userFileName}?time=${Date.now()}`) ); } catch (err) { userFileName = null; log("warn", null, err); } } let userConfig = (args ? deepMerge(userFile.default, getCliArgs(args)) : userFile.default) ?? {}; userConfig.userFileName = userFileName; userConfig.isBuild = isBuild; userConfig.isComponentGenerator = isComponentGenerator; userConfig.indexPath = { default: isBuild ? "component-all.html" : "/component?file=all", embedded: isBuild ? "component-all-embedded.html" : "/component?file=all&embedded=true", }; delete userConfig._; return getMergedConfig(userConfig); } /** * Converts and removes unnecessary cli args * @param {object} args - the cli args * @returns {object} configuration object based on cli args */ function getCliArgs(args) { const cliArgs = { ...args }; const buildArgs = {}; delete cliArgs._; delete cliArgs.$0; if (cliArgs.folder) { buildArgs.folder = cliArgs.folder; delete cliArgs.folder; } cliArgs.build = buildArgs; return cliArgs; }