UNPKG

vils

Version:

Recursively outputs file paths and contents in various formats

41 lines (39 loc) 1.54 kB
import { Config, CLIArgs } from './types'; import path from 'path'; import fs from 'fs-extra'; export function loadConfig(cli: CLIArgs): Config { const cwd = process.cwd(); let configPath: string | undefined; if (cli.config) { configPath = path.isAbsolute(cli.config) ? cli.config : path.join(cwd, cli.config); } else { const candidates = ['vils.config.ts', 'vils.config.js', 'vils.config.mjs', 'vils.config.cjs']; for (const name of candidates) { const full = path.join(cwd, name); if (fs.existsSync(full)) { configPath = full; break; } } } let cfg: Partial<Config> = {}; if (configPath) { const ext = path.extname(configPath); if (ext === '.ts') { const tsNode = require('ts-node'); tsNode.register({ transpileOnly: true }); cfg = require(configPath).default; } else { cfg = require(configPath).default || require(configPath); } } const source = cli._[0] && typeof cli._[0] === 'string' ? (cli._[0] as string) : cfg.source || '.'; const merged: Config = { source, log: cli.log ?? cfg.log ?? false, file: cli.file ?? cfg.file, ignore: cli.ignore.length ? cli.ignore : (cfg.ignore ?? ['node_modules', 'dist', '.git', 'package-lock.json', /^vils\..+$/]), format: cli.format ?? cfg.format ?? 'md', confirm: cfg.confirm ?? false }; return merged; }