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

dothide · 2016年02月28日 · 最后由 dothide 回复于 2016年02月28日 · 1364 次阅读

引言

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)1:利用 TravisCI 持续构建
  • 【技能 10】提交前测试:利用 ghooks 做提交前自动化测试
  • 【技能 11】测试覆盖率1:利用 Istanbul 做代码覆盖
  • 【技能 12】测试覆盖率2:添加代码覆盖率报告
  • 【技能 13】GH特效:在 README 中添加徽章
  • 【技能 14】ES6支持1:添加 ES6 支持
  • 【技能 15】ES6支持2:使用 Mocha & Babel 对测试添加 ES6 支持
  • 【技能 16】持续构建(CI)2:Travis 上的限制分支构建

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

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

最后,也许您会认为这里是 Ruby 社区,发一篇「如何编写一个 Gem 开源包」也许更有意义,我觉得倒也未必,其中的许多技能它提供了一种思路,至少是一些概念,您完全可以根据这些概念,再写一篇如何编写 Gem 包的文章来 :)

共收到 2 条回复

所以这是篇译文?

#1楼 @coderek 您好,是源自 Kent C. Dodds 视频 《How to Write an Open Source JavaScript Library》,别人的知识,算是看完视频以后的整理和总结吧

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册。