返回 slidev
remoteAssets.ts
根目录 / packages / slidev / node / vite / remoteAssets.ts
1 import type { ResolvedSlidevOptions, SlidevPluginOptions } from '@slidev/types'
2
3 export async function createRemoteAssetsPlugin(
4 { data: { config }, mode }: ResolvedSlidevOptions,
5 pluginOptions: SlidevPluginOptions,
6 ) {
7 if (!(config.remoteAssets === true || config.remoteAssets === mode))
8 return
9
10 const { VitePluginRemoteAssets, DefaultRules } = await import('vite-plugin-remote-assets')
11 return VitePluginRemoteAssets({
12 resolveMode: id => id.endsWith('index.html') ? 'relative' : '@fs',
13 awaitDownload: mode === 'build',
14 ...pluginOptions.remoteAssets,
15 rules: [
16 ...DefaultRules,
17 {
18 match: /\b(https?:\/\/image.unsplash\.com.*?)(?=[`'")\]])/gi,
19 ext: '.png',
20 },
21 ...pluginOptions.remoteAssets?.rules ?? [],
22 ],
23 })
24 }
25
25 lines TYPESCRIPT