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

dothide · February 28, 2016 · Last by dothide replied at February 28, 2016 · 1980 hits

引言

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 包的文章来:)

所以这是篇译文?

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

You need to Sign in before reply, if you don't have an account, please Sign up first.