# grainlet-adapters 中文文档

规范地址：https://npmcn.com/package/grainlet-adapters/

版本：1\.0\.1
npm 元数据更新时间：2026-11-03T17:48:20.988Z
中文译文更新时间：2026-11-03T19:06:06.862Z
软件包许可：MIT

本文由上游 README 机器翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/grainlet-adapters
原文对照：https://npmcn.com/package/grainlet-adapters/?lang=original

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：17.5 kB，14 个文件
- 模块格式：ES Module
- TypeScript 类型：包内自带
- Node.js 要求：\>=20
- 运行依赖：0 个
- peer 依赖：vite \>=5\.0\.0，grainlet ^1\.1\.11
- 首次发布：2026-08-21T16:23:25.631Z
- 最新版本发布：2026-11-03T17:48:20.806Z
- 已发布版本数：2（近 12 个月 2 个）

## 中文简介

将Grainlet SSR应用部署到Vercel、Cloudflare和其他web标准运行时

## 安装

```sh
npm install grainlet-adapters
```

也可以使用：`pnpm add grainlet-adapters`、`yarn add grainlet-adapters`、`bun add grainlet-adapters`

## README

# grainlet-adapters

部署Grainlet SSR应用到 **Vercel** 和 **Cloudflare** 使用网络 `Request`/`Response` 处理程序从 `grainlet/ssr`． 这个包裹放不下 平台api `grainlet` 核心。

```sh
npm install grainlet-adapters
```

同行: `grainlet`． 可选的对等: `vite` ( `grainlet-adapters/vite`）.

## 运行时

使用相同的 `App` + `routes` 对象作为Node的SSR模板。保持 `/client.js` 作为生产脚本的名称。

### Vercel

```js
import { createVercelHandler } from 'grainlet-adapters/vercel';
import { App, routes } from './App.jsx';

export default createVercelHandler({
  App,
  routes,
  document: { scripts: ['/client.js'] },
});
```

将该模块导出为函数入口。处理程序接受Web `Request` 和可选的Vercel上下文。

### Cloudflare工人

```js
import { createCloudflareHandler } from 'grainlet-adapters/cloudflare';
import { App, routes } from './App.jsx';

export default createCloudflareHandler({
  App,
  routes,
  document: { scripts: ['/client.js'] },
});
```

`fetch(request, env, ctx)` 通过 `{ env, ctx }` 作为 `platformContext`。如果 `env.ASSETS.fetch` 存在时，首先提供静态文件；404失败了 苏维埃社会主义共和国。 `npx wrangler deploy` 从生成的Cloudflare输出目录中。

`createGrainletHandler` 是两个适配器使用的共享Web工厂。通过 `assetPrefix` (或 `GRAINLET_ASSET_PREFIX`)，当脚本不是同源时。 `streaming: false` 为不流的运行时缓冲HTML。

## Vite构建输出

保持 `grainJsx()` 从 `grainlet-vite`． 添加 `grainletPlatform()` 到 **苏维埃社会主义共和国** 删除配置，使其在服务器包之后运行：

```js
import { defineConfig } from 'vite';
import { grainJsx } from 'grainlet-vite';
import { grainletPlatform } from 'grainlet-adapters/vite';

export default defineConfig({
  plugins: [
    grainJsx(),
    grainletPlatform({
      target: 'vercel', // or 'cloudflare'
      clientOutDir: 'dist/client',
      prerender: true, // or ['/', '/about']
      App, // required when prerender is enabled
      routes,
    }),
  ],
  esbuild: { jsx: 'automatic', jsxImportSource: 'grainlet' },
  build: {
    outDir: 'dist/server',
    rollupOptions: {
      input: 'src/vercel.js',
      output: { entryFileNames: 'server.js' },
    },
    ssr: true,
  },
});
```

构建顺序: `vite build --config vite.client.config.js` 然后是SSR配置。

### Vercel

下发布Build Output API v3 `.vercel/output/`：

-   `static/` -客户端资产和预渲染HTML
-   `functions/ssr.func/` -包装SSR包的边缘功能
-   `config.json` -首先是文件系统路由，然后是全部捕获 `/ssr`

从项目根目录使用Vercel CLI进行部署(`vercel deploy --prebuilt`）.

### Cloudflare

发出 `dist/cloudflare/`：

-   `assets/` -客户端文件和预渲染的HTML
-   `worker.js` ——工人 `fetch` 出口
-   `wrangler.json` - - - - - - `main` + `assets` 绑定 `ASSETS`

```sh
npx wrangler deploy --config dist/cloudflare/wrangler.json
```

动态路由留在SSR功能上。预呈现的路径是静态文件和 赢得所有人的支持。

的节点 `createNodeHandler` 模板保持默认值。 `create-grainlet --ssr` 起动器。指向战略科学军团的地点 `input` 在 `src/vercel.js` 或 `src/cloudflare.js` 当瞄准云时。

## 常见问题

### grainlet-adapters 是什么？

将Grainlet SSR应用部署到Vercel、Cloudflare和其他web标准运行时

### 如何安装 grainlet-adapters？

在项目目录运行 npm install grainlet-adapters，或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖：grainlet（^1\.1\.11）。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖，Yarn 需要手动安装。

### grainlet-adapters 支持 TypeScript 吗？

支持。包内自带 TypeScript 类型声明（package\.json 声明了 types 入口），安装后即可获得类型提示，无需再安装 @types 包。

### grainlet-adapters 支持 ESM 还是 CommonJS？

以 ES Module 形式发布，推荐使用 import 引入。在 CommonJS 项目中，Node\.js 20\.19\+ / 22\.12\+ 可以直接 require\(\) 不含顶层 await 的 ES Module，更早的版本需要改用动态 import\(\)。

### grainlet-adapters 需要什么版本的 Node\.js？

package\.json 的 engines 字段要求 Node\.js \>=20。版本不符时 npm 默认只给出警告，开启 engine-strict 后会拒绝安装。

### grainlet-adapters 可以商用吗？

grainlet-adapters 使用 MIT 许可。宽松许可：允许商业使用、修改和再分发，通常只需在分发时保留原版权与许可声明。以上为概括，不构成法律意见，请以许可原文为准。

### grainlet-adapters 还在维护吗？

最新版本 1\.0\.1 发布于 2026/11/04（今天）；至今共发布 2 个版本，其中过去 12 个月发布了 2 个；首次发布于 2026/08/22。发布频率只是参考信号：功能稳定的工具可能很少需要更新，建议结合源码仓库的 issue 和提交记录判断。

