
Focalboard 插件全指南在 Mattermost 中安装、启用与参与社区贡献【免费下载链接】focalboardFocalboard is an open source, self-hosted alternative to Trello, Notion, and Asana.项目地址: https://gitcode.com/GitHub_Trending/fo/focalboardFocalboard 是一个开源的、自托管的项目管理工具可作为 Trello、Notion 和 Asana 的替代方案。本文基于仓库docs/index.md这份插件文档系统讲解 Focalboard 插件在 Mattermost 自托管实例中的安装与启用流程并完整梳理从克隆源码、本地构建到提交 Pull Request 的社区贡献路径。读完本文你将掌握插件的完整生命周期操作并能借助仓库内配套的开发者指南、贡献规范与核心提交者制度顺利启动自己的首个贡献。插件文档与项目现状仓库中的 docs/index.md 是 Focalboard 插件的入口文档面向两类读者想在自托管 Mattermost 中使用该插件的用户以及希望向项目提交代码的开发者。文档开篇即欢迎读者检视项目并参与代码贡献。需要注意项目当前状态根据 docs/README.md 与 README.md 中的声明自 2023 年 9 月 15 日起Mattermost 团队不再评审或合并该仓库的 Pull RequestFocalboard 插件转为完全由社区支持仓库被开放源码并长期提供给社区继续开发与贡献。如果希望寻找官方维护的 Mattermost Boards 插件应前往独立的 mattermost-plugin-boards 仓库。本文所述安装、构建与贡献流程均以当前仓库内的代码和文档为依据。在 Mattermost 中安装 Focalboard 插件Focalboard 插件以自定义插件Custom Plugin的形式运行在 Mattermost 服务器上。官方文档指向 Mattermost 开发者文档中使用与管理插件一节核心流程如下在 Mattermost 服务器配置中开启自定义插件上传能力。在config.json中设置PluginSettings EnableUploads为true通过System Console系统控制台 Plugins Management插件管理上传插件压缩包上传后按需启用插件。Mattermost 对上传的插件包格式有明确要求它必须是.tar.gz压缩包且根目录下包含plugin.json清单文件与插件可执行文件。Focalboard 插件的构建产物即位于mattermost-plugin/dist目录下的.tar.gz文件可将其直接上传。构建自己的插件版本如果你需要构建自己的 Focalboard 插件版本docs/focalboard-dev-guide.md 给出了完整步骤。首先 Fork 仓库并克隆到本地然后安装依赖# 首次搭建环境时安装依赖 cd mattermost-plugin/webapp npm install --no-optional cd ../.. make prebuild接着构建插件# 构建 WebApp make webapp # 构建插件 cd mattermost-plugin make dist构建完成后mattermost-plugin/dist目录下即生成可直接上传的.tar.gz插件包。仓库根目录的 Makefile 中定义了这些构建目标的实现细节prebuild目标会在webapp目录执行npm installwebapp目标执行npm run pack即生产模式下的 webpack 打包见 webapp/package.json 中的pack脚本server目标则使用go build编译带json1 sqlite3构建标签的 Go 服务端并注入构建号、构建日期与 Git 哈希作为链接标志。上传插件到服务器插件构建完成后有两种上传途径手动上传在 Mattermost 的config.json中设置PluginSettings EnableUploads为true以开启自定义插件上传进入System Console Plugins Management上传mattermost-plugin/dist目录下生成的.tar.gz包按需启用它。本地部署make deploy如果你在本地运行 Mattermost可以配置后一键自动部署搭建本地 Mattermost 环境确保 Docker 已安装并运行克隆 mattermost-server 与 mattermost-webapp 源码并构建运行make config-reset生成config/config.json编辑该配置文件将ServiceSettings SiteURL设置为http://localhost:8065将ServiceSettings EnableLocalMode设置为true将PluginSettings EnableUploads设置为true添加环境变量MM_SERVICESETTINGS_SITEURL取值与配置中的 SiteURL 一致在 Mattermost 中运行make run-server。随后构建并部署插件make webapp cd mattermost-plugin make deploy启用 Focalboard 插件插件安装完成后启用操作在 Mattermost 的 System Console 中完成导航到Plugins Plugin Management插件 插件管理在插件列表中找到 Focalboard 插件选择Enable启用选项。启用后插件即开始提供服务。如果你希望体验独立于 Mattermost 的 Focalboard 本体可以按 README.md 的方式构建 Personal Server创建包含EXCLUDE_ENTERPRISE1的.env文件执行make prebuild make然后运行./bin/focalboard-server浏览器访问http://localhost:8000即可端口由 config.json 中的port字段配置默认 8000同时该文件还包含dbtype、dbconfig、authMode、enablePublicSharedBoards等运行时参数。贡献前的开发环境搭建进入贡献流程前建议先搭建本地开发环境。docs/dev-tips.md 面向 Focalboard 独立 Personal Server 的开发场景提供了系统化的环境配置方法。安装前置依赖GitWindows 上建议安装 Git for Windows 并使用 git-bash 终端Go编译服务端所需Node.jsv10与 npm构建 WebApp 所需Windows通过 Chocolatey 安装 Mingw64macOS构建 Mac 应用安装 Xcodev12及命令行工具xcode-select --installLinux构建 Linux 应用sudo apt-get install libgtk-3-dev、libwebkit2gtk-4.0-dev、autoconf dh-autoreconf。从终端构建并运行Fork 并克隆源码后构建与运行服务端make prebuild make ./bin/focalboard-server然后打开浏览器访问http://localhost:8000端口由config.json配置。服务运行期间可在另一个终端用make webapp单独重建 WebApp刷新浏览器即可看到改动。VSCode 开发调试循环文档推荐了一套 VSCode 下的高效开发-测试循环在项目目录打开 bash 终端运行make prebuild安装 npm 依赖当webapp/package.json依赖变化时需重跑运行cd webapp npm run watchdev让 WebApp 在文件变更时自动构建安装 Go 与 ESLint 的 VSCode 扩展按 F5 选择Go: Launch Server启动调试浏览器打开http://localhost:8000。WebApp 调试npm run watchdev构建的开发包包含从 JS 到 TypeScript 的 source map可在 Chrome 开发者工具CmdAltI/CtrlAltI的 Sources 面板按CmdP跳转源码文件。文档建议从BoardPage.tsx的render()函数打断点入手。服务端调试在 VSCode 中启动服务后即可调试 Go 代码可从 server/api/api.go 中的handleGetBlocks()打断点开始观察数据是如何被检索的。国际化i18nWebApp 使用intl.formatMessage处理本地化字符串。新增或修改字符串后在webapp目录运行npm run i18n-extract重建webapp/i18n/en.json该脚本定义在 webapp/package.json 中翻译内容存储在其他语言的 json 文件中例如西班牙语对应es.json。数据库默认数据存储在 SQLite 数据库focalboard.db中可直接用sqlite3 focalboard.db查看和编辑。单元测试提交代码前建议运行make ci该目标模拟 CI 流水线见 Makefile包含服务端单元测试make server-test覆盖 sqlite、mysql、mariadb、postgres 四种存储后端其中后三者通过 docker-testing 目录下的 docker-compose 配置拉起测试数据库容器WebApp ESLint 检查cd webapp; npm run checkWebApp 单元测试npm run testJestWebApp UI 测试cd webapp; npm run cypress:ciCypress 端到端测试测试用例位于 webapp/cypress/integration。插件贡献流程详解第一步Fork 并克隆阅读配套文档Fork Focalboard 仓库并克隆到本地按 README 中的步骤完成构建阅读 Focalboard 开发者指南 与 开发者技巧与提示 快速上手若目标是插件本身直接参照开发者指南中的构建与上传章节。第二步认领 Help Wanted 工单在 GitHub 上查找标记为 Up for grabs可认领的 Help Wanted 工单在工单下评论声明你正在处理以便核心贡献者将 issue 分配给你如果要做的事情没有对应工单参见 无工单贡献说明。根据 docs/contributions-without-ticket.md缺少对应Help Wanted工单的小型修正与改进同样受欢迎通常少于 20 行代码变更、且对现有行为改动较小的 PR例如修复帮助文本格式错误、修正 Makefile 中的拼写、修复 Webhook 编辑界面失效的取消按钮等会被接受。超过 20 行的改动应由核心团队开具Help Wanted工单无工单的 PR 若显著改变行为或用户预期核心提交者有权拒绝。第三步提交 Pull Request提交 PR 前逐项对照 贡献清单已签署贡献者许可协议CLA以便加入批准贡献者名单工单是所贡献项目的 Help Wanted issue否则走 无工单流程代码经过充分测试包含相应的单元测试并完成手动测试如涉及 UI 字符串已纳入本地化文件webapp/i18n/en.json并在webapp目录运行npm run i18n-extract生成新字符串PR 从你的 fork 提交到main分支PR 标题以 GitHub 工单 ID 开头例如[GH-394]并填写摘要模板。提交后自动化构建必须通过随后 PR 进入 代码评审 环节。第四步经历代码评审docs/code-review.md 规定了三方视角的评审流程社区贡献者提交 PR 后等待被分配评审人预计 5 个工作日内有至少一位评审人与你互动若超时可在 PR 中 提及评审人。评审人要求修改后你的 PR 会暂时移出评审队列处理完问题后再次 提及评审人使其回到队列。等待评审者耐心等待即可无需反复提醒修改完成后重新指派评审人以重新进入队列。核心提交者应在 2 个工作日内与作者互动每日检查待办评审以免阻塞作者优先评审早期里程碑绝不仓促评审可反复要求修改直至所有问题解决不要只留评论而不做接受/拒绝决定合并前确认没有未解决的变更请求。目前所有产品变更都需经 核心提交者 评审。核心提交者是拥有仓库合并权限的维护者负责评审 PR、培育开发者社区并引导 Focalboard 的技术愿景名单收录在 docs/core-committers.md 中。遇到问题如何求助文档明确列出了获取帮助的渠道社区频道可在 Mattermost 社区服务器的公开 Focalboard 频道中找到项目成员提交 Bug可通过 GitHub issue 模板提交任何遇到的问题发起讨论可通过 GitHub Discussions 开启技术讨论。这些渠道共同构成了插件用户与贡献者的支持网络无论是安装、启用还是贡献过程中遇到的问题都可以在其中获得社区协助。结语从安装、启用 Focalboard 插件到本地构建自定义版本再到遵循工单、清单、评审的完整流程提交代码本文完整覆盖了插件生命周期的每个环节。仓库内的 插件开发者指南、开发者技巧与提示、贡献清单 与 代码评审规范 等文档互为补充构成了一套可操作的开发与协作体系。在项目转入社区维护的当下理解这套流程对继续推动 Focalboard 的发展尤为重要。【免费下载链接】focalboardFocalboard is an open source, self-hosted alternative to Trello, Notion, and Asana.项目地址: https://gitcode.com/GitHub_Trending/fo/focalboard创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考