为什么使用 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 和 JavaScript 的设计是异步模型,使用 async 和 await,而 Python 和 Rust 默认是同步的,不需要 async。
文章的结论是什么?
文章没有明确结论,作者主要分享了对不同编程语言设计的看法。