@chengzhiyi/pi-excalidraw

中文文档
0.1.6发布于 2026/11/08MITES Module零依赖构建来源已验证近 30 天下载 4354

自定义主机 v2 用于 pi- webapp 的 Excalidraw 插件

中文使用文档
文档目录6 节
  1. 在 pi-webapp 中安装和更新
  2. 构建和核查
  3. 生产CSP字体政策
  4. 东道国合并合同
  5. 框架协议
  6. 未完成的一体化接受

@chogzhiyi/pi-excalidraw (英语)

见 前端架构和用户界面谈判 对主机的卡, 页面级参数,生命周期/相容性以及"影子DOM"可行性探测器.

Hosted v2 Excalidraw 软件包. 从 pi-webapp-excalidraw 源头的图表 d87f24e,包括: b01b6bb 持久性/分组变化。 没有主机-私人导入,共享反应,直接检查点写入,工作空间文件系统访问,账户,协作,图像附件或外部嵌入.

在 pi-webapp 中安装和更新

这个 官方可选插件,作为 @chengzhiyi/pi-excalidraw 时间npm。 使用一个 pi-webapp 主机 主机 v2 运行时间: 发布或安装此软件包不会将运行时间添加到旧主机上. 特别是,一个在主机-v2迁移之前的宿主分支/放行并非仅由本套件的出版来兼容.

在兼容的主机中, 打开 插件,找到官员 缩略图 牌,选择 安装,则 启用。在安装前可以不下载编辑器或字体而列出卡片。 已发布的软件包已包含编辑器,React,字体等浏览器资产;终端用户不构建或安装此寄存器的开发依赖. 不要在主机的根目录中安装依赖性,以替代插件管理器.

使用 检查更新 和为独立插件更新提供更新动作。 兼容软件更新也同步已安装的官方插件;它们不会安装缺失的插件或可重新启用的已禁用插件. 没有可配置的更新政策选择器 。 版本相容性,完整性检查和成功的检查站同步仍然被激活.

打开编辑器默认推迟版本切换. 关闭并应用待更新, 或明确选择 更新并重新打开 在审查了本地撤销/重置历史的警告后 。 只替换插件的视图/运行时间:保留主机页面和代理会议. 不要将下载、注册标记或已上演的 npm 包解释为激活成功的证据 .

禁用或卸载保留用户工作空间 .excalidraw 文档和回收数据。 未保存的检查站和浏览器备份是恢复辅助工具,而不是对明确保存的工作空间文件的替换. 在升级前保存重要的图纸 。 失败的保存或生命周期确认必须浮出水面,而不是被刷新或强制覆盖所绕过.

第一个出版后文档补丁只修改了这些指令;它并不声称有新的编辑功能. 发布接受应该通过相容的主机安装两个实际npm版本并验证相相容的/即时更新行为,保存绘图数据并保留主机/会场身份. 仅凭地方档案装置并不能证明公共登记的最新情况.

构建和核查

使用节点24从这个包中运行(带有变换型支持的节点22也用于测试). 构建依赖性和浏览器的测试依赖性被明确固定在 package.json. React/ReactDOM,编辑码,懒散块,地块,CSS,字体和通知被运入内部 dist; 存在着 没有安装运行时间依赖关系。 。 。 .

node scripts/build.mjs
node --experimental-transform-types --test test/*.test.ts test/*.test.mjs
../../node_modules/.bin/tsc --noEmit
node test/frame.browser.mjs
node scripts/independent-build.mjs
node scripts/verify.mjs
node test/csp.browser.mjs

independent-build 复制已解析、版本检查的构建包关闭(保留嵌入版本)到 ../../artifacts/independent-build,重建那里,检查每一个重建输入 realpath 仍然留在目录。 它不安装软件包或联系登记处. verify 用途 pnpm pack,验证每个资源摘要/大小和每个显示的条目,将精确的归档提取到固定节点模块并导入/运行其后端。 未进行 npm 安装/ 发布 。 新的注册系统安装/冻结工作空间锁文件更新不属于这种离线核查的一部分.

生产CSP字体政策

Excalidraw 0.18: 完整的原 WOFF2 unicode-range 分区被嵌入而不用运行 JS/WASM glyph 子集. 这保持了甘油质量和原生出口,但增加了SVG的尺寸;一个控制台信息信息使政策明确. 字体 URL 适配器去除上游 CDN回落,需要本地资产路径. 依赖设施或主机CSP均不作修改;否 unsafe-eval 或者说 wasm-unsafe-eval 需要时间。 上游漂流失败 建设审查.

test:csp 提取真实 verify tgz,检查每个表文摘要,为HTTP上的资源提供精确的制作主机-资产CSP,并练习了中文工具缩略图和本地编辑PNG/源代码下载. 它宣称字节-精确嵌入分区,浏览器字体解码,以及零页出错,CSP违规,控制台出错或外部请求. 源存储器的 packages/excalidraw/CSP-VERIFICATION.md 记录核查和限制(也与开发文物分开提供).

东道国合并合同

  • 以套件名称识别此插件 。 特征是 package.json.piWebapp; API 2, 运行时协议 1, schema 1. 资源路径相对于软件包,包括 ./dist/。 。 。 . resources.json 列出除自己之外所有已发送的文件;主机必须检查其信任的档案/包出处。 不披露任意的软件包目录 .
  • 导入 dist/runtime.js电话 createRuntime(ctx)。 。 。 . describe 返回六个工具描述符及其 action; 工具和 UI 动作都输入 invoke. 主机用品经认证的范围和生成,使经纪人进入 援引,并序列化/栅栏生成变化。 不相信iframe 提供的会话/ cwd .
  • 一个Schema-1 checkpoint 每个插件/ 工作空间/ 会话存储器的状态记录 {drafts, focused}. 存储修订和域修订草案是独立的. 新状态使用预期 修订 0; 第1回修改为 1. 每个引用重装状态; 写入 CAS 不自动重写 。 范围从未被编码入 ASCII 密钥 .
  • legacy.read {} 返回旧范围 {drafts, focused} 或无效。 主机解决遗留插件 ID @pi-webapp/diagrams,读取旧的草稿信封/焦点,并返回范围检查点。 插件在 CAS 导入前验证所有数据; 保留旧文件不动 。 无效的数据是一个错误,绝不是空状态重置 .
  • 工作空间经纪人处理路径封隔/连锁防御,边框文本读取,散开,锁接,不取而代之的创建和生成的栅栏紧接在犯罪前. 插件只允许相对 .excalidraw 路径和发送 expectedHash: null 用于保存/新建文件。 它从不重复冲突 覆盖.
  • 成功的工作空间承诺以及失败的状态 CAS 可以离开已执行的文件,但其检查点没有更新 。 错误被浮出水面;不要默默地重试保存或撤回索赔。 主机的散列/封列仍然具有权威性;检查/重新打开文件进行调节.
  • 可选域错误序列化 error.status 财务报告和审定财务报表 error.reason 在RPC回复中(此处引入补充协议字段). 409 (一) 需要为陈旧的候选人/初始化处理; 404 + 键 diagram_unavailable 保持备份并停止投票. code编号 :message 保持不变并兼容.

框架协议

前端显示的条目都指向 dist/frame.html. 供应 URL 参数 parentOrigin, (中文(简体) ), pluginId, (中文(简体) ), generation, (中文(简体) ), mountId发送 {type:'pi:hosted:connect', protocol:1, pluginId, generation, mountId} 和一个信件端口 来源/窗口。错误的身份/生成/来源/来源被忽略;只有一个连接被接受。 这是域/生命周期隔离,而不是敌对的密码沙盒.

主机 RPC 方法 : describe, (中文(简体) ), initialize(HostedViewMount), (中文(简体) ), update, (中文(简体) ), flush, (中文(简体) ), freeze, (中文(简体) ), restore, (中文(简体) ), dispose。会话约束在初始化后不能更改。 工具更新为 {call:{text}, result:{blocks,isError?}, running}; 部分参数字符串保留流缩略图。 UI 调用主机 action {action,input}, (中文(简体) ), openPanel {kind,contentId,title},以及 changed {dirty,busy}; RPC 运输也支持 sendMessage 财务报告和审定财务报表 abort 没有打开另一个作曲家.

平整出每个挂起的帧而不只是控制器:每个iframe拥有自己的React/模型域. Flush 同步每个可用的脏模型,并在组成,指针交互,本土文本/多块编辑,再大小,旋转或突变时拒绝成功. 冻结返回 {mount, undoClearedOnReopen:true} 冲洗后; 仅恢复接受同一会话。 持续的状态和明确的浏览器备份恢复内容, 非本地撤消历史。主机在默认情况下应该等待编辑器关闭;立即重新打开必须显示一个已取消的历史清除警告。 不要将 RPC 超时视为成功的冲出/ 冻结 .

原生菜单保留了导入/本地保存/出品/PNG,中文地块,背景/主题,组和编辑. 工作空间 Ctrl/Cmd-S 仍为单独的散列保护. 现有候选人需要明确接受/拒绝,手编辑使旧候选人无效,新的未被触及的场景只初始化一次. 原始缩略图和本地备份保留到替换/回收决定。 撤销卸载 React,取消模型定时器/预览订阅/下載 URL,并回复后关闭端口.

未完成的一体化接受

真正的主机启用/失效/开关/重开/热上等,经过认证的经纪人范围跨真正的主机进程隔离,磁盘-锁/同声/fincing种族行为,旧的盘上信封集合,以及实际的最终用户警告UX仍然是母机集成的责任. 测试使用真正的跨原生iframe和原生编辑器,并配有内存主机经纪人固定. 这里的浏览器覆盖不能取代主机端到端套件或详尽的PNG/菜单回归检查.

版本与发布记录

@chengzhiyi/pi-excalidraw 共发布 8 个版本,首次发布于 2026/10/25;过去 12 个月发布了 8 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
0.1.6latest2026/11/081 天前
0.1.52026/11/053 天前
0.1.42026/11/035 天前
0.1.32026/10/2910 天前
0.1.22026/10/2811 天前
0.1.12026/10/2515 天前

关于 @chengzhiyi/pi-excalidraw 的常见问题

@chengzhiyi/pi-excalidraw 是什么?

自定义主机 v2 用于 pi- webapp 的 Excalidraw 插件

如何安装 @chengzhiyi/pi-excalidraw?

在项目目录运行 npm install @chengzhiyi/pi-excalidraw,或使用 pnpm add / yarn add / bun add。

@chengzhiyi/pi-excalidraw 支持 TypeScript 吗?

该包的 package.json 没有声明类型入口。需要类型提示时,可以在 npm 上查找社区维护的 @types/chengzhiyi__pi-excalidraw 是否存在。

@chengzhiyi/pi-excalidraw 支持 ESM 还是 CommonJS?

以 ES Module 形式发布,推荐使用 import 引入。在 CommonJS 项目中,Node.js 20.19+ / 22.12+ 可以直接 require() 不含顶层 await 的 ES Module,更早的版本需要改用动态 import()。

@chengzhiyi/pi-excalidraw 可以商用吗?

@chengzhiyi/pi-excalidraw 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@chengzhiyi/pi-excalidraw 的下载量有多少?

根据 npm 官方下载统计,@chengzhiyi/pi-excalidraw 在 2026/10/10 – 2026/11/08 这 30 天内被下载 4,354 次,日均约 145 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@chengzhiyi/pi-excalidraw 还在维护吗?

最新版本 0.1.6 发布于 2026/11/08(1 天前);至今共发布 8 个版本,其中过去 12 个月发布了 8 个;首次发布于 2026/10/25。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。