尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
Docs 如何构建不含 GPL 组件的 MIT 合规前端镜像(PUBLISH_AS_MIT)
Docs 如何构建不含 GPL 组件的 MIT 合规前端镜像PUBLISH_AS_MIT【免费下载链接】docsDocs is an open-source text editor: web-native, made for real-time collaboration, cleanly structured documents and sub-documents with full ownership of your data. Built to scale with Django and React.项目地址: https://gitcode.com/GitHub_Trending/docs150/docsDocs 主项目以 MIT 许可发布见 LICENSE 中 License 一节的说明但部分高级功能依赖 BlockNote 的 XL 系列包这些包是 GPL 许可、与 MIT 不兼容。如果你的分发形态要求整个产物保持 MIT 合规就需要在构建前端时用PUBLISH_AS_MIT把这几个包从产物中剔除。README.md的 Self-hosting 一节明确给出了这一做法PUBLISH_AS_MITtrueThis builds an image of Docs without non-MIT features.构建一个不含非 MIT 功能的 Docs 镜像。本文给出两条按文档可执行的构建路径Docker 构建镜像和 yarn 直接构建以及如何核对构建结果。PUBLISH_AS_MIT 会移除哪些包documentation/env.md 的 impress-frontend image 一节列出了与 MIT 许可不兼容的包xl-docx-exporterGPLxl-pdf-exporterGPLxl-multi-columnGPL。对应到产品功能就是 DOCX/PDF 导出和多栏布局README.md在警告框中举的例子正是 Export as PDF。PUBLISH_AS_MIT的默认值是trueenv.md 中该选项的默认值列即默认构建产物就是 MIT 合规的。需要注意官方 CI 构建发布镜像时是显式传了PUBLISH_AS_MITfalse的见 .github/workflows/ghcr.yml 和 .github/workflows/docker-publish.yml 中的build-args仓库自带的compose-e2e.yml与开发用compose.ymlfrontend-development服务同样传false。也就是说官方发布镜像和开发环境都是全功能版需要 MIT 合规产物时必须自己构建。路径一用 Docker 构建生产前端镜像PUBLISH_AS_MIT在 src/frontend/Dockerfile 的impress-builder阶段以ARG接收并转成 Next.js 的NEXT_PUBLIC_PUBLISH_AS_MIT环境变量后执行yarn buildARG PUBLISH_AS_MIT ENV NEXT_PUBLIC_PUBLISH_AS_MIT${PUBLISH_AS_MIT} RUN yarn build因此构建命令按 env.md 给出的形式在仓库根目录Dockerfile 的 COPY 路径./src/frontend/...都相对于仓库根Compose 文件也统一使用context: .执行docker build -f src/frontend/Dockerfile --target frontend-production --build-arg PUBLISH_AS_MITtrue docs-frontend:latest说明--target frontend-production是最终运行阶段nginxinc/nginx-unprivileged:alpine3.23把构建产物复制到/app并由 nginx 提供--build-arg只影响 builder 阶段的yarn build。env.md 中的官方示例命令写的是--build-arg PUBLISH_AS_MITfalse那是为了演示这个 build-arg 的用法要产出 MIT 合规镜像就传true与默认值一致。如果你要构建的是开发镜像target 换成impress-devcompose.yml中开发服务用的就是它且该服务固定传了PUBLISH_AS_MIT: false因为开发环境需要测试全部功能——env.md 也说明.env.development中该变量为false。路径二不用 Docker直接用 yarn 构建env.md 给出第二条路径构建前端应用时可以编辑 src/frontend/apps/impress/.env也可以用NEXT_PUBLIC_前缀的环境变量覆盖。生产构建用的.env中已经是NEXT_PUBLIC_PUBLISH_AS_MITtrue所以直接在仓库中执行生产构建即为 MIT 合规产物cd src/frontend/apps/impress NODE_ENVproduction yarn build如果你需要临时改成全功能版例如验证 GPL 功能行为按 env.md 的示例用环境变量覆盖cd src/frontend/apps/impress NODE_ENVproduction NEXT_PUBLIC_PUBLISH_AS_MITfalse yarn build.env.development与.env.test中该值均为false本地开发与测试默认全功能不需要改动。构建结果如何核对文档没有给出专门的检查命令但加载机制在前端源码里是明确的这些模块只有在NEXT_PUBLIC_PUBLISH_AS_MIT false时才会被打包进应用。以导出功能为例src/frontend/apps/impress/src/features/docs/doc-export/hooks/index.ts 的逻辑是let modulesExport undefined; if (process.env.NEXT_PUBLIC_PUBLISH_AS_MIT false) { modulesExport { ...useExportAGPL, }; }AI 模块doc-editor/components/AI/index.ts和多栏模块doc-editor/components/xl-multi-column/index.ts也是同样的条件加载。因此按文档描述的成功条件是PUBLISH_AS_MITtrue构建出的镜像/应用不含DOCX/PDF 导出、多栏布局以及这些 AI 入口——即 an image of Docs without non-MIT features。反过来功能界面上这些入口消失就是构建生效的表现而不是构建失败。边界与许可提醒如果你在生产环境使用PUBLISH_AS_MITfalse即保留 GPL 包的全功能镜像env.md 明确警告make sure you fulfill your BlockNote licensing or subscription obligations确保你履行 BlockNote 的许可或订阅义务。各文档对 XL 包的许可表述存在出入UPGRADE.md 3.3.0 条目写的是 licenced under AGPL-3.0而README.md与documentation/env.md写的是 GPL。两者指向的是同一组 XL 包具体许可文本以包自带的 LICENSE 为准env.md 中附了 BlockNote 仓库各包 LICENSE 的链接。本变量只作用于前端构建。Docs 的部署方式Kubernetes、Docker Compose、Scalingo 等见 documentation/installation/README.md选择哪种方式不影响上述构建参数的用法。【免费下载链接】docsDocs is an open-source text editor: web-native, made for real-time collaboration, cleanly structured documents and sub-documents with full ownership of your data. Built to scale with Django and React.项目地址: https://gitcode.com/GitHub_Trending/docs150/docs创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
RELATED

相关推荐

Go协程池实现与性能优化全解析

Go协程池实现与性能优化全解析

1. Go Routine调度机制深度解析Go语言的并发模型基于Goroutine实现,这种轻量级线程由Go运行时(runtime)管理,其调度机制是理解协程池实现的基础。Go调度器采用GMP模型,包含三个核心组件:G(Gorou…

📅 2026/9/14 17:08:10
WLED 怎么给 HUB75 矩阵屏选择并烧录对应的构建环境?

WLED 怎么给 HUB75 矩阵屏选择并烧录对应的构建环境?

WLED 怎么给 HUB75 矩阵屏选择并烧录对应的构建环境? 【免费下载链接】WLED Control WS2812B and many more types of digital RGB LEDs with an ESP32 over WiFi! 项目地址: https://gitcode.com/GitHub_Trending/wl/WLED WLED 支持通过 I2S 接口驱动 HUB75…

📅 2026/9/14 17:08:10
如何在 Python 或 TypeScript 应用中直接调用 Cua Driver SDK 而不经守护进程?

如何在 Python 或 TypeScript 应用中直接调用 Cua Driver SDK 而不经守护进程?

如何在 Python 或 TypeScript 应用中直接调用 Cua Driver SDK 而不经守护进程? 【免费下载链接】cua Scale computer-use 2.0 with open-source drivers, cross-OS fleets, and benchmarks for training, evaluation, and data generation. 项目地址: https://git…

📅 2026/9/14 17:08:10
MORE NEWS

更多资讯

📰

Flutter与OpenHarmony跨平台开发实战指南

1. 项目背景与核心价值Flutter作为谷歌推出的跨平台开发框架,近年来在移动应用开发领域获得了广泛关注。而OpenHarmony作为开源鸿蒙操作系统,正在构建自己的生态系统。将Flutter与OpenHarmony结合,可以实现"一次开发,多端部署…

📰

ms-swift GRPO 训练实战指南:算法原理、Colocate/Async 双模式部署与参数详解

ms-swift GRPO 训练实战指南:算法原理、Colocate/Async 双模式部署与参数详解 【免费下载链接】swift Use PEFT or Full-parameter to CPT/SFT/DPO/GRPO 600 LLMs (Qwen3.6, DeepSeek-V4, GLM-5.1, InternLM3, Llama4, ...) and 300 MLLMs (Qwen3-VL, Qwen3-Omni, I…

📰

Envoy 降级端点(Degraded Endpoints):负载溢出机制与 detect_degraded_hosts 源码解析

Envoy 降级端点(Degraded Endpoints):负载溢出机制与 detect_degraded_hosts 源码解析 【免费下载链接】envoy Cloud-native high-performance edge/middle/service proxy 项目地址: https://gitcode.com/GitHub_Trending/en/envoy 本…

📰

LiveKit Agents 框架实战指南:构建、运行与测试实时语音 AI 智能体

LiveKit Agents 框架实战指南:构建、运行与测试实时语音 AI 智能体 【免费下载链接】agents A framework for building realtime voice AI agents 🤖🎙️📹 项目地址: https://gitcode.com/GitHub_Trending/agen/agents L…

📰

商丘做建设网站的公司3个最佳实践解决网站被黑

商丘做建设网站的公司3个最佳实践解决网站被黑 网站被黑挂马,后台密码泄露,首页瞬间变成赌博链接,这种绝望感每个运维都懂。在商丘本地,很多中小企业找 商丘做建设网站的公司…

📰

数据库技术演进:从关系型到AI原生的关键突破

1. 数据库技术演进的三个关键阶段数据库技术在过去半个世纪经历了三次重大范式转移,每次变革都深刻改变了我们存储和处理数据的方式。作为从业15年的数据库架构师,我亲眼见证了这些技术浪潮如何重塑整个行业。1.1 关系型数据库的黄金时代1970年Edgar F. …

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬