ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Parsley.js 仓库内 Mocha 测试框架演进史解读:从 0.0.1-alpha1 到 2.3.3 的完整变更档案

Parsley.js 仓库内 Mocha 测试框架演进史解读:从 0.0.1-alpha1 到 2.3.3 的完整变更档案 前端【免费下载链接】Parsley.jsValidate your forms, frontend, without writing a single line of javascript项目地址https://gitcode.com/gh_mirrors/pa/Parsley.js点击查看免费下载本篇文章以 bower_components/mocha/HISTORY.md 这份完整变更记录为骨架系统梳理 Mocha 从 2011 年 11 月首个 alpha 版本到 2015 年 9 月 2.3.3 的演进脉络并结合当前 Parsley.js 仓库内实际打包的mocha.js浏览器构建、Gulp 测试任务与 HTML 测试运行器把“CLI 选项、Reporter、测试接口、异步处理、浏览器支持、内部架构”六大主题逐条落到源码证据上。读完本文你将掌握 Mocha 各里程碑版本新增/修复的关键能力清单理解它在表单校验库 Parsley.js 测试体系中的真实调用方式并能在排查历史兼容性问题时快速定位对应版本与底层实现。一、文档定位一份 4 年、60 余个版本的完整变更档案bower_components/mocha/HISTORY.md是 Mocha 测试框架随仓库一并分发的变更日志changelog时间跨度从 2011-11-08 的0.0.1-alpha1一路记录到 2015-09-19 的2.3.3覆盖约 60 个版本节点。它不是零散笔记而是按“版本号 / 发布日期 / 变更条目”的固定格式组织的完整技术档案每一条变更都附带对应的 GitHub issue 编号与贡献者。这份档案的价值在于它同时是CLI 手册的演进史、Reporter 生态的目录、接口设计决策的备忘录以及兼容性问题的修复记录。例如--async-only、--allowUncaught、--fgrep、--reporter-options等至今常用的选项都可以在档案中找到它们首次引入的版本号而bail导致 hooks 被错误调用、HTML reporter 在大数量测试下栈溢出等回归问题也都有对应的修复条目。仓库内与这份文档配套的物证包括bower_components/mocha/bower.json声明了 Mocha 的元信息——“simple, flexible, fun test framework”关键词为mocha、test、bdd、tdd、tap主文件为浏览器构建mocha.js与mocha.cssbower_components/mocha/mocha.js打包后的浏览器端单文件构建Browserify 产物HISTORY 2.3.0 条目中记录了“Build using Browserify”这一转折package.jsonParsley.js 将mocha: *列为 devDependencies另有expect.js、sinon、jsdom等配套测试库gulpfile.babel.js测试任务通过gulp-mocha以dotreporter 运行单元测试test/runner.html浏览器端测试运行器直接引入../node_modules/mocha/mocha.js与mocha.css。二、Mocha 在 Parsley.js 仓库中的实际落地方式在进入变更档案的细节之前先看这份打包进仓库的 Mocha 是如何被 Parsley.js 使用的——这是理解“为什么仓库里会有这份 HISTORY.md”的上下文。2.1 Node 端Gulp 任务驱动gulpfile.babel.js 中的runTests任务第 86–89 行是 Node 端测试入口return src([test/setup/node.js, test/unit/index.js], {read: false}) .pipe($.mocha({reporter: dot, globals: mocha.globals, require: [babel/register]}));三个参数对应了 HISTORY.md 中反复出现的三条主线reporter: dot使用 Dot reporter。HISTORY 中dotreporter 从 1.3.1 起改为“sexy unicode dots”并在此后持续获得渲染修复如 1.21.0 修复 dots 偏移、1.13.0 增加 pending 的 CSS 选择器globals来自 tools/mocha_options.js声明了$、stub、spy、expect、expectWarning五个白名单全局变量——这正是 HISTORY 中--globals names0.3.0 引入、Mocha#globals()多次调用与字符串形式1.4.2、全局泄漏检测checkGlobals/--check-leaks等条目在真实项目中的用法require: [babel/register]对应 HISTORY 中--require0.12.0 支持相对 CWD、1.10.0 改用resolve()以及“support for arbitrary compilers”1.0.0的能力。测试任务还以parallel(lintSrc, lintTest)串联 ESLint对应 2.3.0 条目“Adopt code style and enforce it using ESLint”。2.2 浏览器端HTML 运行器test/runner.html 是浏览器端运行器第 27 行注释明确写着“Required for browser reporter”并放置了div idmocha/div挂载点——这正是 HISTORY 中 HTML reporter 的关键设计mocha.css的样式限定在#mochaid 之下1.10.0 条目以及 1.18.2 修复“html runner 使用#mocha作为默认根元素”的对应实现。该页面依次加载mocha.js、expect.js、sinon与 jQuery与 Parsley.js 依赖 jQuerypackage.json 中jquery: 1.8.0的形态一致。2.3 版本定位打包的是 2.3.x 时代的浏览器构建bower.json 中main指向mocha.js/mocha.css结合 HISTORY.md 收录到 2.3.3可以推断仓库打包的 Mocha 处于 2.3.x 版本段。这解释了为何 bower_components/mocha/mocha.js 中能直接检索到 2.3.0 引入的allowUncaught与 2.2.0 引入的fgrep的实现详见第六节。三、CLI 选项演进一部命令行手册的编年史HISTORY.md 中数量最多的条目类别就是命令行选项的“新增 / 修复 / 改名”以下按能力分组完整梳理。3.1 运行控制watch / bail / grep 家族选项引入版本说明-w, --watch0.3.0监听文件变化自动重跑测试1.0.0 起支持初始即运行一次1.2.0 修复 runner emitter 泄漏1.17.0 修复 watch 触发时重置 context、中止上一次运行1.21.0 起编译器扩展名也纳入监听--recursive1.1.0递归查找测试文件目录-b, --bail0.10.0首个异常即退出1.8.1 修复.bail()参数个数判断2.3.1 修复“bail 后 before() 钩子仍被执行”2.1.0 修复“bail 下失败测试的 after 钩子未调用”--grep pattern1.3.0按正则过滤用例1.3.0 起对输入做正则转义1.4.1 修复Mocha#grep()转义1.10.0 改用正则语义close #13812.2.0 拆分出--fgrep——grep 用于 RegExp、fgrep 用于普通字符串--invert1.3.0反转 grep 匹配结果--sort1.13.0排序测试文件3.2 超时与速度阈值-s, --slow ms0.0.1-alpha3设定“慢测试”阈值初始实现用亮黄色标记慢的 Dot 测试--timeout ms0.0.1 起支持3s这样的秒数简写this.timeout(0)表示禁用超时0.4.0 支持测试级、1.21.5 支持 suite 级1.5.0 起ms()可同时作用于.slow()与.timeout()1.21.0 新增--no-timeouts1.21.5 修复enableTimeouts(false)之后不再超时2.2.0 在超时错误信息中提示“别忘了 done() 回调”1.6.0 起err.showDiff驱动对象差异输出。3.3 泄漏检测与全局白名单--globals names0.3.0/0.2.0声明可接受的全局变量1.2.1 支持通配符1.2.0 增加全局泄漏通配符支持1.10.0 修复filterLeaks()将全局对象索引误判为泄漏--ignore-leaks0.3.0在 1.9.0 被--check-leaks取代且默认ignoreLeaks改为trueclose #791Mocha#checkLeaks()1.5.0可在 JS API 中重新开启检查1.5.0/1.13.0 多次优化checkGlobals()的.length预检以提速1.16.0 新增Runnable.globals(arr)做单测试全局白名单1.17.0 修复“无法可靠地 require 全局describe/it 等通过 mocha”。3.4 依赖注入与编译--require0.12.0 支持相对 CWD 的文件1.10.0 改用resolve()替代join()任意编译器支持1.0.0close #338compiler 扩展名同时被 watch 监听2.1.01.12.0 修复“带 requires 时使用 compilers”的问题。3.5 输出与颜色-c, --colors0.0.4与-C, --no-colors0.0.30.10.1 修复--no-colors1.14.0 起支持MOCHA_COLORS环境变量自定义颜色2.1.0 起彩色输出仅输出到 tty且 reporter 只写 stdout1.10.0 修复process全局在浏览器中的泄漏。3.6 Node/V8 标志透传HISTORY 记录了 Mocha 长期充当 Node/io.js 标志“搬运工”的角色早期--debug、-d0.8.0/0.8.1、-gc/--expose-gc0.10.01.10.0 支持透传--debug-brk1234这类带参标志close #8521.21.0 增加--*-弃用标志支持2.2.3 支持--allow-natives-syntax、--harmony_classes、--es_staging2.3.0 新增--max-old-space-sizeclose #1829、支持更多 io.js 与 harmony 标志含下划线形式--harmony_proxies等2.3.3 达到“支持所有 harmony 标志”close #18462.2.1 修复“传递给 node/iojs 的参数”2.2.0 修复确保使用环境的node可执行文件close #1548。3.7 配置与扩展机制mocha.opts0.0.1-alpha3 引入0.0.5 放宽对空白的解析2.1.0 过滤零长度字符串2.2.3 支持在其中写 node 参数close #15732.2.4 改为在_mocha中加载--ui1.14.0 起非内置 UI 会被 require同--reporter行为0.0.4 提供--interfaces列出全部接口1.2.1 导出顶层 suitemocha.suite--reporter0.0.4 提供--reporters1.3.0 支持--reporter MODULE自定义报告器1.4.2 增加mocha.reporter()构造器支持2.1.0 支持 reporter 选项reporter options--reporter-options2.3.0 支持布尔型--reporter-optionsclose #17541.10.0 起mocha init生成的默认文件由 tests.html 改为 index.html1.4.0 已支持mkdir -p。四、Reporter 体系演进从 dot 到全家桶HISTORY.md 完整记录了各 reporter 的引入时间这是本文档信息密度最高的部分之一Reporter引入版本关键后续Base基类0.0.x提供颜色、diff、进度条基础能力Dot0.0.1-alpha3 前1.3.1 使用“sexy unicode dots”1.13.0 补 pending CSS 选择器1.21.0 修复 dots 偏移Doc0.0.1-alpha51.21.0 修复不显示失败用例close #1117Spec1.0.0 前后1.21.0 起成为默认 reporterclose #12281.16.0 修复多行用例重复输出Markdown1.0.01.7.0 修复 a 标签2.1.0 为 suite 标题加前缀close #5542.3.3 修复超大调用栈close #1875Min1.0.0为--watch设计的精简输出HTML0.0.x1.3.1 支持通过/失败切换1.7.0 增加“播放按钮”单测重跑2.3.0 允许错误内嵌 HTMLclose #1349JSON / JSONStream0.13.0 / 1.3.x1.21.5 增加pending字段2.3.0 为 JSON-stream 补充 stackclose #1689JSONCov / HTMLCov0.13.00.13.0 起的初步覆盖率支持TAP0.0.x1.5.0 修复 grep 数量1.7.4 输出总通过/失败数1.8.0 修复失败注释XUnit0.8.01.16.0 修复 NaN 时长2.1.0 支持写文件配合--reporter-options output2.3.3 修复 output 缺失Nyan1.2.01.3.0 修复导出2.1.0 修复Base.useColors与Base.color返回值Landing1.0.x2.0.0 修复非 ANSI 字符close #211List / Progress1.3.xProgress 1.13.0/1.21.0 优化重渲染时机TeamCity0.5.0 引入、1.14.0 移除移除后保留在 lib/reporters/index 的导出逻辑中浏览器端 HTML reporter 在 HISTORY 中出现频率极高1.3.1 增加通过/失败切换与 pending 状态、1.7.0 增加 HTML5 doctype、2.1.0 保留单个测试跳转的 pathname、2.3.0 修复特殊字符链接close #1687与失败/通过链接的默认浏览器行为close #1572。test/runner.html 中div idmocha的注释正与此对应。五、测试接口Interface与 DSL 演进BDDdescribe/it自始即是核心1.1.0 增加context同义词1.2.0 增加specify作为it的同义词0.13.0 增加xdescribe()/xit()跳过用例1.18.1 支持具名 before/after 钩子1.18.0 先引入TDD0.1.0 增加suiteSetup/suiteTeardown0.0.1-alpha6 将tearDown改名为teardownQUnit 风格接口0.10.0 引入1.10.0 增加test.only/test.skip1.18.1 支持具名钩子0.13.0 起 BDD 也有xdescribe/xit.only()/.skip()1.4.0 引入close #5241.2.0 的“global leak wildcard”配套1.14.0 保证it/it.only/describe/describe.only返回值一致close #8402.2.0 支持从测试上下文调用 skipclose #3321.11.0 增加suite.skip()Exports 风格接口与本地自定义接口1.16.0 修复“仅暴露指定 ui”1.4.2 修复客户端 API 与 Node 端对齐1.22.1-3 支持本地 uis 与 reportersclose #12881.2.1 增加“this.test.error(err)”注入 after-each 钩子。六、异步、Promise、超时与未捕获异常核心机制的版本足迹这是 HISTORY 中技术含量最高的主题也是 bower_components/mocha/mocha.js 中可以直接验证的部分。6.1 Promise 与 async-only1.18.0 正式加入 Promise 支持close #3291.21.0 起“返回的 Promise 被无原因拒绝”也会判定失败close #1224--async-only于 1.7.0 引入用于防止漏写done()造成的假阳性2.3.0 起返回 Promise 也能满足 async-onlyclose #1490。6.2 done() 回调纪律0.0.1-alpha3 起防止done()被多次调用0.0.7 起超过两次调用只报告一次错误0.8.0 起done()传入非 Error 值即判失败close #1710.3.4 允许done()接收非 Error1.21.0 将传入done()的非 Error 对象 stringifyclose #12702.3.3 修复“多个 done 错误正确归属到 hooks”close #1798。6.3 未捕获异常uncaught0.5.0 支持从测试中恢复未捕获异常close #940.6.0 修复 HTML reporter 的静默钩子错误0.8.1 修复未捕获异常的报告1.3.0 修复“done() 被多次调用并带错误”的用例1.7.2 暴露原始错误消息1.11.0 为未捕获异常加 “Uncaught” 前缀2.2.0 起在 spec 解析完成后忽略异步全局错误、全局失败后忽略异步错误2.3.0 新增--allowUncaughtclose #553——该选项在 bower_components/mocha/mocha.js 第 1374–1376 行有Mocha.prototype.allowUncaught function() { this.options.allowUncaught true; }的源码印证并在第 1406–1407 行透传给 Runner、第 4173/4184/4653 行参与运行逻辑判断2.3.3 修复“捕获测试套件执行之外的未捕获错误”close #1669浏览器端1.7.3 修复浏览器未捕获错误支持0.3.5 支持window.onerrorclose #1311.16.0 让window.onerror返回 trueclose #8681.7.0 修复 Opera/IE 的 DOM 全局泄漏close #2432.3.0 增加跨 frame 兼容的 Error 检查close #1758。6.4 超时机制0.0.7 起失败时清除定时器close #800.3.3 修复钩子超时close #1200.4.0 支持this.timeout(0)测试级禁用1.7.0 支持this.timeout(5s)字符串1.21.5 修复“超时后不再触发”2.2.0 在超时消息中提示 done()。七、Hooks 与 Suite 生命周期0.0.7 引入Hook与RunnableTest成为Runnable的子类——这是 Mocha 内部对象模型的奠基版本0.3.4 保证失败时仍运行afterEachclose #1250.6.0 修复 HTML reporter 重复上报close #1541.16.0 修复Suite#clone()的.ctx引用close #262实为 0.12.1 条目1.16.0 增加Runnable.globals(arr)1.21.0 修复“bail 时失败测试的 after 钩子仍被调用”close #10932.3.1 修复“bail 后 before() 钩子仍被执行”close #18122.3.0 让 beforeEach/afterEach 的错误消息包含测试标题close #1230、修复异步钩子错误处理close #1769、修复钩子错误测试close #17812.1.0 起 reporter 若带有.done方法会在退出前调用。八、Diff 与错误输出可读性的持续打磨0.14.0 为终端 reporter 增加字符串 diff0.13.0 支持对象 stringify 后再 diff1.6.0 支持err.showDiff对象 diff1.14.0 引入统一 diffclose #8621.12.0 防止类型不同时的 diffclose #9001.2.0 修复字符串 diff 换行实为 1.0.3 条目1.21.0 修复 diff 的 /- 显示close #1182与循环结构 diffclose #11792.2.5 升级 jsdiff 至 1.4.0、修复控制台 diff 背景色close #1648、修复多行 diff 显示为单行close #1241/#16552.2.3 系统修复无期望值时不出 diff、不假设错误消息是 stack 首行、显式支持showDiff关闭close #16142.1.0 起字符串不参与 stringifyshowDiff 直接比较、增加 buffer diffclose #1132/#1433错误输出1.5.0 处理 tab/CR/LF1.15.0 支持内联 diffclose #10441.16.0 修复utils.clean()缩进close #7612.2.3 修复函数声明换行时的 cleanclose #1556。九、浏览器端支持从“初步支持”到 PhantomJS 修复0.0.1-alpha6 加入“preliminary browser support”0.6.0 引入setZeroTimeoutclose #1530.7.0 支持 IE7/8close #guille1.10.0 修复 mocha.css 仅作用于#mocha1.11.0 支持 Web Workers1.12.0 增加Mocha.processhack 以兼容 PhantomJS1.13.0 修复 Firefox 的window.getInterface与 iframe 索引泄漏2.3.0 连续修复 PhantomJS 下的运行问题close #1761、close #1700、修复 HTML runner 崩溃close #1789、修复ReferenceError: location is not definedclose #16542.3.3 修复浏览器中 stack trace 保留模块/组件close #1766浏览器构建方式2.3.0 改用 Browserify 构建close #1260并弃用__proto__close #1728——这正是 bower_components/mocha/mocha.js 呈现为单文件 CommonJS 打包形态的原因mocha.js 第 19 行exports.EventEmitter、第 981 行exports.reporters即为 Browserify 模块出口的痕迹。十、内部架构与工程质量演进对象模型0.0.7 引入 Hook/RunnableSuite/Runner/Context 逐步成型0.12.1 引入 Context 对象close #2531.20.0 为 suite 对象附加文件名close #12221.19.0 在 Test 对象中导出 fileclose #11741.16.0 新增mocha.throwError(err)供断言库调用close #985运行器0.3.1 导出 Spec 构造器close #1160.3.4 让mocha.run()返回 Runnerclose #1261.16.0 修复--no-exit下保留进程退出码close #10592.2.0 修复Mocha.run(fn)中 fn 存在性检查close #1496构建与工程2.3.0 采用 Browserify、引入 ESLint 强制代码风格close #1359、重构多项内部实现2.2.5 使用合法 SPDX 许可证标识close #1682并新增集成测试close #1675兼容性底线2.0.0 移除对 Node 0.6.x/0.4.x 的支持这是 2.x 大版本断代的核心变化1.21.5 仍保留 0.6.x 构建0.10.1 支持 0.7.x2.3.3 使用utils.reduce保证 IE8 兼容close #wsw0108。十一、第三方集成与周边工具通知growl0.4.0 前后接入1.21.0 升级至 1.8.0、say(1)0.8.0、-E --growl-errors1.3.1、2.1.0 的 Slack 通知与 [.travis.yml] 的travis_retryclose #1449TextMate0.0.1-alpha5 增加 TextMate bundle 与make tmclose #200.8.0 让make tm先 mkdir -pclose #137mocha init path1.2.0复制客户端测试文件1.4.0 支持mkdir -p覆盖率0.13.0 引入初步覆盖率close #5、JSONCov/HTMLCov reporter1.7.0 覆盖率按文件名排序npm docs mocha0.12.1、CI0.0.1-alpha6 接入 Travis、2.1.0 使用 Docker 容器、2.2.3 加入 io.js。十二、版本时间线速查2011–2015版本日期该版本最值得记住的变更0.0.1-alpha12011-11-08初始发布0.0.1-alpha32011-11-15-s --slow、mocha.opts、默认_test/*.js_、防 done() 多次调用0.0.1-alpha52011-11-17doc reporter、suite merging、TextMate bundle0.0.1-alpha62011-11-19Travis CI、初步浏览器支持、TAP stack trace0.3.02011-12-04-w --watch、--ignore-leaks、?grep、--globals0.4.02011-12-14this.timeout(0)、客户端 EventEmitter0.7.02011-12-18IE7/8 支持0.8.02011-12-28XUnit reporter、done() 非 Error 判失败0.10.02012-01-13-b --bail、--expose-gc、qunit 接口、watch 全部 .js0.13.02012-02-23覆盖率、HTMLCov/JSONCov、BDD 的 xdescribe/xit0.14.02012-03-01终端字符串 diff1.0.02012-03-24JS API、markdown/min reporter、任意编译器1.2.02012-06-17nyan reporter、mocha init、specify 同义词1.3.02012-07-05--invert、自定义 reporter 模块1.4.02012-08-22.only()、.skip()1.7.02012-11-07--async-only、this.timeout(ms)、播放按钮1.8.02013-01-08Mocha#bail()、component.json1.9.02013-04-03--check-leaks取代--ignore-leaks1.11.02013-06-12--prof、--harmony、Web Workers、suite.skip()1.13.02013-09-15--sort、泄漏检测提速1.14.02013-11-02统一 diff、MOCHA_COLORS、移除 teamcity1.15.02013-12-02--no-exit、内联 diff1.16.02013-12-19Runnable.globals()、mocha.throwError()1.18.02014-03-13Promise 支持、具名 before/after 钩子1.21.02014-07-23--no-timeouts、--watch-extensions、spec 成默认 reporter2.0.02014-10-21移除 Node 0.6/0.4 支持、visionmedia→mochajs 迁移2.1.02014-12-23reporter options、xunit 写文件、buffer diff2.2.02015-03-06--fgrep、延迟 root suite2.2.52015-05-14jsdiff 1.4.0、集成测试2.3.02015-08-30--allowUncaught、--max-old-space-size、Browserify、ESLint2.3.32015-09-19Markdown 栈溢出修复、xunit output 修复、harmony 标志全支持十三、从仓库源码验证关键结论以上所有 CLI 选项、reporter 与行为描述均可在仓库中找到实现物证读者可自行核对fgrep 与 grepbower_components/mocha/mocha.js 第 1025–1026 行if (options.fgrep) { this.grep(options.fgrep); }对应 2.2.0 的“fgrep 用于字符串、grep 用于 RegExp”allowUncaught / asyncOnly同文件第 1353–1375 行的Mocha.prototype.asyncOnly与Mocha.prototype.allowUncaught以及第 1406–1407 行向 Runner 透传、第 4213/4649–4654 行在测试执行中的判断对应 2.3.0 与 1.7.0 条目reporters 全家桶同文件第 1819 行起可逐一找到Base、Doc、Dot、HTMLCov、HTML、JSONCov、List、Landing、Markdown、Min、Progress、Spec、TAP等 reporter 构造函数与第四节表格一一对应Parsley.js 的实际用法gulpfile.babel.js 第 86–89 行的$.mocha({reporter: dot, globals, require})与 tools/mocha_options.js 的 globals 白名单印证了dotreporter、--globals、--require三条主线在真实项目中的落地test/runner.html 印证了浏览器端 HTML reporter 与#mocha挂载点的设计。十四、结语bower_components/mocha/HISTORY.md表面上是变更日志实质上是 Mocha 四年设计决策的浓缩档案从 2011 年的单文件测试工具到 2.3.x 时代具备完整 CLI、十余种 reporter、Promise/异步模型、浏览器与 Node 双端支持、Browserify 单文件构建的成熟框架。对 Parsley.js 这类以mocha: *作为 devDependencies、同时运行 Node 端gulp-mocha与浏览器端runner.html测试的项目而言这份档案既是排查历史兼容性问题的索引也是理解 mocha.js 内部实现的路线图。读者在升级 Mocha 或阅读其源码时可将本文第十一节的版本时间线作为锚点逐条回溯对应的 issue 与实现位置。赞分享前端【免费下载链接】Parsley.jsValidate your forms, frontend, without writing a single line of javascript项目地址https://gitcode.com/gh_mirrors/pa/Parsley.js点击查看免费下载相关推荐Bootswatch 仓库内 Bootstrap 2.x CHANGELOG 全解读从 v1.0.0 到 v2.3.2 的框架演进史Bootswatch 仓库内 Bootstrap 2.x CHANGELOG 全解读从 v1.0.0 到 v2.3.2 的框架演进史 导读 本篇文章以当前仓库前端UI组件设计系统Loguru 完整版本演进史从 0.0.1 到最新版的变更日志深度解析Loguru 完整版本演进史从 0.0.1 到最新版的变更日志深度解析 导读 本文以 loguru 项目文档系统中的 docs/project/changel开发工具最完整BiliBiliToolPro功能演进史从0.0.1到3.8.2的蜕变之路最完整BiliBiliToolPro功能演进史从0.0.1到3.8.2的蜕变之路 BiliBiliToolPro是一款功能强大的B站bilibili自动任后端任务调度工作流自动化上一篇ComfyUI-IC-Light-Native深度解析基于条件光照的图像生成技术实践指南下一篇你该知道的8个配置项eloquent-taggable自定义分隔符、连接与表名完整清单创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表