发布 JavaScript 开源项目的学习指南

1031 查看

你刚刚完成自己第一个JavaScript库的开发,同时你认为它可以帮助到其他人。你已经听到人们讨论“开源运动”或“GitHub简历”,但你在共享软件这方面上仍然是个新手。

也许你还在学校,你想开始创建一个在线简历。或者你已经开始在公司工作,比如 Conductor,这个公司鼓励开发人员为开源社区做贡献(见  Hoard和 Kangaroo)。这篇文章将讲述一些工具和技术,你可以用来发布一个值得信赖的开源JavaScript库。

让你电脑上的源代码能够得到别人的信任,并且在他们自己的项目中使用你的库,你需要完成几个重要的步骤。这篇文章就是围绕这一过程来组织。

对于这次操练,你会看到 backbone.freeze,这是我写的一个简单的库,它用于支持Backbone.js的不可变的集合。我假设你有一个库的本地版本,并且代码在一个准备发布的地方。

库文件的原来的样子

托管(或将“源代码”放到“开放源码项目”)

让人们使用你的代码的第一步是,让你的代码在网上可用!当今托管代码流行的地方是GitHub,本指南将使用它,但是你也可以使用任何你熟悉的托管网站。

代码在线(或者分享)

如果你还没有一个GitHub账号,把这篇文章先放放,去创建一个。如果有一个?很好!现在来创建一个新的仓库。

我们的新仓库

现在上传你的代码到GitHub。这篇文章假定你熟悉 git(或另一个版本控制系统)。如果你不知道如何做到这一点,看看 这个指南 。

这时,您应该有一个不错的仓库,里面都是你写的代码。拍拍自己的后背,庆祝一下你的第一个开源项目。做到这一步,现在请丰富你的README.md文件。这样人们可以知道项目用途。

初始化状态的仓库

许可(或允许人们使用你的代码)

当你决定将你的代码发布在网上,你需要回答的一个问题是,“如何允许别人使用它?“,在这篇文章中,您将为项目添加一个许可证。毕竟,现在是思考这个问题的时候了。有关许可证的更多信息,请查看 这个网站。我为 backbone.freeze 选择了MIT 许可证。因为它非常宽松,同时在GitHub上托管的JavaScript项目上它非常流行,这意味着其他JavaScript开发人员,在知道我的代码能做什么和不能做什么的理解上没有问题。

遵循社区标准(或者做一个他人确实会使用的项目)

想象你是无辜的 JavaScript 程序员先生或女士。你偶然发现这个仓库。你认为,”嘿,这填补了我的一个需求!“作为一个JavaScript开源社区的成员,你需要知道有一些开放源码项目的质量标准。除非它符合这些标准,不然你不可能使用这些代码。

让你的代码符合这些标准!

与JavaScript社区特别相关的两个标准是依赖管理和测试。

依赖管理

当你的项目依赖于外部库或模块,你需要一个简单的方法来管理这些依赖关系。当然,你可能只是简单地复制并粘贴另一个库的源码到你的项目源码,但这很难处理版本变更和确保你的依赖关系的准确性。这就是为什么依赖管理器可以使你变得更轻松。它允许用户调用’install[library]’,来获取所有依赖项库的最新版本或他们的代码所依赖的任何其他库。

在JavaScript领域,有一个流行的依赖管理器 npm。这篇文章将使用npm作为依赖管理,但是你可以使用其他任何你觉得合适的工具。

如果你没有npm,花一些时间来安装它。 (说明在这里)

首先,你需要使用命令“npm init”来建立一个新的npm项目。最好猜猜这些配置选项,你可能会改变其中的一些。

如果你看看backbone.freeze的配置选项,您将看到两个重要的事情。第一个是许可证,回忆我让你在上面思考的有关许可证的事项?这就是填写许可证的地方。

同时,你会发现有一个测试命令。您现在可以忽略,或者写上“gulp test”——我将马上解释它的含义。

现在您已经准备好去测试。

测试

测试是让用户看到你的库是实际如何工作的一种简单方法,同时能让用户信任你的代码能做到你所声称能做的事情,即使是边界情况。所以让我们为你的插件编写一些测试!

安装包

首先,你需要设置将用来编写测试的工具。本教程将使用以下:

现在你有npm,你准备安装它们。

(Mocha是一个JavaScript测试框架。Chai是一个JavaScript预测库,对测试很有用)。

配置

在你的目录变得混乱之前(新的package.json和node_modules目录之间,你可能感觉有点拥挤),是时候遵循标准的约定并移动你的源代码到“src”目录了。

此外,您将使用另一个额外的组织方式,创建一个名为“spec”的目录,在这里面你将放置所有的测试。

确保你所有的测试都可以使用Chai,你需要在spec目录中创建一个“setup.js”文件。在该文件中,您需要设置Chai

view rawspecsetup.js hosted with ❤ by GitHub  【黄利民注:这里是代码段】

你可通过输入“mocha spec/ *.js”来检验以上是否成功,可以看到测试运行成功(包含0个测试)。


编写所有测试! ! !

花一些时间来编写测试。它们都应该放在spec目录中。

如果你从来没有编写过测试,看看 backbone.freeze的测试。在你编写这些测试时,我去拿一杯咖啡…

…都做完了吗?好。现在,当你再次运行“npm test”命令,你应该看到,所有的测试用例都在运行,且通过。(如果它们没有通过,修复之后再继续!)

既然你已经做完了,把新代码上传到GitHub。

自动化

大多数JavaScript开发人员使用某种自动化工作流,使编写和运行测试的过程更容易一些。有几种常用的工具,但是这篇文章将使用 gulp。你在本教程中会用它来干几件事,现在它将帮助启动测试。首先,安装 gulp 和 gulp mocha 插件。

你需要在父目录中添加一个gulpfile.js,它包含以下行:

view rawgulpfile.js hosted with ❤ by GitHub

该文件表示,它将监视一个名为“gulp”的目录,所以你需要创建它。在这个目录中,创建一个index.js文件,它是被gulp执行所有JavaScript文件的入口点。然后创建一个名为“task”的文件夹——index.js将引用该目录下的所有文件,以便gulp知道它们。

view rawgulpindex.js hosted with ❤ by GitHub

现在进行最后一点复制-粘贴。在你的task目录,创建一个测试任务,它将启动所有测试:

view rawgulptaskstest.js hosted with ❤ by GitHub

您会注意到test.js这个gulp task引用了spec目录,并加载了setup.js文件。

在这之后,你的目录应该像这样:

是否记得我在文章中提到的npm初始化步骤“gulp test”?这里是它存在的地方。使用你喜欢的文本编辑器打开package.json,并确保它有这样一段脚本: