V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
logto
V2EX  ?  分享创造

我们将有 60k 行代码 TypeScript (Node.js) 的仓库迁移至 ESM,结果单元测试快了 4 倍

  •  1
     
  •   logto · 2022-12-26 19:33:16 +08:00 · 3148 次点击
    这是一个创建于 500 天前的主题,其中的信息可能已经有所发展或是发生改变。

    腾讯云最新优惠活动来了:云产品限时1折,云服务器低至88元/年 ,点击这里立即抢购:9i0i.cn/qcloud,更有2860元代金券免费领取,付款直接抵现金用,点击这里立即领取:9i0i.cn/qcloudquan

    (福利推荐:你还在原价购买阿里云服务器?现在阿里云0.8折限时抢购活动来啦!4核8G企业云服务器仅2998元/3年,立即抢购>>>:9i0i.cn/aliyun

    经过三次尝试,我们终于成功地将所有的 Node.js 代码从 CJS 迁移到原生 ESM ,并且单元测试的 CI 大幅减少。

    Comparison

    简单介绍一下之前的状况(你可能在 repo 设置或工具链上有不同的选择,但核心步骤和概念应该是一样的):

    • 包含前端和后端项目的 TypeScript monorepo
    • TypeScript 代码 ~60k 行(包括前端)
    • 在 TypeScript 中使用 import
    • 使用 PNPM 进行 workspace (monorepo) 管理
    • 使用 tsc 编译 Node.js ,使用 Parcel 打包前端项目
    • 使用 Jest + ts-jest 进行单元测试。
    • 使用 module-alias 处理内部 path alias

    顺带一提,我们的项目 Logto 是一个开源的身份 (auth) 解决方案。

    由于文章篇幅过长,我们分成了上下两篇。感兴趣的朋友可以移步 dev.to 查看:

    5 条回复  ?  2022-12-27 13:57:33 +08:00
    Aloento
        1
    Aloento  
       2022-12-27 00:39:53 +08:00 via Android
    我不好说
    pseudo
        2
    pseudo  
       2022-12-27 00:47:25 +08:00 via iPhone
    @Aloento 不好说咱就别说?
    Aloento
        3
    Aloento  
       2022-12-27 00:54:09 +08:00 via Android
    @pseudo 你们可以把之前从 JS 迁移到 TS 的过程也补一下吗(如果还没有相关文章的话),有的话可以分享一下吗,谢谢
    free9fw
        4
    free9fw  
       2022-12-27 08:46:18 +08:00
    也就 import 和 export 方式改一下,代码行数又有什么关联呢
    codehz
        5
    codehz  
       2022-12-27 13:57:33 +08:00   ?? 1
    @free9fw 规模上去了才有比较的空间啊,小规模测试的话很难说 esm 有什么优势(
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5800 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 03:33 · PVG 11:33 · LAX 20:33 · JFK 23:33
    Developed with CodeLauncher
    ? Do have faith in what you're doing.


    http://www.vxiaotou.com