这个项目能做什么
# 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
评论
0 评分人数达到10人后显示
登录后参与讨论。