用沙哑和git挂钩更漂亮且提起您的项目
#javascript #github #git #githubactions

github动作是使工作流程自动化的强大工具。它们可以用于运行测试部署您的代码,发布包装等等。

很酷的事情是,有一个github动作市场,您可以在这里找到很多由...社区创建的动作。

但是,如果您找不到所需的操作怎么办?您可以创建自己的并在那里发布!

如何使用本教程

阅读更多...

在本教程中,我们将详细了解:

  • 在打字稿中创建github动作
  • 扩展我们的行动以支持自定义输入
  • 与GitHub的API集成以添加标签以拉出请求
  • 单位测试我们的动作
  • 在Visual Studio代码中调试
  • 将我们的行动发布到GitHub Marketplace
  • 在另一个存储库中使用我们的操作
  • 一些最后的修改使我们的项目更强大

文章将被分为单独的咬合大小的章节,因为从技术上讲,每个文章本身都可以是一个小教程。

如果您一次对全文感兴趣,则可以在这里找到它:https://leonardomontini.dev/typescript-github-action/

另一个很棒的建议是创建一个新的存储库,并跟随步骤。这样,您将在帖子结束时采取运动行动,您将能够进行游戏和实验,而不仅仅是阅读长期教程并忘记了其中的90%。

本教程的完整代码可在this repo上的github上找到,因此,如果您陷入困境,您可以随时参考。

完整的教程(所有章节)也可以作为视频提供,您可以在此处找到:

第8章:最终触摸

操作已经完成,它在商店中进行了,并且在所有GitHub存储库中都可以使用,但是除非它已完成100%,并且您将永远不会再进行更新,否则您仍然有一些改进的空间来获得更好的开发人员体验(如今,DX非常流行)。

保持最新

在此工作流程中会惹恼您的一件事是推动新代码并忘记更新dist内容。

我的意思是,您要做的就是确保在推动之前运行npm run build,但是如果某些事情依赖于“只记得要做” ...好吧...祝你好运!

解决此问题的一种简单方法是使用git钩。您可以使用pre-commit钩在存储库中的每个提交中运行一个脚本。这对您有用,但是如果您与其他人一起工作怎么办?啊,请告诉他们也安装钩子...我已经说好运了吗?

狗?

是的,特别是沙哑!

Husky是一种工具,可让您轻松地在项目中添加git钩。设置非常容易,它将确保每个夹具您的存储库的每个人都将安装挂钩,因为它们是项目的一部分,并在运行npm install后与依赖关系安装。无需依靠人们记得安装它们!

让我们按照official docs进行安装:

npx husky-init && npm install

现在,您将在项目中找到一个.husky文件夹,其中包含pre-commit文件。打开它并用以下内容替换内容:

npm run build

现在确保运行npm install一次以更新钩子。这将确保每次提交时,dist文件夹都将被更新。

格式和覆盖

由于我们已经设置了pre-commit挂钩,因此我们还可以向其添加一些格式和覆盖。

这将确保代码始终格式化,并且没有堆积错误。

让我们安装PrettierESLint

npm install -D prettier eslint lint-staged

我们还需要为ESLINT安装一些插件:

npm install -D @typescript-eslint/eslint-plugin@latest eslint-plugin-jest@latest

我们现在可以配置Eslint和更漂亮。在项目的根部创建一个.eslintrc文件,并添加以下内容:

{
  "plugins": ["jest", "@typescript-eslint"],
  "parser": "@typescript-eslint/parser",
  "extends": ["eslint:recommended", "plugin:@typescript-eslint/recommended"],
  "env": {
    "node": true,
    "jest/globals": true
  },
  "ignorePatterns": ["*.test.ts"]
}

我们还添加一个.prettierrc文件:

{
  "trailingComma": "es5",
  "printWidth": 120,
  "tabWidth": 2
}

最后一个触摸,我们只想在阶段文件上运行这两个,这意味着索引阶段的另外一个配置文件。创建一个.lintstagedrc文件并添加以下内容:

{
  "./src/**/*.{js,ts}": ["prettier --write", "eslint --max-warnings 0"]
}

现在我们可以更新我们的pre-commit钩以运行绒毛段:

npx husky add .husky/pre-commit "npx lint-staged"

又一个npm install,我们完成了!

关闭

如果您遵循所有步骤,那么您现在在GitHub Marketplace上发表了一个非常扎实的GitHub动作,该动作是自动在每个提交上自动构建和覆盖的。准备制作一个很棒的开源项目!

如果您想查看最终结果,则可以在撰写本文时查看GitHub Action I created。如果您错过了一些步骤,也可以将其用作参考。

想看到我遵循本文的步骤吗?在此处查看视频:

还有什么要说的?希望您喜欢这个系列,并学到了一些新的东西。如果您有任何疑问,请随时在下面添加评论或在Twitter上与我联系。

这比平常长得多,我写每一章的写作很有趣,在此过程中我学到了很多东西。您想要这样的系列吗?让我知道!

下次见!


感谢您阅读本文,希望您发现它很有趣!

我最近启动了我的Discord服务器来谈论开源和Web开发,请随时加入:https://discord.gg/bqwyEa6We6

您喜欢我的内容吗?您可以考虑订阅我的YouTube频道!这对我来说意义重大€
您可以在这里找到它:
YouTube

随时关注我在新文章发布时得到通知;)