返回 slidev
load.ts
根目录 / packages / slidev / node / setups / load.ts
1 import type { Awaitable } from '@antfu/utils'
2 import { existsSync } from 'node:fs'
3 import { resolve } from 'pathe'
4 import { loadModule } from '../utils'
5
6 export async function loadSetups<F extends (...args: any) => any>(
7 roots: string[],
8 filename: string,
9 args: Parameters<F>,
10 extraLoader?: (root: string) => ReturnType<F>[],
11 ) {
12 return await Promise.all(roots.flatMap((root) => {
13 const tasks: Awaitable<ReturnType<F>>[] = []
14 const path = resolve(root, 'setup', filename)
15 if (existsSync(path)) {
16 tasks.push(loadModule<{ default: F }>(path).then(mod => mod.default(...args)))
17 }
18 if (extraLoader) {
19 tasks.push(...extraLoader(root))
20 }
21 return tasks
22 }))
23 }
24
24 lines TYPESCRIPT