返回 slidev
monaco-deps.ts
根目录 / packages / slidev / node / virtual / monaco-deps.ts
1 import type { VirtualModuleTemplate } from './types'
2 import { uniq } from '@antfu/utils'
3 import { resolve } from 'pathe'
4
5 export const templateMonacoRunDeps: VirtualModuleTemplate = {
6 id: '/@slidev/monaco-run-deps',
7 async getContent({ userRoot, data }) {
8 if (!data.features.monaco)
9 return ''
10 const deps = uniq([
11 ...data.features.monaco.deps,
12 ...(data.config.monacoTypesAdditionalPackages || []),
13 ...(data.config.monacoRunAdditionalDeps || []),
14 ])
15 const importerPath = resolve(userRoot, './snippets/__importer__.ts')
16 let result = ''
17 for (let i = 0; i < deps.length; i++) {
18 const specifier = deps[i]
19 const resolved = await this.resolve(specifier, importerPath)
20 if (!resolved)
21 continue
22 result += `import * as vendored${i} from ${JSON.stringify(resolved.id)}\n`
23 }
24 result += 'export default {\n'
25 for (let i = 0; i < deps.length; i++)
26 result += `${JSON.stringify(deps[i])}: vendored${i},\n`
27
28 result += '}\n'
29 return result
30 },
31 }
32
32 lines TYPESCRIPT