shefing/payload-tools
GitHub: shefing/payload-tools
为 Payload CMS 3.0 提供的一套模块化插件集合,涵盖权限控制、内容协作、自定义字段与界面增强等功能,帮助开发者快速搭建更完善的内容管理后台。
Stars: 158 | Forks: 6
## 🚀 Payload CMS 插件集合
本仓库包含一组功能强大的插件,旨在增强您的 [Payload CMS](https://payloadcms.com/) 项目。无论您是在管理复杂的内容结构,还是在优化创作体验,这些插件都将帮助您简化工作流程。
### 🔌 **可用插件** (兼容 Payload 3.0)
1. **🔐 [Authorization](packages/authorization/)**
为您的内容实现灵活的**基于角色的访问控制 (RBAC)**。根据 collections 和 globals 的**读/写/发布**权限定义角色。轻松为用户分配自定义权限,实现细粒度的内容安全。
2. **👤 [Authors Info](packages/authors-info/)**
在创作界面自动显示**作者信息**,包括**创建者、更新者、发布者**以及**最后发布日期**等详细信息。
3. **💬 [Rich-text Comments](packages/comments/)**
直接在 Payload 创作界面中启用**行内评论和讨论**。此插件支持使用 [Lexical](https://lexical.dev/) 进行**富文本评论**,非常适合内容协作。
4. **📋 [Right Panel](packages/right-panel/)**
通过**自定义右侧面板**增强编辑体验。此视图允许您并排管理**相关实体**,从而在处理复杂数据关系时提高工作效率。
5. **📝 [Custom Version View](packages/custom-version-view/)**
通过显示“**Updated at**”和“**Updated by**”字段的**自定义版本视图**来改进版本控制。此插件可与 [Authors Info](packages/authors-info/) 插件无缝集成。
6. **🔗 [Cross-Collection Config](packages/cross-collection/)**
**Cross-Collection Config Plugin** 使您能够修改 Payload CMS 中组件的视图,
注入**自定义行为**并提供原生不支持的**全局配置功能**。
7. **⚙️ [Field-type Component Override](packages/field-type-components-override/)**
通过将特定类型的所有字段在 Payload CMS 中的默认组件替换为**自定义组件——无缝且自动地**进行动态覆盖。此插件允许您定义一次字段类型,并在您的所有 collections 中全局应用自定义组件。
8. **🎨 [Color Picker Field](packages/color-picker/)**
向您的 Payload 界面添加**自定义颜色选择工具**。允许作者轻松选择颜色,从而简化内容样式设置。
您可以在 **font-color** 和 **background-color** 之间进行选择,以便更好地预览最终结果。
9. **✨ [Icon Select](packages/icon-select/)**
一个方便的**图标选择器字段**,用于从 [flowbite-react-icons](https://flowbite.com/icons/) 中在 Payload UI 内选择图标,从而轻松地用视觉吸引力强的图标增强内容。
10. **🚀 [Quick Filter](packages/quickfilter/)**
通过即时、直观的过滤器改变您的 PayloadCMS 管理体验,这些过滤器恰好出现在您需要的地方。告别笨重的过滤表单,迎接无缝的数据探索!
11. **🔄 [Reset List View](packages/reset-list-view/)**
向 collection 列表视图添加一个“Reset Preferences”按钮,允许用户快速将其列表视图偏好设置(列、过滤器、分页等)重置为默认状态。
💡 **提示:** 每个插件都是模块化的,可以根据您的项目需求独立集成。请查看链接的文档以获取安装说明和配置详细信息。
## 🛠️ 开发说明
### NPM 包管理
#### 将包发布到 NPM
本仓库包含一个 GitHub Action,允许您将任何包发布到 NPM:
1. 转到 GitHub 仓库中的 "Actions" 选项卡
2. 选择 "Publish Package to NPM" workflow
3. 点击 "Run workflow"
4. 从下拉菜单中选择您要发布的包
5. 选择版本类型(patch、minor、major)以确定版本号将如何递增
6. 点击 "Run workflow" 开始发布过程
**注意:** 此操作需要将一个名为 `NPM_TOKEN` 的 GitHub secret 中存储的 NPM 访问令牌。
#### 从 NPM 清除包
出于维护目的,您可以使用 "Purge Package from NPM" workflow 从 NPM 清除某个包的所有版本:
1. 转到 GitHub 仓库中的 "Actions" 选项卡
2. 选择 "Purge Package from NPM" workflow
3. 点击 "Run workflow"
4. 从下拉菜单中选择您要清除的包
5. 在确认字段中输入 "PURGE"(这是防止意外清除所必需的)
6. 将 "Dry run" 设置为 "true",以预览将取消发布的内容而无需实际执行
7. 点击 "Run workflow" 开始该过程
当您准备好实际清除包时:
1. 按照相同的步骤操作,但将 "Dry run" 设置为 "false"
2. 该 workflow 将从 NPM 取消发布该包的所有版本
**警告:** 清除包是不可逆的,可能会影响依赖您包的用户。请谨慎使用。
## 🚀 Payload CMS 插件集合
本仓库包含一组功能强大的插件,旨在增强您的 [Payload CMS](https://payloadcms.com/) 项目。无论您是在管理复杂的内容结构,还是在优化创作体验,这些插件都将帮助您简化工作流程。
### 🔌 **可用插件** (兼容 Payload 3.0)
1. **🔐 [Authorization](packages/authorization/)**
为您的内容实现灵活的**基于角色的访问控制 (RBAC)**。根据 collections 和 globals 的**读/写/发布**权限定义角色。轻松为用户分配自定义权限,实现细粒度的内容安全。
2. **👤 [Authors Info](packages/authors-info/)**
在创作界面自动显示**作者信息**,包括**创建者、更新者、发布者**以及**最后发布日期**等详细信息。
3. **💬 [Rich-text Comments](packages/comments/)**
直接在 Payload 创作界面中启用**行内评论和讨论**。此插件支持使用 [Lexical](https://lexical.dev/) 进行**富文本评论**,非常适合内容协作。
4. **📋 [Right Panel](packages/right-panel/)**
通过**自定义右侧面板**增强编辑体验。此视图允许您并排管理**相关实体**,从而在处理复杂数据关系时提高工作效率。
5. **📝 [Custom Version View](packages/custom-version-view/)**
通过显示“**Updated at**”和“**Updated by**”字段的**自定义版本视图**来改进版本控制。此插件可与 [Authors Info](packages/authors-info/) 插件无缝集成。
6. **🔗 [Cross-Collection Config](packages/cross-collection/)**
**Cross-Collection Config Plugin** 使您能够修改 Payload CMS 中组件的视图,
注入**自定义行为**并提供原生不支持的**全局配置功能**。
7. **⚙️ [Field-type Component Override](packages/field-type-components-override/)**
通过将特定类型的所有字段在 Payload CMS 中的默认组件替换为**自定义组件——无缝且自动地**进行动态覆盖。此插件允许您定义一次字段类型,并在您的所有 collections 中全局应用自定义组件。
8. **🎨 [Color Picker Field](packages/color-picker/)**
向您的 Payload 界面添加**自定义颜色选择工具**。允许作者轻松选择颜色,从而简化内容样式设置。
您可以在 **font-color** 和 **background-color** 之间进行选择,以便更好地预览最终结果。
9. **✨ [Icon Select](packages/icon-select/)**
一个方便的**图标选择器字段**,用于从 [flowbite-react-icons](https://flowbite.com/icons/) 中在 Payload UI 内选择图标,从而轻松地用视觉吸引力强的图标增强内容。
10. **🚀 [Quick Filter](packages/quickfilter/)**
通过即时、直观的过滤器改变您的 PayloadCMS 管理体验,这些过滤器恰好出现在您需要的地方。告别笨重的过滤表单,迎接无缝的数据探索!
11. **🔄 [Reset List View](packages/reset-list-view/)**
向 collection 列表视图添加一个“Reset Preferences”按钮,允许用户快速将其列表视图偏好设置(列、过滤器、分页等)重置为默认状态。
💡 **提示:** 每个插件都是模块化的,可以根据您的项目需求独立集成。请查看链接的文档以获取安装说明和配置详细信息。
## 🛠️ 开发说明
### NPM 包管理
#### 将包发布到 NPM
本仓库包含一个 GitHub Action,允许您将任何包发布到 NPM:
1. 转到 GitHub 仓库中的 "Actions" 选项卡
2. 选择 "Publish Package to NPM" workflow
3. 点击 "Run workflow"
4. 从下拉菜单中选择您要发布的包
5. 选择版本类型(patch、minor、major)以确定版本号将如何递增
6. 点击 "Run workflow" 开始发布过程
**注意:** 此操作需要将一个名为 `NPM_TOKEN` 的 GitHub secret 中存储的 NPM 访问令牌。
#### 从 NPM 清除包
出于维护目的,您可以使用 "Purge Package from NPM" workflow 从 NPM 清除某个包的所有版本:
1. 转到 GitHub 仓库中的 "Actions" 选项卡
2. 选择 "Purge Package from NPM" workflow
3. 点击 "Run workflow"
4. 从下拉菜单中选择您要清除的包
5. 在确认字段中输入 "PURGE"(这是防止意外清除所必需的)
6. 将 "Dry run" 设置为 "true",以预览将取消发布的内容而无需实际执行
7. 点击 "Run workflow" 开始该过程
当您准备好实际清除包时:
1. 按照相同的步骤操作,但将 "Dry run" 设置为 "false"
2. 该 workflow 将从 NPM 取消发布该包的所有版本
**警告:** 清除包是不可逆的,可能会影响依赖您包的用户。请谨慎使用。
## 快速开始
这是一个 pnpm workspace/monorepo。请从仓库根目录安装依赖。
前置条件
- Node: ^18.20.2 或 >=20.9.0 (参见 package.json 中的 "engines")
- pnpm: 9.x (本仓库在 package.json 的 "packageManager" 中固定了 pnpm 版本)
推荐:使用 Corepack 以获取正确的 pnpm 版本
- 启用 Corepack (仅需执行一次): corepack enable
- 为本仓库激活固定的 pnpm 版本: corepack prepare pnpm@9.4.0 --activate
安装所有工作区依赖 (从仓库根目录)
- pnpm install
- 这将在仓库根目录创建/更新唯一的 pnpm-lock.yaml。
- 请不要期望在 packages/* 目录内存在 lockfile;pnpm 使用共享的 workspace lockfile。
仅为单个工作区包安装 (可选)
- 您可以使用 filter 标志将安装/链接限制在特定包 (仍在根目录运行):
- pnpm --filter @shefing/quickfilter install
- pnpm --filter ./packages/custom-version-view install
清理并重新安装 (可选)
- 从仓库根目录运行: rm -rf node_modules pnpm-lock.yaml && pnpm install
- 如果需要,许多包还公开了一个可以在其内部运行的 "reinstall" 脚本。
构建
- 大多数包可以使用以下命令构建: pnpm -r build (递归运行 scripts)
- 或者构建单个包: pnpm --filter @shefing/quickfilter build
## 常见问题
- 为什么运行 "pnpm i" 时没有创建 pnpm.lock.json?
- pnpm 不会创建 JSON lockfile。该 lockfile 被命名为 "pnpm-lock.yaml"。
- 在 workspace/monorepo (本仓库使用 pnpm-workspace.yaml) 中,pnpm 会在仓库根目录创建一个单一的共享 lockfile。您不会在 packages/* 目录中获得 lockfile。
- 您应该从 workspace 根目录运行安装: `pnpm install` (或 `pnpm -w install`)。
- 如果您明确需要每个包独立的 lockfile (不推荐大多数团队使用),您可以在 workspace 根目录的 .npmrc 中设置 `shared-workspace-lockfile=false`。这将在各个包中生成 lockfile,但代价是失去单一事实来源。
标签:CMS插件, DNS解析, Headless CMS, Lexical, Naabu, Payload CMS, RBAC, React, Syscalls, TypeScript, 全局配置, 内容协作, 内容安全, 内容管理系统, 创作者信息, 后端开发, 安全可观测性, 安全插件, 富文本评论, 工作流优化, 开源项目, 数据关系, 无头CMS, 版本控制, 用户体验, 自定义视图, 角色访问控制