You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何切换Astro站点至Cloudflare适配器后出现20MB chunks文件夹?

Astro SSR 切换后 Cloudflare Workers 体积超标的原因及解决办法

问题原因

从你提供的 chunks 文件名(如 angular-ts.mjs、rust.mjs 等)来看,体积暴增的核心原因是代码高亮库(大概率是 shiki)默认打包了所有支持的语言和主题包。静态站点模式下,Astro 可能会按需加载或仅打包页面实际用到的高亮资源;但切换到 SSR 模式后,构建工具会把所有依赖的资源提前打包进 Worker 脚本,导致大量未使用的语言/主题文件被包含进来,直接让体积突破 Cloudflare Workers 的 3MB 限制。

解决办法

1. 配置代码高亮库按需加载

如果你的项目使用了 Astro 内置的 shiki 代码高亮,在 astro.config.mjs 里明确指定仅打包你实际用到的语言和主题:

// astro.config.mjs
import { defineConfig } from 'astro/config';
import cloudflare from '@astrojs/cloudflare';

export default defineConfig({
  output: 'server',
  adapter: cloudflare(),
  markdown: {
    shikiConfig: {
      // 只保留你项目中用到的编程语言
      languages: ['javascript', 'typescript', 'html', 'css'],
      // 只保留你使用的配色主题
      themes: ['github-dark', 'github-light'],
      // 禁用自动引入所有语言
      langs: undefined,
    },
  },
});

2. 清理未使用的依赖

检查项目中是否有其他依赖存在全量打包的情况,比如某些 UI 组件库、工具库如果是全量导入,改为按需导入也能进一步缩小体积。

3. 验证优化效果

修改配置后执行 npm run build,查看 dist/_workers.js/chunks 文件夹的体积,应该会大幅缩减到符合 Cloudflare Workers 免费版的限制。

内容的提问来源于stack exchange,提问作者CrossScar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 04:55:00