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

打造JS开源库全流程
本文通过实践项目介绍如何创建并维护一个JavaScript开源库,涵盖从账户建立到版本控制、自动发行、持续集成、测试覆盖率等一系列工程管理技巧。

引言

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.通过帮助文档help.html查看所有效果与使用方法。 2.通过config.html配置符合你需要并导出js; 内容含如下: A:效果库类; 1.事件-同时兼容手机与pc的3种事件(start、move、end); 2.tab选项卡-各种切换6种; 3.电商产品主图-横向与纵向2种; 4.放大镜-电商主图放大镜、图库鼠标悬停旁边出现放大版图效果各一个; 5.跑马灯-文字或图片不断档可支持鼠标悬停时停止; 6.仿alert弹窗-可以自定义样式,手机版pc版个一种; 7.列表下拉加载更多-伪数据加载与ajax异步加载个一种; 8.折叠菜单一个; 9.banner图效果-7种含手机上支持手指滑动的; 10.时间轴-控制1种; 11.自定义滚动条-横向、纵向各一种; 12.临时禁用滚动条-禁用与启用方法各一个,也能禁用手机滚动条,同时解决px滚动条占用宽度问题。 13.图表等比例-使图片始终保持设定比例缩放等供3种不同形式; 14.回到顶部-点击回到浏览器顶部; 15.漂浮窗-小漂浮窗广告; 16.图集展示-偶尔能用到; 17.滚屏效果-手指上下滑动或鼠标滚轮滚动切换页面,可自己配一些动效!!!!!!; 18.常用表单验证; 19.左滑删除; 20.复选框全选与取消选中; 21.内容拖动!!!!!!; 22.dom输入; 23.单例定时器; 24.ios软键盘弹出fixed定位问题处理!!!!!!; B:架构类; 1.流程控制-主要解决多个ajax调用依赖问题; 2.面向对象的class方法-方便定义类与集成类; 3.require-实现模块化开发,简单实用; 提示:用!!!!!!标注结尾的在某些场景下可能出现bug;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值