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, 版本控制, 用户体验, 自定义视图, 角色访问控制