首页/新闻资讯/正文详情

SVG-Edit 开发工作流指南:依赖管理、文档构建与 Playwright 测试实战

发布时间:2026/9/27 21:16:45 来源:云帆数科 栏目:资讯中心
SVG-Edit 开发工作流指南:依赖管理、文档构建与 Playwright 测试实战
前端图形学【免费下载链接】svgeditPowerful SVG-Editor for your browser项目地址https://gitcode.com/gh_mirrors/sv/svgedit点击查看免费下载本文围绕 SVG-Edit仓库名svgedit的官方开发文档 docs/Development.md 展开系统梳理该项目从依赖更新、文档构建、编辑器本地启动到单元测试与端到端测试的完整开发流水线。你将掌握 SVG-Edit 提供的全部 npm 脚本的用途与调用时机、测试与覆盖率报告的生成与查看方式并了解这些流程在当前仓库中的真实实现package.json、vite.config.mjs、playwright.config.mjs、scripts/run-e2e.mjs。文档按照重要程度递增排序本文沿用这一脉络先介绍日常辅助脚本再深入测试链路这一最核心的开发环节。版本管理旧版本以子模块形式共存SVG-Edit 在 GitHub Pages 托管的仓库中同时提供master版本与历史版本实现方式是将旧版本以 git submodule 的形式挂载到仓库中。这样绝大多数用户克隆时无需递归拉取子模块但开发者尤其是负责发布的人可能需要npm run submodules总入口内含下面两步。npm run submodules-init非递归初始化子模块。之所以非递归是因为不希望子模块自身再包含各自的 releases 内容——子模块的releases目录只有各版本的子文件夹没有实际内容。npm run submodules-update非递归地拉取并合并变更到master。典型场景是某个未发布版本分支被先行加入后又补充了内容此时需要把增量合并回来。从当前仓库快照看package.json 中的活跃脚本已精简为 vite/vitest/Playwright 体系上述子模块类脚本属于文档描述的完整发布流程组件涉及发布自动化的实现可参考 scripts/publish.mjs 与 scripts/version-bump.mjs。构建与预览文档文档构建会在发布前自动执行但开发阶段也常用于测试期参考npm run build-docs构建文档。当前实现见 package.json为build-docs-remove用rimraf清空docs/jsdoc/与build-docs-create执行jsdoc --pedantic -c docs/jsdoc-config.js src的组合即基于 docs/jsdoc-config.js 对src目录生成 JSDoc 文档。npm run open-docs启动服务器并打开已构建的文档http://localhost:8000/docs/jsdoc/。npm run open-docs-no-start若你已在另一个终端标签页启动了start进程则只需用此命令直接打开文档。npm run build-and-open-docs先构建再打开一步到位。npm run build-and-open-docs-no-start同样跳过服务器启动适合已有start进程在跑的场景。这些*-no-start变体在 SVG-Edit 的脚本设计中反复出现其设计意图是开发服务器是共享资源多个任务文档、编辑器、测试报告可以复用一个已运行的start进程避免端口冲突与重复启动。依赖变更后必须运行的脚本SVG-Edit 将部分devDependencies直接拷贝进仓库与 npm 包而不是打包整个node_modules以便 GitHub 或 npm 托管服务直接运行。因此依赖一旦变化有两类脚本需要跟进npm run copy执行文件拷贝把依赖中的必要文件纳入仓库。当前实现见 scripts/copy-static.mjs——它把src/editor/index.html、xdomain-index.html、iife-index.html、browser-not-supported.*、svgedit.css、images、extensions以及node_modules/pathseg/pathseg.js等拷贝到dist/editor还会在COVERAGEtrue时用istanbul-lib-instrument对 svgcanvas 核心文件common/util.js、core/path.js、core/coords.js、core/recalculate.js、core/clear.js等十余个文件做插桩。npm run license-badges更新许可证徽章其内部又分两步npm run license-badge仅生成包含本项目及dependencies以及被捆绑进仓库/npm 包的devDependencies许可证信息的徽章npm run license-badge-dev仅生成devDependencies的许可证徽章。除非某个依赖的使用条款比较 restrictive不属于通常意义的开放源码否则一般无需过度关注。文档建议在更新依赖时使用npm-check-updates工具并提到仓库通过.ncurc.js配置了不应被升级的包白名单。以上脚本会在发布前自动执行测试徽章与覆盖率徽章则是在测试过程中自动生成的仓库根目录可见 badges/coverage-badge.svg 与 badges/tests-badge.svg无需手动调用。杂项脚本速查脚本用途自动化状态npm run compress-images压缩图片资源。耗时长、无需频繁执行因此不纳入常规准备流程手动npm run remark用 remark 对 Markdown 文件做 lintremark -q -f .当前优先级不高未入自动化npm run lint代码 lint。当前实现为standard .standard 风格npm test前自动执行pretestnpm run eslint-fix自动修复 lint 错误手动npm run prep测试前的准备步骤由npm test内部调用若你平时走npm run test-only不做准备也可按需单独运行npm test内自动npm run rollup编译 ESM 版 svgedit 源码的 Rollup 流程prep内自动其中prep又由两部分组成npm run prep-no-core-rollupnpm run lintnpm run build-html拷贝 ESM 的 HTML 页面并把对 ESM 脚本的引用替换为编译/rollup 后的脚本npm run build-by-config对基于 ESM 的配置文件执行 Rollup 编译。因为用户配置文件负责importsvgedit必须编译成非 ESM 才能运行同时可避免全局变量和额外的 script 标签。npm run rollup编译 ESM 版 svgedit 源码。当前仓库的构建已切换为 Vitevite.config.mjs 中定义了三个 HTML 入口src/editor/index.html、iife-index.html、xdomain-index.html构建输出到dist/editorbuild采用es与iife两种格式分别生成Editor.js与iife-Editor.js。postbuild阶段由 scripts/copy-static.mjs 与 scripts/build-extensions.mjs 完成静态资源与扩展的搬运。从命令行打开 SVG 编辑器即使已有自动化测试手动打开编辑器做实验依然很有价值。SVG-Edit 提供了四种打开方式每种都有-no-start变体用于复用已运行的start进程默认扩展的 ESM 编辑器npm run open。全部扩展的 ESM 编辑器npm run open-all-ext。注意目前该形态没有对应的自动化测试。嵌入式ESM编辑器npm run open-embedded。它会同时运行常规start与start-allow-origin——后者在另一个端口即不同 origin启动独立服务器用于跨源测试嵌入式 API。目前同样没有自动化测试且没有为非 ESM 构建嵌入式编辑器的流程。预编译rolled up版本npm run open-compiled。这是最接近生产环境的形态适合旧的非 ESM 浏览器在 ESM 浏览器中因 HTTP 请求更少而性能更佳。但它要求先运行耗时较长的prep脚本这些 open 脚本不会替你执行因为正常情况下不应直接在编译产物上开发。当前仓库的start脚本为vite dev --host --port 8000 --strictPortprestart钩子会提示svgedit is available at http://localhost:8000/src/editor/index.html生产预览则用start:e2evite preview --port 8000 --outDir dist/editor。运行环境要求见 package.json 的engines字段Node^20.19.0 || 22.12.0。读取与打开测试覆盖率报告测试过程或直接运行npm run instrument会生成 HTML 覆盖率报告可在命令行直接查看或唤起浏览器命令输出形态npm run report命令行文本报告含行号但不含所有行不如 HTML 报告详尽npm run report-summary仅汇总不含行号npm run open-cov打开 HTML 覆盖率报告标注所有行的覆盖状态npm run open-cov-no-start同上但复用已运行的start进程在当前流水线中scripts/run-e2e.mjs 的收尾会执行npx nyc report --reporter text-summary --reporter json-summary将 Playwright 收集的覆盖率以文本摘要与 JSON 摘要形式输出单元测试部分则由 Vitest 的 v8 覆盖率提供见 vite.config.mjs 的test.coverage配置覆盖src/editor/locale.js、MainMenu.js、contextmenu.js及 svgcanvas 的paint.js、dataStorage.js、path.js、recalculate.js、utilities.js等核心文件。测试与覆盖率体系这是整个开发文档中最重要的环节。对日常开发最实用的是npm run open-tests在浏览器中打开测试而顶层流程只需记住npm test与npm run test-only即可其余组件按需了解。端到端测试Playwright端到端测试已全面切换为Playwrightnpm run test:e2e会先构建应用、启动vite preview然后对http://localhost:8000/src/editor/index.html执行 Playwright 套件。实测配置见 playwright.config.mjstestDir: tests/e2e测试用例位于 tests/e2e如svgcore.spec.js、clipboard.spec.js、control-points.spec.js、export.spec.js、layers-panel.spec.js、text-tools.spec.js、zoom.spec.js等baseURL: http://localhost:8000headless: truewebServer自动执行npm run start:e2evite preview超时 180 秒并支持reuseExistingServer。运行编排在 scripts/run-e2e.mjs 中设置COVERAGEtrue、把 Playwright 浏览器缓存指向项目内node_modules/.cache/ms-playwright便于 CI 免 sudo 安装、必要时自动执行npx playwright install chromium、按源码 mtime 判断是否需要重新构建dist/editor并将 Vitest 的coverage/coverage-final.json播种给 nyc最终统一生成报告。顶层测试例程npm test无头headless测试完整流程为npm run instrument为文件插桩单独运行通常没必要除非只想得到插桩产物npm run test-no-cov若你已在上次改动后跑过instrument可单独运行npm run prep见上文npm run test-only只重跑测试适用于已插桩、已完成准备步骤的场景。由于当前测试只针对 ESM 构建如果不在意精确覆盖率、且没有改动核心代码可以直接跳过instrument甚至prep。它内部包含独立的report步骤否则测试结果不会可见地输出到命令行。其下还有npm run test-only-no-report一般不需要单独使用内含npm start启动服务器与npm run test:e2e跑 Playwrightnpm run report。npm run test-no-core-rollup与npm test相同的无头测试步骤但省去耗时的npm run rollup。如果你只修改配置文件而未改动 svgedit 核心此命令可显著提速instrumentnpm run test-no-cov-no-core-rollup同test-no-cov但不含prep里的 rollup 步骤。单元测试与当前实现对照当前仓库的npm test实际执行为vitest run --coverage node scripts/run-e2e.mjspretest先跑lint即Vitest 单元/集成测试 覆盖率 Playwright 端到端三段式。单元测试位于 tests/unit如path.test.js、recalculate.test.js、select.test.js、history.test.js、utilities.test.js等在 vite.config.mjs 中以jsdom环境、globals: true、setup 文件tests/unit/setup-vitest.js运行端到端测试则在 tests/e2e 中且 tests/visual 保留了旋转重算等视觉回归用例如compound-transform-bug.svg、rotation-recalc-demo.html。小结SVG-Edit 的开发流程围绕文档-依赖-构建-测试-发布展开子模块机制保证历史版本与master共存copy与license-badges在依赖变更后同步仓库内嵌资源与许可证信息prep/rollup完成 ESM 编译准备open-*系列覆盖开发期手动验证的四种编辑器形态而测试侧则以npm test为主线test-only、test-no-core-rollup为加速分支Playwright 负责http://localhost:8000/src/editor/index.html上的端到端验证Vitest nyc 负责单元测试与覆盖率汇总。理解这些脚本的调用层级参考 package.json 与 scripts/run-e2e.mjs即可高效介入 SVG-Edit 的日常开发与发布流程。赞分享前端图形学【免费下载链接】svgeditPowerful SVG-Editor for your browser项目地址https://gitcode.com/gh_mirrors/sv/svgedit点击查看免费下载相关推荐Kompose 开发指南从源码构建、依赖管理到 CLI 测试与 CI 的完整工作流Kompose 开发指南从源码构建、依赖管理到 CLI 测试与 CI 的完整工作流 本文以仓库 docs/development.md https://lin云原生Kubernetes容器编排开发工具CLIPaper.js 安装、构建与测试完全指南从 NPM 依赖到 Gulp 开发工作流Paper.js 安装、构建与测试完全指南从 NPM 依赖到 Gulp 开发工作流 Paper.js 是一个基于 HTML5 Canvas 的矢量图形脚本库图形学前端Velero 开发指南生成文件、单元测试与依赖管理实战Velero 开发指南生成文件、单元测试与依赖管理实战 VeleroVMware Tanzu Velero是 Kubernetes 生态中用于备份、恢复与云原生灾备存储后端上一篇ComfyUI 双卡能把采样快多少多 GPU 配置实战指南下一篇Android数据绑定终极指南为什么我们放弃DataBinding选择更优方案创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关推荐

下载手机商城app下载安装避坑指南:选哪家好?
下载手机商城app下载安装避坑指南:选哪家好?

下载手机商城app下载安装避坑指南:选哪家好? 很多老板盯着“下载手机商城app下载安装”这几个字,心里其实慌得很。不是怕开发难,而是怕域名、服务器、备案这些底层逻辑搞不懂,钱花出去了,网站却像个孤岛,搜不到也打不开。这种“地基没打牢”的焦… · 2026/9/27 21:16:39

3个实战案例告诉你可不可以自己做网站,备案不再一头雾水
3个实战案例告诉你可不可以自己做网站,备案不再一头雾水

3个实战案例告诉你可不可以自己做网站,备案不再一头雾水 备案流程一头雾水,卡在第一步就放弃?别慌。很多老板以为自己做网站就是拖拽几个模块,结果发现域名解析、服务器配置、ICP备案这些“隐形门槛”才是真难点。本文结合3个真实 实战案例… · 2026/9/27 21:16:32

上海建设网站价格怎么算?懂行人的最佳实践避坑指南
上海建设网站价格怎么算?懂行人的最佳实践避坑指南

上海建设网站价格怎么算?懂行人的最佳实践避坑指南 域名买错了,服务器选高了,钱花出去网站却打不开,这是很多上海老板建站时的噩梦。 别被“全网最低价”忽悠, 域名与服务器配置 才是决定网站生死的第一道坎。 真正懂行的 最佳实践… · 2026/9/27 21:16:32

宁波公司核名网站图解步骤:0基础搞定全流程
宁波公司核名网站图解步骤:0基础搞定全流程

宁波公司核名网站图解步骤:0基础搞定全流程 自己不会代码想做网站,这确实是很多宁波初创企业老板的痛点。看着同行网站上线,自己却连个像样的展示页都没有,心里急得慌。别慌,今天我们就拿一个真实的【宁波公司核名网站】项目开刀,把从需求到上线的… · 2026/9/27 21:48:50

【Python】(篇四)《顺序语句、条件语句、循环语句)》---详解
【Python】(篇四)《顺序语句、条件语句、循环语句)》---详解

一.顺序语句默认情况下,Python 的代码执行顺序是按照从上到下的顺序,依次执行的。编程是一件明确无歧义的事情,安排好任务的顺序,计算机才能够正确的进行执行。二.条件语句1.什么是条件语句条件语句能够表达 "如果 ... 否则 … · 2026/9/27 21:48:38

django个性化旅游路线推荐平台49005-计算机课程设计、毕业设计
django个性化旅游路线推荐平台49005-计算机课程设计、毕业设计

前言 ✨ 博主介绍:一线全栈工程师,毕设实战引路人。技术栈覆盖Java、Python、C#、PHP、Node.js及UniApp跨端开发,擅长多语言项目落地与架构设计。持续分享毕设源码、开题报告、技术选型心得与职场踩坑经验。用工程化思维写代码,帮… · 2026/9/27 21:48:25

网站引导页怎么做的完整流程及防黑实战指南
网站引导页怎么做的完整流程及防黑实战指南

网站引导页怎么做的完整流程及防黑实战指南 网站被黑挂马,页面瞬间变成满屏的赌博或色情广告,后台还进不去,这种崩溃感只有做过站的人才懂。别慌,这通常不是黑客技术有多高超,而是你的网站入口——引导页(Landing… · 2026/9/27 21:48:25

springboot校园二手交易平台55661-计算机课程设计、毕业设计
springboot校园二手交易平台55661-计算机课程设计、毕业设计

前言 ✨ 博主介绍:一线全栈工程师,毕设实战引路人。技术栈覆盖Java、Python、C#、PHP、Node.js及UniApp跨端开发,擅长多语言项目落地与架构设计。持续分享毕设源码、开题报告、技术选型心得与职场踩坑经验。用工程化思维写代码,帮… · 2026/9/27 21:48:25

C#UDP 广播服务端+客户端
C#UDP 广播服务端+客户端

一、整体广播通信架构说明1. 核心功能定位本代码实现UDP 广播通信,包含广播服务端与广播客户端两大模块:服务端负责向局域网内所有监听指定端口的客户端发送广播消息,客户端负责监听指定端口、接收广播消息并展示,基于 UDP 无连接… · 2026/9/27 21:48:19

MATLAB雷达信号脉冲压缩仿真:LFM线性调频、匹配滤波与距离分辨率实现
MATLAB雷达信号脉冲压缩仿真:LFM线性调频、匹配滤波与距离分辨率实现

简介:这套Matlab仿真工具完整呈现雷达信号脉冲压缩过程,从线性调频(LFM)信号生成、目标回波仿真到匹配滤波压缩处理均有可运行代码支撑,面向电子信息工程、计算机、数学等专业学生,适用于课程设计、期末大作… · 2026/9/27 0:00:01

汕头网站建设制作厂家避坑指南:5大注意事项救急
汕头网站建设制作厂家避坑指南:5大注意事项救急

汕头网站建设制作厂家避坑指南:5大注意事项救急 改个需求建站公司拖一周,这种憋屈事我见得太多了。 很多汕头老板找本地建站团队,签合同前看着方案挺美,一上线就变脸。 今天不聊虚的,直接拆解找 汕头网站建设制作厂家 时的5个核心 注意事项… · 2026/9/27 0:00:01

多模态虚假新闻检测实战:BERT+ResNet双塔与对比学习
多模态虚假新闻检测实战:BERT+ResNet双塔与对比学习

简介:基于PyTorch的多模态虚假新闻检测项目完整代码包,面向自然语言处理与计算机视觉交叉方向的开发者、科研人员及毕业设计选题者,解决社交媒体中文本与图像联合识别虚假新闻的问题。系统以BERT预训练模型提取文本语义特征,以Res… · 2026/9/27 0:00:01

MATLAB雷达信号脉冲压缩仿真:LFM线性调频、匹配滤波与距离分辨率实现
MATLAB雷达信号脉冲压缩仿真:LFM线性调频、匹配滤波与距离分辨率实现

简介:这套Matlab仿真工具完整呈现雷达信号脉冲压缩过程,从线性调频(LFM)信号生成、目标回波仿真到匹配滤波压缩处理均有可运行代码支撑,面向电子信息工程、计算机、数学等专业学生,适用于课程设计、期末大作… · 2026/9/27 0:00:01

汕头网站建设制作厂家避坑指南:5大注意事项救急
汕头网站建设制作厂家避坑指南:5大注意事项救急

汕头网站建设制作厂家避坑指南:5大注意事项救急 改个需求建站公司拖一周,这种憋屈事我见得太多了。 很多汕头老板找本地建站团队,签合同前看着方案挺美,一上线就变脸。 今天不聊虚的,直接拆解找 汕头网站建设制作厂家 时的5个核心 注意事项… · 2026/9/27 0:00:01

多模态虚假新闻检测实战:BERT+ResNet双塔与对比学习
多模态虚假新闻检测实战:BERT+ResNet双塔与对比学习

简介:基于PyTorch的多模态虚假新闻检测项目完整代码包,面向自然语言处理与计算机视觉交叉方向的开发者、科研人员及毕业设计选题者,解决社交媒体中文本与图像联合识别虚假新闻的问题。系统以BERT预训练模型提取文本语义特征,以Res… · 2026/9/27 0:00:01

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码