From 15eb64273a7682a2a58b92f89763571735ab1ed7 Mon Sep 17 00:00:00 2001 From: naiy Date: Fri, 31 Jul 2026 04:14:47 +0800 Subject: [PATCH] =?UTF-8?q?build:=20=E7=A7=BB=E5=8A=A8=E4=BE=9D=E8=B5=96?= =?UTF-8?q?=E5=88=B0=20@require=20=EF=BC=8C=E5=87=8F=E5=B0=8F=E8=84=9A?= =?UTF-8?q?=E6=9C=AC=E4=BD=93=E7=A7=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- vite.config.ts | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/vite.config.ts b/vite.config.ts index 9ab5227..2ba9232 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -4,6 +4,19 @@ import vue from '@vitejs/plugin-vue'; import { version } from './package.json'; import { readFileSync } from 'node:fs'; +/** + * Zstatic 是 npm 全量镜像,路径与 jsdelivr 的 /npm/ 完全一致, + * 文件内容逐字节相同,但在大陆的连通性远好于 cdn.jsdelivr.net。 + * 用法同 cdn.jsdelivr:zstatic(导出的全局变量名, 包内文件路径) + */ +const zstatic = ( + exportVarName: string, + pathname: string, +): [string, (version: string, name: string) => string] => [ + exportVarName, + (version, name) => `https://s4.zstatic.net/npm/${name}@${version}/${pathname}`, +]; + const icon = readFileSync('./src/assets/fanqie.svg', 'utf-8'); const iconUrl = `data:image/svg+xml;base64,${Buffer.from(icon).toString('base64')}`; @@ -27,6 +40,11 @@ export default defineConfig({ }, build: { fileName: 'fanqie-assistant.user.js', + // vue / moment 走 CDN @require,不打进脚本体积 + externalGlobals: { + vue: zstatic('Vue', 'dist/vue.global.prod.js'), + moment: zstatic('moment', 'min/moment.min.js'), + }, }, }), ],