esm.sh与esm.run详细比较

esm.shesm.run 都是流行的 ES Module CDN 服务,但在背景、功能、兼容性和国内访问上差异明显。简单说:esm.sh 功能更强、更灵活、国内优化更好;esm.run 是 jsDelivr 旗下的轻量、稳定方案。


一、基本背景与归属

  • esm.sh

    • 独立开源项目(GitHub: esm-dev/esm.sh)
    • 口号:A fast, smart, & global CDN for modern (ES2015+) web development
    • 自研架构,专注 ESM 转换与优化
    • 全球节点 + 中国大陆优化(重要)
  • esm.run (ESM Run)

    • jsDelivr 官方推出的 ESM 服务
    • 依托 jsDelivr 现有 CDN 网络与运营
    • 定位:轻量、可靠、兼容 npm 包的 ESM 分发
    • 域名:https://esm.run/

二、核心功能对比

1. 模块来源与格式

  • esm.sh

    • 支持:npm、GitHub、JSR、pkg.pr.new
    • 自动:CommonJS → ESM、依赖重写、Tree-shaking
    • 内置 Node 核心模块 polyfill(fs/path 等浏览器兼容)
    • 支持 TypeScript/JSX/Vue/Svelte 直接运行(/x/ 路径)
  • esm.run

    • 仅支持:npm 包(不支持 GitHub/JSR 等)
    • 基础 CJS → ESM 转换
    • 无内置 Node polyfill(依赖包自身兼容)
    • 无 TS/JSX 实时编译

2. URL 语法与版本

  • esm.sh

    https://esm.sh/[pkg]@[version]/[path]?opts
    https://esm.sh/react@18
    https://esm.sh/x/types/react@18  # TS 类型
    
    • 完整 semver、标签、beta/next 支持
    • 大量查询参数:?dev/?min/?bundle/?external
  • esm.run

    https://esm.run/[pkg]@[version]
    https://esm.run/react@18.2.0
    
    • 标准版本范围
    • 极少参数(基本靠默认)

3. 环境与运行时

  • esm.sh

    • 浏览器、Deno、Node.js、Cloudflare Workers、Vercel Edge Func 等
    • unenv 兼容层,跨环境一致性好
    • 开发/生产模式切换
  • esm.run

    • 浏览器、Deno、Node.js
    • 兼容层较弱,更依赖包本身适配

4. 类型(TypeScript)支持

  • esm.sh自动提供 .d.ts/x/types/ 路径专门用于类型
  • esm.run:无内置类型支持

5. 国内访问(中国大陆)

  • esm.sh优化明显,有国内节点/线路优化,稳定性高
  • esm.run:同 jsDelivr,偶尔受 DNS/网络波动影响

6. 开源与透明性

  • esm.sh:完全开源(Go 后端),可自建
  • esm.run:闭源服务,依托 jsDelivr 运营

三、性能与缓存

  • esm.sh

    • 全球边缘节点 + 国内优化
    • 精细缓存、按需构建、依赖拆分
  • esm.run

    • jsDelivr 全球 CDN(Fastly/G-Core/Cloudflare)
    • 缓存策略保守、更稳、但灵活性低

四、适用场景选择

选 esm.sh 更适合:

  • 国内用户/站点(访问更稳)
  • 需要 Node 模块(fs/path)在浏览器运行
  • 直接用 TS/JSX/Vue 组件
  • 复杂依赖、需要 bundle/tree-shaking 控制
  • 多环境(Worker/Edge)一致运行
  • 希望高度自定义构建参数

选 esm.run 更适合:

  • 已信任/在用 jsDelivr
  • 简单场景:纯前端、标准 npm 包
  • 追求极简、稳定、少配置
  • 国际用户为主

五、一句话总结

esm.sh = 全功能、强优化、国内友好、高度可定制;esm.run = jsDelivr 官方轻量 ESM,简单可靠、国际稳定。

posted @ 2026-04-05 00:23  卓能文  阅读(4)  评论(0)    收藏  举报