如何编写一个 JS 开源库(技能包 / 长文)

martintsan

引言

GitHub 怎么用?Issue 还能通过 Commit 来同步关闭?版本号是怎么定义的?如何自动发行版本?Commit 还有公约和规范?怎样做持续构建?如何在提交之前就做测试?测试覆盖率是什么?……

也许在工作中您会遇到诸如此类的问题,不论您是菜鸟还是老手,但愿这篇文章能让你在其中找到一些有价值或可借鉴的东西,这源自一个教我学会「如何编写一个 JS 开源库」的实践项目,同时也让我领悟了许多开源项目的工程管理概念、思路及方法,包括 版本管理、测试编写、自动版本发行、代码提交公约、持续构建(CI)、提交前测试、测试覆盖率及其报告 等,总体感觉受益匪浅,在此对教程原文[1]表示感谢,并决定将视频中的大量知识通过写作记录下来,在学习过程中我也加入了一些自己的思考,将视频内容转换成了更通俗的语言,没时间看视频的朋友兴许可以瞧瞧这里,对于简单的技能可以跳过,相关技能的章节已做了电梯,可以直达进行阅读。注意:在您阅读任何技能章节之前建议您先看看项目背景,它非常简单,但它对您理解后面的内容很有帮助。

它让我学会了以下 新技能(√)

  • 技能 1账户建立:建立 GitHub 及 npmjs 账号

  • 技能 2账户配置:配置 NPM,并构建第一个库

  • 技能 3代码提交:提交开源库至 GitHub

    • 技能 3.1】免密登录:无需每次输入密码登录 Linux 主机

  • 技能 4库发布:将开源库发布到 NPM Repo

  • 技能 5版本管理:包括版本号定义,版本标签及版本发行

    • 技能 5.1】版本号定义:版本号每个数字的意义

    • 技能 5.2】版本标签:为版本加标签发布至 GitHub

    • 技能 5.3】版本发行:发布一个版本至 NPM

  • 技能 6单元测试:利用 Mocha 和 Chai 建立单元测试

  • 技能 7自动版本发行:利用 semantic-release 自动化发行

  • 技能 8代码提交公约:利用 commitizen 编写提交公约

  • 技能 9持续构建(CI):利用 TravisCI 持续构建

  • 技能 10提交前测试:利用 ghooks 做提交前自动化测试

  • 【技能 11】测试覆盖率1:利用 Istanbul 做代码覆盖

  • 【技能 12】测试覆盖率2:添加代码覆盖率报告

  • 【技能 13】GH特效:在 README 中添加徽章

  • 【技能 14】ES6支持1:添加 ES6 支持

  • 【技能 15】ES6支持2:使用 Mocha & Babel 对测试添加 ES6 支持

部分技能章节还在更新中,敬请期待

如果您对这篇文章感兴趣,请前往 GitHub 页阅读(https://github.com/DotHide/starwars-names),我将在那里做持续更新,如果您觉得本文有用,请您顺手赏颗⭐️,非常感谢~

阅读 1.2k

天道酬勤
取是能力 · 舍是境界 · 天道酬勤 · 忠于实践

业精于勤荒于嬉

1.2k 声望
17 粉丝
0 条评论
你知道吗?

业精于勤荒于嬉

1.2k 声望
17 粉丝
宣传栏