这个项目能做什么

# esm.sh 面向现代 Web 开发的免构建 JavaScript CDN。 ## 概述 esm.sh 允许直接从 HTTP URL 导入 JavaScript 模块,无需任何安装或构建步骤。它在服务器端将源代码转换为浏览器兼容的 ES 模块,缓存结果,并通过全球 Cloudflare CDN 提供服务。 ## 注册表支持 - **NPM**:按名称、版本或标签导入任意包 - **JSR**:以 `/jsr/` 开头的 Deno 友好注册表 - **GitHub**:使用 `/gh/` 前缀直接从仓库导入 - **pkg.pr.new**:使用 `/pr/` 前缀导入来自 PR 的预览构建 ## 主要特性 ### 零构建导入 ```js import React from "https://esm.sh/react@19.2.4"; import { encodeBase64 } from "https://esm.sh/jsr/@std/encoding@1.0.0/base64"; ``` ### 源代码转换 无需构建工具,即可在浏览器中自动转换 `.ts(x)`、`.vue` 和 `.svelte` 文件。 ### 依赖管理 使用查询参数指定依赖版本: ```js import useSWR from "https://esm.sh/swr?deps=react@18.3.1"; ``` 为依赖设置别名: ```js import useSWR from "https://esm.sh/swr?alias=react:preact/compat"; ``` ### 打包选项 - `?bundle=false` - 禁用默认打包 - `?standalone` - 将所有依赖打包为单个文件 - `?raw` - 提供未经转换的源代码 - `?exports=foo,bar` - 摇树优化至特定导出 ### 构建配置 控制构建目标和选项: ```js // 开发构建 import React from "https://esm.sh/react?dev"; // 指定目标 import React from "https://esm.sh/react?target=es2022"; // ESBuild 选项 import foo from "https://esm.sh/foo?conditions=custom1,custom2"; import foo from "https://esm.sh/foo?keep-names"; ``` ### Import Maps 集成 可与 HTML import maps 配合进行裸说明符解析: ```html <script type="importmap"> { "imports": { "react": "https://esm.sh/react@19.2.4" } } </script> ``` 使用 `?external` 或 `*` 前缀可将导入保留为裸说明符,交由浏览器解析。 ### 其他特性 - **CSS 导入**:为在 JS 中导入 CSS 的包提供 `?css` 标志 - **Web Workers**:使用 `?worker` 查询进行 worker 加载,并支持注入 - **Deno 兼容性**:解析 Node.js 内置模块(fs、os、net 等) - **TypeScript 支持**:通过 `X-TypeScript-Types` 头自动提供类型定义 - **tsx 脚本**:1KB 脚本,可直接在 HTML 中编写 TSX ### 缓存清除 为已更新的包刷新缓存构建: - 精确版本会立即重新构建 - 裸名称会在下次请求时重新解析版本 - 工作量证明挑战可防止滥用 ### 自托管 按照[托管文档](./HOSTING.md)部署你自己的实例。 ## 限制 目前尚不支持 Node.js 或 Bun 运行时。 ## 许可证 MIT