为什么使用 TypeScript 写 Github Action 是愚蠢的
内容提要
本文讨论了 TypeScript 和 GitHub Actions 的应用,区分了 Composite Actions(复用步骤)和 Reusable Workflows(复用整个工作流)。还分析了使用 TypeScript 重写的优缺点,以及开发中遇到的 lint 检查和异步编程复杂性等问题。最后,作者分享了对不同编程语言设计的看法。
关键要点
-
Composite Actions 是复用多个步骤,Reusable Workflows 是复用整个工作流。
-
action.yml 属于 Composite Actions,github/workflows/*.yml 属于 Reusable Workflows。
-
Composite Actions 可以嵌套 actions,主要用于设置构建依赖。
-
Shell 编写的优点是简单,但缺点是语法检查不足。
-
使用 TypeScript 重写的原因是为了改善代码结构和美观性。
-
TypeScript 的使用带来了 lint 检查和格式化工具的配置问题。
-
TypeScript 项目需要配置 dependabot 或 renovate 来检查库的更新。
-
TypeScript 的语法复杂性可能导致理解上的困难,尤其是异步编程。
-
Reusable Workflows 中大部分过程是串行执行,而 JavaScript 设计为异步模型。
-
结论是文章作者对不同编程语言设计的看法,没有明确结论。
延伸问答
Composite Actions 和 Reusable Workflows 有什么区别?
Composite Actions 是复用多个步骤,而 Reusable Workflows 是复用整个工作流。
使用 TypeScript 重写 GitHub Action 的优缺点是什么?
优点是改善代码结构和美观性,缺点包括 lint 检查和异步编程的复杂性。
为什么 Shell 编写的 GitHub Action 语法检查不足?
Shell 语法检查不足是因为 shellcheck 不能检查 yml 中的 shell 语法,yamllint 只检查 yaml 语法。
TypeScript 项目需要配置哪些工具来管理依赖?
TypeScript 项目通常需要配置 dependabot 或 renovate 来检查库的更新。
TypeScript 的异步编程有什么特别之处?
TypeScript 的异步编程使用 async/await 模式,这与其他语言的同步执行方式不同,可能导致理解上的困难。
为什么作者认为使用 TypeScript 写 GitHub Action 是愚蠢的?
作者认为 TypeScript 的复杂性和配置问题使得开发过程繁琐,且没有明确的结论支持其使用。