|
@@ -163,14 +163,22 @@ const width = computed(() => {
|
|
|
|
|
|
|
|
// srcdoc 外链 CDN 镜像替换
|
|
// srcdoc 外链 CDN 镜像替换
|
|
|
const CDN_RULES: [RegExp, string][] = [
|
|
const CDN_RULES: [RegExp, string][] = [
|
|
|
|
|
+ // jsDelivr 全系列 → JSDMirror
|
|
|
[/cdn\.jsdelivr\.net/g, 'cdn.jsdmirror.com'],
|
|
[/cdn\.jsdelivr\.net/g, 'cdn.jsdmirror.com'],
|
|
|
[/fastly\.jsdelivr\.net/g, 'cdn.jsdmirror.com'],
|
|
[/fastly\.jsdelivr\.net/g, 'cdn.jsdmirror.com'],
|
|
|
[/gcore\.jsdelivr\.net/g, 'cdn.jsdmirror.com'],
|
|
[/gcore\.jsdelivr\.net/g, 'cdn.jsdmirror.com'],
|
|
|
- [/unpkg\.com/g, 's4.zstatic.net/npm'],
|
|
|
|
|
|
|
+ // unpkg → JSDMirror 优先(路径兼容),失败时可用字节镜像
|
|
|
|
|
+ [/unpkg\.com/g, 'cdn.jsdmirror.com'],
|
|
|
|
|
+ // cdnjs → 保持
|
|
|
[/cdnjs\.cloudflare\.com/g, 'cdnjs.loli.net'],
|
|
[/cdnjs\.cloudflare\.com/g, 'cdnjs.loli.net'],
|
|
|
|
|
+ // Google Fonts → 国内镜像
|
|
|
[/fonts\.googleapis\.com/g, 'fonts.loli.net'],
|
|
[/fonts\.googleapis\.com/g, 'fonts.loli.net'],
|
|
|
[/fonts\.gstatic\.com/g, 'gstatic.loli.net'],
|
|
[/fonts\.gstatic\.com/g, 'gstatic.loli.net'],
|
|
|
|
|
+ // jQuery
|
|
|
[/code\.jquery\.com/g, 'cdn.jsdmirror.com/npm/jquery'],
|
|
[/code\.jquery\.com/g, 'cdn.jsdmirror.com/npm/jquery'],
|
|
|
|
|
+ // Tailwind Play CDN → UnoCSS 运行时替代
|
|
|
|
|
+ [/https?:\/\/cdn\.tailwindcss\.com[\d.\/]*/g,
|
|
|
|
|
+ 'https://cdn.jsdmirror.com/npm/@unocss/runtime@latest/uno.global.js'],
|
|
|
]
|
|
]
|
|
|
|
|
|
|
|
const processedSrcDoc = computed(() => {
|
|
const processedSrcDoc = computed(() => {
|