
获得徽章 0
- 一种可以榨干灵魂的 E2E 测试编写方法:通过定义“状态”和“转换”自动生成完整测试用例。多年前开了这个坑,最近又捡了起来。搞了两天终于初步搞定了多用户上下文的测试编写方案,不知道同事能不能很快上手。不过用 turning 的一个好处是,你都不知道也不用太考虑它会搞出来怎样的用例,就跟你不知道 QA 会搞出来怎样的神仙用例一样。
github.com
展开评论点赞 - 这周把之前吃灰的一个项目模板工具挖了出来,这个工具主打使用模板生成项目后,项目能随模板更新而更新。之前采用的是纯配置+生成的模式,生成的文件不能手动修改,否则下次更新会被覆盖。配置很痛苦,也没找到什么很好的办法解决,直到前几天同事说要不要用 magicspace 生成新项目,然后突然来了灵感,用 Git 相关机制解决。翻了一天 Git 命令,摸通了一套操作过程。原理其实很简单,模板生成内容可以看作是项目内容的一个 orphan branch,第一次合并到项目分支后,就和项目分支建立了某种神秘的连接,后续更新就是在这个 orphan branch 上新加一个 commit,再合并回项目分支。这里有个很巧妙的地方,由于分支合并后,模板生成更新的 commit 会保留在项目分支信息中,所以并不需要真的去保留一个 orphan branch,只要在更新时找到相关 commit 进行 checkout 即可,这样也避免用户忘记推对应的分支到远程仓库中。展开评论点赞
- 新轮子,高产。In-place Template 简称 inplate,通过在文件注释中直接写模板生成和更新内容。我们项目中 Dockerfile 涉及到需要复制的目录很多,于是搞了这么个工具自动生成相关条目,避免出错和未来遗漏。评论点赞
- 前两天搞的 nodemand 机制稍作调整就轻松支持了 ES modules,终于有比 node-dev 强的地方了。其实 node-dev 的机制未来也可以使用 Node.js 的 --experimental-loader 实现 ES modules 的支持,不过我的方式更取巧一点哈哈。需要自动重启 Node.js 的小伙伴可以看看,和 node-dev 一样只 watch 用到的 JS 文件。展开评论点赞
- 想要类似 node-dev 的功能替换掉 nodemon,使用错误的关键字搜了半天没搜到,轮子造完了想到 ts-node-dev 然后才反应过来好像自己听说过 node-dev。还好机制不一样,不 hook 原有代码,直接使用 Object.keys(require.cache),不然就太伤心了。reddit 上反应还不错就是不涨星。
github.com
展开赞过评论3 - 最近拆分项目,项目间引用比较复杂(yarn workspace + typescript references),指定目录去 watch 配置比较麻烦,想到可以利用 require.cache 上的模块信息去 watch,没搜到现成的,就撸了一个代替 nodemon。
github.com
评论点赞 - 才发现最近 Google Analytics 上报的 URL 改成了 analytics.google.com/g/collect,导致统计基本失效。翻了下 gtag.js 发现 gtag('set', 'transport_url', '
www.google-analytics.com') 倒是可以,不知道会不会有啥问题?
评论点赞 - 最近和同事倒腾了一个基于 typescript 的 plain object 类型检测库, 支持自定义扩展验证. 就是比较慢, 开销大, 适合做一些低频, 结构复杂的数据验证, 复用已有类型声明. 我们主要是用到配置验证, 复杂定义验证, 数据迁移验证这些场景上. 有相似需求的同学可以试试.评论点赞