大约一周以来,我们的插件仓库没有托管数百个 jQuery 插件和数千个笔记本电脑电池广告,而是提供了一条关于垃圾邮件的相当可悲的消息,并暗示了某种“新的提交过程”。这种情况发生得非常突然,我们对由此给每个人带来的不便表示歉意。请允许我花几分钟时间解释发生了什么,我们将去哪里,以及它如何影响你。如果你很着急,这里是简短版本。
背景故事
你所知道的和喜爱的插件站点在最初设置时是一个有价值的工具,但它逐渐变成了一个对项目来说有点像烫手山芋。虽然像 GitHub 和 npm 这样的强大分发工具已经出现,但我们却被困在了一个老化的、以 CMS 为导向的范例中,这让插件的开发人员和使用者都感到沮丧。许多人转向了替代来源来查找和验证插件。此外,该站点的原始实施者和维护者已经不再积极参与 jQuery 项目。虽然团队面临着关于可用性和缺乏功能的持续抱怨,但该站点本身却面临着(各种类型的)垃圾邮件的猛攻。既有标准的、关键词丰富的 SEO 垃圾邮件,还有一些更险恶的东西:第三方为了寻找联盟现金,批量发布文档不足、没有演示的插件,并链接到付费下载站点。虽然这并没有明确禁止,但它给用户带来了糟糕、混乱的体验,并让该站点有一种一切都不对劲的感觉。
最好的计划…
对所有这些问题都很敏感,团队开始制定完全改造的要求。我们知道我们不想再从事接受上传、提供下载以及在自己的服务器上普遍制定插件“发布”过程的业务。由于我们的官方项目已经在 GitHub 上,我们知道我们想利用他们已经为分发、版本控制和促进开放协作开发发明的许多工具。另一个要求是创建一个标准模式,供作者清楚地说明依赖关系,例如插件支持的 jQuery 版本,以及它需要才能正常运行的其他插件和 CSS 资源。我们还希望引入一些质量控制,既有被动机制,例如要求 GitHub 和清单文件进行分发,也有主动机制,例如用户评分。最后,我们想要一个干净的开端;有了更严格的提交要求,就不能批量导入所有旧插件。我们在准备规范方面取得了很大的进展,但由于缺乏资源和许多其他项目,我们从未能深入实施阶段。毕竟,旧站点“有效”!
…往往事与愿违

随着垃圾邮件的激增和多个报告开始出现在 jQuery Core 错误跟踪器上,我想至少采取一些步骤来清除一些垃圾邮件和丢脸。在获得对站点管理工具的新权限后,我与 Drupal Views Bulk Operations 模块 合作,开始识别和删除垃圾邮件发送者及其帖子。在一天或两天内,据称该站点上的近 90% 的“内容”已被删除。我继续监测情况,并在垃圾邮件出现时将其删除。不幸的是,我可能网撒得太宽,把好孩子也一起扔掉了。更不幸的是,我在开始这个过程之前没有备份数据库。到目前为止,你可能已经知道这个故事的结局。后来,在一周内,当我试图删除四条垃圾邮件时,我完全惊恐地发现操作结果报告显示,剩下的 10%——数据库中剩下的每个插件——已被清除。剩下的只有一年前的备份。当然,我意识到这是一个可怕的结果,我对此负全部责任。如果这有帮助,我很乐意接受仇恨邮件和推文,谴责我玩忽职守、不专业或愚蠢。
在此情况下,我们有两种选择。
- 继续踢罐头下路:从旧备份中恢复,无论如何都会丢失大量数据,并让作者经历重新上传插件的痛苦过程,即使该站点注定要被弃用。
- 利用这次明显的错误作为契机,集中精力,与过去决裂,并最终实现我们长期以来一直在讨论的网站。
我们选择了后者。
细节
在过去几天里,我们已经开始将我们的计划付诸行动,构建一个由 GitHub 支持的基础设施。在新网站上列出插件有两个要求:

- 一个有效的 package.json 文件
我们遵循 CommonJS 和 npm 的思路,创建了一个模式来指定 jQuery 插件的依赖项、交付方式和其他元数据。虽然格式在很大程度上与这些其他项目相似,但我们不得不进行一些小的调整,以适应一些插件特定的细节。
- 至少有一个版本发布
这意味着使用有效的语义版本号 (semver) 字符串标记你的发布点。
我们简化了提交和维护流程,只需一个单次步骤:在你的插件的 GitHub 仓库中添加一个 post-receive 钩子。假设你的插件符合指南,将在插件网站上创建一个页面来展示你的用法和下载信息。我们将跟踪你推送的新版本。
过渡期间
我们认识到旧网站仍然是许多人的常规资源,尤其是新的 jQuery 用户,他们仅仅重视存在一个中央浏览位置,尽管它存在缺陷。虽然许多有经验的用户已经转向其他网站,或者依赖于与可信作者的关系和口碑,但这些需要时间来发展。在我们能够启动新系统之前,我们很乐意将你引导到其他几个目录和可以提供帮助的人员:
如果在搜索这些或任何其他目录的过程中,你被重定向到当前的 plugins.jquery.com 网站,通常快速搜索作者的名字和插件的名字会找到一个替代网站,该网站托管了它。此外,DailyJS 最近做了一个有用的替代方案汇总,其中包含更多详细信息。
插件作者的下一步
如果你是一位希望确保你的插件能够在第一天(甚至提前)准备就绪的插件开发者,你将希望确保你的插件已上传到 GitHub,然后开始创建你的 package.json 文件,并确保你的版本已正确标记。如果你还不熟悉 Git 和 GitHub,那么现在可能是你开始学习的好时机,开始使用。如果你更喜欢其他 SCM 系统,你可以查看从 svn 或 hg 设置镜像,或者其他项目托管网站,如 bitbucket 或 gitorious。如果你不将你的插件作为开源开发,或者你根本不使用任何源代码控制,那么我们目前无法容纳你。
我能提供什么帮助?
虽然该网站仍在开发中,但你现在可以在 github.com/jquery/plugins.jquery.com/ 上跟踪进度,甚至设置你自己的本地开发环境。我们仍在努力搭建一个公共的测试环境。
虽然该网站本质上“由”GitHub 提供支持,但显然还有许多活动部件在起作用。该网站实际上将从 WordPress 内部提供服务,WordPress 使用 node.js 工具填充索引插件的内容。仍然有许多问题需要解决,所以如果这听起来像你想要参与的堆栈,请加入我们,在 仓库 中。我们将使用 GitHub Issues 处理所有功能请求、错误和讨论。
虽然我们已经对我们的 package.json 模式进行了大量的思考,但它仍然是一个动态文档,如果你对为什么它是这样有疑问或评论,请前往 这个 issue。
勘误
在理想的世界里,这当然不会以现在的方式发生。可悲的是,它发生了。我们希望你能接受我们为这次过渡可能使你的工作更难、给你带来一些额外的意外工作,或者只是让你感到不快而表示歉意。如果你能够原谅我们,与我们同在,甚至伸出援手,我们相信我们能够交付社区应得的现代、实用的插件网站。
TL;DR
所以说了这么多,这是要点。