跳到主要内容
Deno 2.4 现已发布,包含 deno bundle、字节/文本导入、OTel 稳定版等功能
了解更多

deno.land/x 的更新

deno.land/x 的目标是提供一个与 Deno 运行方式一致的第三方 Deno 模块的中心位置。我们希望用户能够将 https://deno.land/x/oak/mod.ts 这样的源代码 URL 直接复制粘贴到浏览器中,并能够查看带有标记的源代码以及自动生成文档的链接。

今天,我们发布了 deno.land/x 服务的重写版本,它解决了许多长期存在的问题,例如 GitHub API 的速率限制以及提供不可变源代码下载(类似于 crates.io)。

目标

  • 使源代码不可变。
  • 移除网站对 GitHub API 的速率限制。
  • 消除手动更新 database.json 以添加模块的需要。

网站目前的工作方式是在后台查询 GitHub 以获取源代码。这种方式虽然可行,但我们会遇到 API 限制,而且代码可能会在用户不知情的情况下发生变化。我们最终确定的更改是自行保留所有已发布代码的副本,以便我们能够确保内容的可用性和完整性。

变化

我们采纳了一种设计,即提供一个 webhook,当它集成到您的仓库中时,将保存任何带有 Git 标签的代码的不可变版本。

  • 源代码不再从 raw.githubusercontent.com 获取,而是从我们的 S3 存储桶中获取,我们可以在那里永久保存它。
  • 现在,发布模块通过 Webhook 进行,而不是通过在 deno_website2 仓库上打开 PR。
  • 您不能再从任意提交或分支导入,只能从标签/发布版本导入。例如:https://deno.land/std@BRANCH 将不再起作用,只有像 https://deno.land/std@0.63.0 这样的带标签提交才能使用。
  • 从注册表提供的所有文件都是不可变的。它们不能被包作者更改或删除。

这对您有什么影响?

如果您只是从 deno.land/x **使用模块**,您应该会看到很少的功能差异。在网站上下载和浏览文件/文件夹会更快,并且所有模块现在都显示其 GitHub 星标数量。

如果您是**模块的作者**,您需要做一些事情

  1. 在您的仓库中添加一个 GitHub Webhook。您可以通过访问 https://deno.land/x 并点击“添加模块”按钮来找到操作说明。
  2. 如果您的仓库中没有任何 Git 标签,请创建一个标签。只有带标签的版本才会在 deno.land/x 上发布。

我们将在添加 webhook 后 30 天内移除所有未发布标签的模块。

未来计划

借助这种新架构,我们有可能添加各种功能。以下是我们计划的一些功能:

  1. 显示所有模块的下载量
  2. 根据模块的维护状况为所有模块评分
    • 验证 deno lintdeno fmtdeno doc 和类型检查是否未产生错误
    • 依赖项是否固定到特定版本
    • 模块是否包含 LICENCE、README.md
  3. 在网站上显示模块的依赖项
  4. 提供模块中所有 TypeScript 文件的 JS(类型剥离)版本,以便直接从网页浏览器导入

如果您有任何意见或反馈,请在 deno_registry2 仓库中提出问题,或在 Deno Discord 上与我们交流。