@fjall/payload

中文文档
39.2.2发布于 2026/11/15SEE LICENSE IN LICENSETypeScriptES Module近 30 天下载 2933

Fjall AWS适配器和有效载荷CMS的公用事业

中文使用文档
文档目录14 节
  1. 安装
  2. 特征
  3. 使用量
  4. 数据库适配器
  5. S3 存储插件
  6. 环境检测
  7. 有条件的静态目录
  8. 环境变量
  9. 生产(兰布达)
  10. 发展
  11. 设立和部署有效载荷项目
  12. 配置项目
  13. 建设和部署
  14. 许可证

@ fjall/ 负载

AWS Lambda 适配器,用于有效载荷CMS. 这个软件包为Bayload的数据库和存储适配器提供倒置替换,优化后用于AWS上的无服务器部署.

安装

npm install @fjall/payload @payloadcms/storage-s3

特征

  • fjallPostgresAdapter - 装有 AWS 保密管理器集成的 PostgreSQL 适配器
  • awsS3Storage - S3 媒体上传存储插件
  • fjallDefaults - Lambda的感知性CORS/CSRF默认值
  • isProduction 编号 : isLambda - 环境检测助手

使用量

数据库适配器

// payload.config.ts
import { buildConfig } from "payload";
import { fjallPostgresAdapter, fjallDefaults } from "@fjall/payload";
import { migrations } from "./migrations";

export default buildConfig({
  ...fjallDefaults(),
  db: await fjallPostgresAdapter({
    migrationDir: "./src/migrations",
    prodMigrations: migrations,
  }),
  // ... rest of config
});

适配器自动:

  • 从 Lambda 的 AWS 保密管理器获取数据库证书
  • 倒计时 DATABASE_URL 地方发展
  • 为 Aurora PostgreSQL 配置 SSL
  • 使得Habload的迁移相互等待, 所以环境开始一起运行 每一个迁移一次。 每次运行都会在迁移时在自己的连接上挂起Postgres咨询锁(1718250604, 1),而等待15分钟的运行会因错误而失败,从而命名了锁

S3 存储插件

// plugins/index.ts
import { awsS3Storage } from "@fjall/payload";
import { Plugin } from "payload";

export const plugins: Plugin[] = [awsS3Storage()];

自动插件 :

  • 用途 MEDIA_BUCKET_NAME fjall基础设施设置的环境变量
  • 处理上传的预先签名的 URL
  • 返回本地文件系统进行开发

环境检测

import { isProduction, isLambda } from "@fjall/payload";

// Conditional logic based on environment
if (isProduction()) {
  // Running in AWS with Fjall infrastructure
}

if (isLambda()) {
  // Running in AWS Lambda runtime
}

有条件的静态目录

对于需要本地上传到 dev 但制作中S3的媒体收藏:

import { isProduction } from "@fjall/payload";
import path from "path";

export const Media: CollectionConfig = {
  slug: "media",
  upload: {
    ...(isProduction()
      ? {}
      : {
          staticDir: path.resolve(__dirname, "../../public/media"),
        }),
  },
};

环境变量

生产(兰布达)

由 Fjall 基础设施自动设定 :

变量说明
DATABASE_HOST奥罗拉 PostgreSQL 终点
DATABASE_PORT数据库端口( 默认: 5432)
DATABASE_NAME数据库名称
DATABASE_SSL启用 SSL ()true(中文(简体) )
MEDIA_BUCKET_NAMES3 上传桶

从保密管理器获取的证书 :

  • DATABASE_USERNAME
  • DATABASE_PASSWORD

发展

变量说明
DATABASE_URL完整的 PostgreSQL 连接字符串

设立和部署有效载荷项目

也没有 fjall create app 也没有 fjall deploy 为Lambda设置有效载荷项目. fjall create app --name <app> --pattern payload --non-interactive 写入 fjall/<app>/infrastructure.ts, (中文(简体) ), fjall/<app>/open-next.config.ts,旁边的 CDK 项目文件和应用程序的配置文件, 没有任何东西可以改变您的项目自己的文件 。 在没有 --non-interactive, (中文(简体) ), fjall create app 打开应用程序向导,该向导忽略 --pattern: 运行 fjall create 选择 模式 换句话说 一次手动配置项目,再在项目根部进行构建,并部署所生成的东西. 整个食谱在 有效载荷图案页。 。 。 .

在Lambda,一个部署在这条路的场地需要fjall 39.0.13或后期建造. 有效载荷模式赋予其服务器功能数据库用户名和密码,以及 PAYLOAD_SECRET,通过Fjall的秘密支持,并通过fjall 39.0.12的支持不能提供. 从代码读取,从39.0.8到39.0.12,功能的每个起步都会在其处理器运行前在Fjall的秘密解析器中停止,在39.0.8之前,一个起步可以跳过解析器,开始时没有秘密. 原因是AWS的参数和秘诀Lambda扩展的版本fjall 39.x pins, 1.0.103:在2026年10月15日于我们-东-2的arm64上测出,它以一个功能启动的前8秒以未准备好的拒绝来回答每个40个读取,从代码中读取,解答者将该拒绝视为最终拒绝. 从39.0.13起,解析器读取系统管理器和秘密管理器本身,从而不再停止一个功能可通达两个服务的有效载荷站点,以及 fjallPostgresAdapter 取已移交的解析器的值。 有效载荷站点尚未结束.

配置项目

在工程根工作, 保存的目录 package.json 编辑 fjall/ 文件夹。 下面的命令使用 npm.

  1. 安装此软件包和 S3 存储适配器 : npm install @fjall/payload @payloadcms/storage-s3。 。 。 .
  2. 单位 payload.config.ts,使用时 fjallPostgresAdapter 与 prodMigrations扩展 fjallDefaults() 输入 buildConfig,作为 数据库适配器 显示。 在第一个迁移存在之前,创建 src/migrations/index.ts 持有 export const migrations = []; 因此,导入解析度,然后生成第一个迁移 npx payload migrate:create 在第一个建筑之前.
  3. 添加 awsS3Storage() 到工程的插件,并保留 staticDir 媒体收藏中未制作的 S3 存储插件 财务报告和审定财务报表 有条件的静态目录 显示.
  4. 守护运行期间的每一个数据库查询 next build,正如有效载荷模式页面显示的网站模板页面:a generateStaticParams 返回时 [] 何时 isBuildTime() 真实, 以及查询导出时的页面 dynamic = "force-dynamic"。 。 。 .
  5. 在为 AWS 构建前请注释 DATABASE_URL 财务报告和审定财务报表 NEXT_PUBLIC_SERVER_URL 地点 .env 或者说 .env.production 摆放它们,在哪里 .env.local 或者说 .env.production.local 是的,建筑读取。 下册.j 副本 .env 财务报告和审定财务报表 .env.production 输入其独立的输出和 OpenNext 复制到服务器函数(Next.js 16.3.8 和 @opennextjs/aws 4.1.6, 读取),所以其中的每一个价值都与所部署的地点相符合.
  6. 请检查access-date=中的日期值 (帮助) npm ls next,然后寻找一个 buildCommand 输入 config 目标 fjall/<app>/open-next.config.ts:fjall 39.x 写出没有文件,后来的 CLIs 写出 buildCommand: "npm run build -- --webpack"。在下.js 16 上,配置需要该行,如果缺少该行,则添加该行: Next.js 16 默认使用涡轮包装来建起,而涡轮包装建筑则指由散列名称所形成的尖锐而不能在Lambda上解决,因此每个路由回答500个(vercel/next.js issue 87737,于2026-09-28日开放;用 Next.js 16.3.3 与下 @opennextjs/aws 4.1.0. (中文(简体) ). 在下行.js 15上,删除该行,如果有的话, OpenNext 运行 npm run build: 下一个.js 15 已经用网络包构建并拒绝 --webpack 作为未知的选项(Next.js 15.4.11,已读).

建设和部署

fjall deploy 运行其建设步骤 fjall/<app>,它失败的应用程序 被设定为 fjall create app 摆出它。 项目根数 :

  1. 安装 OpenNext 构建器 : npm install --save-dev @opennextjs/aws@^4.1.6。不要通过 npx open-next: 未安装构建器, npx 获取 open-next 3.1.3 取而代之的是来自登记册,超出这一范围.

  2. 将导入地图写入项目自己的有效载荷 CLI : ./node_modules/.bin/payload generate:importmap。 。 。 .

  3. 构建 : ./node_modules/.bin/open-next build --config-path fjall/<app>/open-next.config.ts没有 --config-path,打开后一段 open-next.config.ts 在项目根处.

  4. 检查 .open-next/server-functions/default/node_modules/sharp/package.json 财务报告和审定财务报表 .open-next/image-optimization-function/node_modules/sharp/package.json 都说0.35.5 @img/sharp-linux-arm64 每一个。 然后检查该建筑没有与涡轮包装运行: grep -rlE 'sharp-[0-9a-f]{8,}' .open-next/server-functions/default 绝对不能打印。 它所打印的一个文件指由散列名所拼写出的一个涡轮包构建;设置构建命令并再构建. 于2026年10月15日与Next.js 16.3.8 和 @opennextjs/aws 4.1.6 在输入锐利的最小应用程序上,grep打印出涡轮包所建的服务器块,没有用于网页包;在Next.js15.4.10上的Webpack所建的Webload网站模板包也打印出任何内容.

    fjall 39.0.7 并后写出将尖口0.35.5放入两个功能的安装块. 一个早期CLI的应用脚手架 保留了它用脚手架的块 直到你替换它 sharpInstallConfig 使用有效载荷模式页给出的状态声明.

  5. 部署: fjall deploy <app> --skip-build。 。 。 .

在每次部署改变项目代码或迁移之前,用步骤2至步骤4重建: --skip-build 随时随地部署 .open-next 别动.

许可证

专有——见 自由主义。 。 。 .

版本与发布记录

@fjall/payload 共发布 179 个版本,首次发布于 2026/02/02;过去 12 个月发布了 179 个版本。

版本发布日期距今
39.2.2latest2026/11/15今天
39.2.12026/11/15今天
39.2.02026/11/124 天前
39.1.02026/11/114 天前
39.0.142026/11/114 天前
39.0.132026/11/087 天前

关于 @fjall/payload 的常见问题

@fjall/payload 是什么?

Fjall AWS适配器和有效载荷CMS的公用事业

如何安装 @fjall/payload?

在项目目录运行 npm install @fjall/payload,或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖:payload(^3.0.0)、@payloadcms/db-postgres(^3.0.0)。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖,Yarn 需要手动安装。

@fjall/payload 支持 TypeScript 吗?

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

@fjall/payload 支持 ESM 还是 CommonJS?

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

@fjall/payload 需要什么版本的 Node.js?

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

@fjall/payload 可以商用吗?

@fjall/payload 使用 SEE LICENSE IN LICENSE 许可。许可条款写在包内的独立文件中,请阅读该文件确认可否商用。以上为概括,不构成法律意见,请以许可原文为准。

@fjall/payload 的下载量有多少?

根据 npm 官方下载统计,@fjall/payload 在 2026/10/15 – 2026/11/13 这 30 天内被下载 2,933 次,日均约 98 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@fjall/payload 还在维护吗?

最新版本 39.2.2 发布于 2026/11/15(今天);至今共发布 179 个版本,其中过去 12 个月发布了 179 个;首次发布于 2026/02/02。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。