返回 slidev
setups.ts
根目录 / packages / slidev / node / virtual / setups.ts
1 import type { VirtualModuleTemplate } from './types'
2 import { join } from 'pathe'
3
4 function createSetupTemplate(name: string): VirtualModuleTemplate {
5 const id = `/@slidev/setups/${name}`
6 return {
7 id,
8 getContent({ roots }) {
9 const imports: string[] = []
10 const globs = roots.map((root) => {
11 const glob = join(root, `setup/${name}.{ts,js,mts,mjs}`)
12 const importName = `__slidev_setup_${imports.length}`
13 imports.push(`import ${importName} from ${JSON.stringify(this.makeAbsoluteImportGlob([glob], { import: 'default' }))}`)
14 return `Object.values(${importName})[0]`
15 })
16 return `${imports.join('\n')}\n\nexport default [${globs.join(', ')}].filter(Boolean)`
17 },
18 }
19 }
20
21 // setups
22 const setupModules = ['shiki', 'code-runners', 'monaco', 'mermaid', 'mermaid-renderer', 'main', 'root', 'routes', 'shortcuts', 'context-menu']
23
24 export const templateSetups = setupModules.map(createSetupTemplate)
25
25 lines TYPESCRIPT