github动作是使工作流程自动化的强大工具。它们可以用于运行测试,部署您的代码,发布包装等等。
很酷的事情是,有一个github动作市场,您可以在这里找到很多由...社区创建的动作。
但是,如果您找不到所需的操作怎么办?您可以创建自己的并在那里发布!
如何使用本教程
在本教程中,我们将详细了解: 文章将被分为单独的咬合大小的章节,因为从技术上讲,每个文章本身都可以是一个小教程。 如果您一次对全文感兴趣,则可以在这里找到它: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
挂钩,因此我们还可以向其添加一些格式和覆盖。
这将确保代码始终格式化,并且没有堆积错误。
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频道!这对我来说意义重大€
您可以在这里找到它:
随时关注我在新文章发布时得到通知;)