Shopify 开发团队去年将原本用 Ruby 编写的 CLI 工具改用 Node 进行了重写,并在近日介绍了这项决定背后的原因和权衡。
Shopify CLI 是 Shopify 平台开发者的重要工具,能够用于构建主题、应用程序和 Hydrogen 开发,让开发者以最佳实践创建新项目并与平台整合,或是发布生产构件供店家使用。不过 Shopify CLI 开发团队发现,对构建 Shopify 应用程序的开发者来说,他们在使用 CLI 上一直存在部分体验问题,因此决定重新审视 CLI 的开发语言选择,希望做出一些改变。
考虑到 Shopify 越来越依赖 JavaScript 和 Node Runtime 的资源、工具,因此团队希望采用新语言后能减少 Runtime 的安装需求,提升开发者体验,并且内部团队也可以进行贡献。最后他们决定用 TypeScript 重写 CLI,并支持在 Node Runtime 上运行。
Shopify 内部正在使用的编程语言除了最熟悉的 Ruby 之外,其次是 Node、Go 和 Rust。从技术层面来说,Go 和 Rust 也是理想的选择,Go 和 Rust 程序能够方便地编译成二进制文件,因此用户不需要安装 Runtime,但 Shopify 之所以最后选择 Node,是因为团队更熟悉 Node,他们不希望语言成为内部团队贡献 CLI 的障碍。
另外,使用 Node 来构建 CLI,还有一个有别于 Ruby 的特性,Node 具有灵活的模块系统和可扩展性,Node 的模块系统允许同一个可传递包的多个版本相互不冲突。