Penpot:开源设计协作神器,Figma的最佳替代方案
背景
说到 UI 设计工具,Figma 无疑是行业标准。但 Figma 存在一些问题:
- 价格昂贵:专业版每个编辑者 75/人/月
- 网络问题:国内访问经常卡顿,同步不稳定
- 数据隐私:设计文件存储在第三方服务器
- 格式锁定:使用自有文件格式,导出受限
当 Adobe 收购 Figma 的消息传出后,许多设计师和开发者开始寻找开源替代方案。
Penpot 应运而生——这是一款开源的 Web UI/UX 设计工具,专为设计师和开发者协作设计,在 GitHub 上已获得 37K+ Star。
什么是 Penpot?
Penpot 是一款开源的设计与原型制作平台,由 Kaleidos 公司开发和维护。
核心特性:
| 特性 | 说明 |
|---|---|
| 开源免费 | MPL 2.0 许可证,完全免费 |
| Web 端运行 | 基于浏览器,无需安装,跨平台 |
| SVG 标准 | 基于开放 Web 标准 (SVG),导出方便 |
| 实时协作 | 团队成员同时编辑,即时同步 |
| 组件系统 | 创建可复用的设计组件和图标库 |
| 原型交互 | 支持页面跳转、过渡动画等交互原型 |
| 自托管 | 可部署在自己的服务器,数据完全可控 |
GitHub 地址: github.com/penpot/penp…
官网: penpot.app
在线使用: design.penpot.app
Penpot vs Figma
| 对比项 | Penpot | Figma |
|---|---|---|
| 价格 | 完全免费 | $45-75/人/月 |
| 开源 | ✅ MPL 2.0 | ❌ 闭源 |
| 部署方式 | Web / 自托管 | 仅云服务 |
| 文件格式 | SVG, JSON (开放格式) | 自有格式 |
| 平台 | 浏览器全平台 | 浏览器/桌面端 |
| 网络依赖 | 可完全离线自托管 | 必须联网 |
| 插件生态 | 发展中 | 成熟丰富 |
| 原型交互 | ✅ 支持 | ✅ 支持 |
| 组件系统 | ✅ 支持 | ✅ 支持 |
| 开发 handoff | CSS/JSON 导出 | 代码片段复制 |
Penpot 的独特优势:
- 数据完全可控,可自托管
- 基于开放标准,不被锁定
- 设计师和开发者可以协作处理开放格式
- 完全免费,无使用限制
快速上手
方式一:在线使用
直接访问 design.penpot.app,使用邮箱注册即可免费使用。
方式二:Docker 部署(推荐)
# 创建目录
mkdir penpot && cd penpot
# 下载 docker-compose.yml
curl -L https://raw.githubusercontent.com/penpot/penpot/main/docker/docker-compose.yml -o docker-compose.yml
# 启动服务
docker-compose up -d
# 访问
# http://localhost:9001
方式三:一键部署到 Sealos
# 使用 Sealos 一键部署
# 访问 https://cloud.sealos.run
# 输入邀请码: oUJyhzghFE
# 选择 Penpot 模板即可
基础界面介绍
Penpot 的界面与 Figma 类似:
┌──────────────────────────────────────────────────────────┐
│ 顶部工具栏 (工具、缩放、分享、团队管理) │
├──────────┬───────────────────────────────────────────────┤
│ │ │
│ 左侧 │ 画布区域 │
│ 侧边栏 │ (设计工作区) │
│ │ │
│ - 资产 │ │
│ - 组件 │ │
│ - 页面 │ │
│ │ │
├──────────┴───────────────────────────────────────────────┤
│ 右侧属性面板 (位置、大小、颜色、样式、交互) │
└──────────────────────────────────────────────────────────┘
核心功能详解
1. 矢量设计工具
Penpot 提供完整的矢量设计功能:
绘图工具:
| 工具 | 用途 |
|---|---|
| 矩形 | 创建方形和矩形元素 |
| 椭圆 | 创建圆形和椭圆 |
| 文字 | 添加文本和排版 |
| 路径 | 自由绘制矢量形状 |
| 钢笔 | 贝塞尔曲线绘制 |
| 铅笔 | 手绘风格路径 |
| 图片 | 导入位图图像 |
排版功能:
- 支持 Google Fonts 字体库
- 丰富的文本样式(字重、字距、行高、对齐)
- 文字图层遮罩
- 多语言支持
2. 组件系统
Penpot 的组件系统非常强大:
创建组件:
1. 选择设计元素
2. 右键 → "创建组件" (快捷键: Ctrl+Alt+K)
3. 输入组件名称
4. 组件出现在"资产"面板的"组件"区域
组件变体:
1. 创建多个组件变体
2. 选中所有变体
3. 右键 → "创建组件组"
4. 在设计时可通过下拉切换变体
组件状态:
支持为组件设置不同状态:
- Default(默认)
- Hover(悬停)
- Active(按下)
- Disabled(禁用)
- Focused(聚焦)
3. 样式系统
Penpot 支持多种可复用样式:
颜色样式:
1. 创建颜色
2. 在"资产"面板添加"颜色"
3. 命名并保存
4. 在设计中应用
文字样式:
1. 设置文字属性(字体、大小、颜色等)
2. 在"资产"面板添加"文字样式"
3. 命名并保存
4. 统一修改所有应用此样式的文字
描边与填充样式:
- 可复用的描边样式
- 可复用的渐变填充
- 可复用的投影效果
4. 原型交互
Penpot 支持创建交互原型:
添加交互:
1. 选中元素
2. 右侧面板 → "交互"选项卡
3. 点击"添加交互"
4. 配置触发条件和动作
交互类型:
| 交互 | 说明 |
|---|---|
| 点击 | 元素被点击时触发 |
| 悬停 | 鼠标悬停时触发 |
| 按下 | 鼠标按下时触发 |
| 拖动 | 拖动元素时触发 |
| 加载时 | 页面加载时触发 |
| 定时器 | 延迟后触发 |
动作类型:
| 动作 | 说明 |
|---|---|
| 打开页面 | 跳转到指定页面 |
| 打开链接 | 在新标签打开 URL |
| 返回 | 返回上一页 |
| 切换可见性 | 显示/隐藏元素 |
| 切换组件状态 | 切换组件变体 |
过渡动画:
| 动画 | 说明 |
|---|---|
| 淡入/淡出 | 透明度变化 |
| 滑入/滑出 | 位置移动 |
| 缩放 | 大小变化 |
| 即时 | 无动画 |
5. 团队协作
Penpot 提供完整的团队协作功能:
邀请团队成员:
1. 点击右上角"分享"
2. 输入成员邮箱
3. 选择角色权限
4. 发送邀请
角色权限:
| 角色 | 权限 |
|---|---|
| Owner | 完全控制,可删除团队 |
| Admin | 管理成员和项目设置 |
| Editor | 可编辑项目 |
| Viewer | 仅可查看 |
实时协作:
- 团队成员同时编辑
- 头像显示当前编辑者
- 即时同步,无冲突
6. 开发 Handoff
Penpot 专为开发者提供便利:
导出代码:
1. 选中设计元素
2. 右侧面板 → "代码"选项卡
3. 查看 CSS 属性
4. 点击复制按钮
导出格式:
| 格式 | 用途 |
|---|---|
| SVG | 矢量图形,可直接用于 Web |
| PNG | 位图图像 |
| JSON | 设计数据,可程序化处理 |
| CSS | 样式代码片段 |
开发者视角:
- 右侧面板显示完整 CSS 属性
- 可查看颜色 HEX/RGB 值
- 可查看字体和字号
- 可复制 SVG 代码
自托管部署
Docker Compose 完整配置
version: '3.8'
services:
penpot:
image: penpotapp/penpot:latest
container_name: penpot
restart: unless-stopped
ports:
- "9001:9001"
environment:
- PENPOT_FLAGS=enable-registration enable-smtp
- PENPOT_DATABASE_URI=postgresql://postgres:penpot@db:5432/penpot
- PENPOT_REDIS_URI=redis://redis:6379/0
- PENPOT_SECRET_KEY=your-secret-key-here
- PENPOT_ADMIN_EMAIL=admin@example.com
- PENPOT_SMTP_HOST=smtp.example.com
- PENPOT_SMTP_PORT=587
- PENPOT_SMTP_USER=smtp_user
- PENPOT_SMTP_PASSWORD=smtp_password
- PENPOT_SMTP_FROM=penpot@example.com
depends_on:
- db
- redis
db:
image: postgres:15-alpine
container_name: penpot-db
restart: unless-stopped
environment:
- POSTGRES_USER=postgres
- POSTGRES_PASSWORD=penpot
- POSTGRES_DB=penpot
volumes:
- postgres_data:/var/lib/postgresql/data
redis:
image: redis:7-alpine
container_name: penpot-redis
restart: unless-stopped
volumes:
- redis_data:/data
volumes:
postgres_data:
redis_data:
# 启动服务
docker-compose up -d
# 首次访问需要创建管理员账号
# http://localhost:9001
环境变量说明
| 变量 | 说明 | 必需 |
|---|---|---|
PENPOT_DATABASE_URI | PostgreSQL 连接地址 | ✅ |
PENPOT_REDIS_URI | Redis 连接地址 | ✅ |
PENPOT_SECRET_KEY | 加密密钥(随机字符串) | ✅ |
PENPOT_ADMIN_EMAIL | 管理员邮箱 | ✅ |
PENPOT_FLAGS | 特性开关 | ❌ |
PENPOT_SMTP_* | 邮件服务配置 | ❌ |
实战技巧
技巧1:使用网格系统
1. 右侧面板 → 画布设置
2. 添加网格 (Grid)
3. 设置列数、间距、边距
4. 开启"显示网格"便于对齐
技巧2:快速复制样式
1. 选中元素
2. 按住 Alt 键
3. 拖动到目标元素
4. 样式被复制
技巧3:批量重命名
1. 在图层面板选中多个图层
2. 右键 → "重命名"
3. 输入名称模式,如 "Frame {n}"
4. 批量生成 Frame 1, Frame 2, Frame 3...
技巧4:利用约束布局
1. 选中帧或组件
2. 右侧面板 → "约束" (Constraints)
3. 设置相对父容器的定位
4. 如:固定底部、左右撑满
技巧5:设计系统工作流
1. 创建"设计系统"项目
2. 定义颜色样式、文字样式、组件
3. 在各项目中复用
4. 更新设计系统时,所有引用自动更新
常见问题
Q:Penpot 能否完全替代 Figma?
A:对于大多数设计场景,Penpot 可以满足需求。但 Figma 的插件生态非常成熟,某些专业功能(如高级自动布局)Penpot 还在完善中。建议根据团队具体需求选择。
Q:国内访问速度如何?
A:
- 在线版:可能有卡顿,建议使用自托管
- 自托管:部署在国内服务器访问流畅
Q:设计文件如何迁移?
A:Penpot 支持导入 Figma 的导出文件(需 Figma 导出为 .fig 或 .zip)。
Q:支持哪些浏览器?
A:Chrome、Firefox、Safari、Edge 等现代浏览器。
Q:是否支持离线使用?
A:自托管版本可在内网使用,完全离线。但设计功能本身需要浏览器在线操作。
适用场景
推荐使用:
- 个人设计师和独立开发者
- 小型设计团队
- 需要数据隐私控制的团队
- 追求成本控制的项目
- 有自托管需求的企业
不推荐使用:
- 需要复杂插件生态的场景
- 对高级自动布局有强需求
- 超大规模团队协作
总结
Penpot 用"开源 + Web + 协作"的组合,为 UI 设计提供了一个免费且可自托管的解决方案。
核心优势回顾:
- 完全免费:无任何功能限制
- 开源透明:代码可审计,可定制
- 自托管可控:数据完全在己方服务器
- 开放格式:SVG、JSON 等标准格式
- 开发者友好:内置代码导出,协作顺畅
- 跨平台:浏览器即可使用
对于追求免费、数据可控、不想被锁定的设计师和团队,Penpot 是 Figma 的最佳开源替代选择。
本文由无边界科技技术团队分享,专注软件开发与技术解决方案。
官网:wubianj.com
© 版权归无边界科技所有,版权所有。