跳至主要内容

查看目录

从 /x 迁移 Deno 模块到 JSR

注意:本指南仅供 Deno 用户使用。如果您在 Node.js 或其他运行时环境中使用 JSR,则此信息与您无关。

对于目前在 deno.land/x 上托管模块的包作者,应该可以将这些模块迁移到 JSR,而只需进行最小的更改。在本指南中,我们将描述在 Deno 中使用 HTTPS 导入的更改,评论对 deno.land/x 的未来支持计划,并描述迁移过程。

Deno 中支持的 HTTPS 模块;在 JSR 包中

HTTPS 导入 将继续在 Deno 中得到支持。任何使用 deno.land/x、deno.land/std 和其他 URL 上托管的模块的代码将无限期地继续工作。

但是,JSR 上的 Deno 代码**不允许**使用 HTTPS 导入。JSR 根据语义版本对依赖项进行重复数据删除,而这对于 HTTPS 导入的依赖项来说是不可能的。如果您尝试发布包含 HTTPS 导入的代码到 JSR,您将收到错误。

deno.land/x 的未来支持

目前没有计划停止或关闭 deno.land/x。模块作者可以继续在那里发布和更新模块,使用它的 Deno 代码将继续运行。

将包从 /x 迁移到 JSR

如果您已经在 deno.land/x 上发布了包,那么很有可能可以将其迁移到 JSR,而且几乎不会遇到麻烦。以下是迁移的总体步骤。

尝试使用 /x 到 JSR 迁移工具

为了帮助加速将现有 /x 包迁移到 JSR,Deno 团队创建了一个 实用工具 来自动化最常见的步骤。要使用此工具,您需要安装最新版本的 Deno CLI。使用以下命令获取适用于您平台的最新 canary 版本:

deno upgrade --canary

然后,在您的包文件夹(可能是包含 deno.jsonmod.ts 的文件夹)中,执行以下命令:

deno run -Ar jsr:@deno/x-to-jsr

这将自动重构代码(如果可能),并在您的终端中提供有关可能需要的额外手动步骤的说明。完成迁移工具描述的任务后,请按照这些说明 将您的包发布到 JSR!

手动重构您的包

如果您希望手动迁移项目,以下是通常需要的几个高级步骤。

1.) 重构以摆脱 HTTPS 导入

您的代码可能正在使用 HTTPS 导入来依赖 deno.land/x 或 deno.land/std。在您可以在 JSR 上发布之前,您需要更改加载这些依赖项的方式。

将标准库导入更新到 @std JSR 范围

如果您正在使用来自标准库的 HTTPS 模块,我们建议您将这些依赖项更新为使用 JSR 上的较新 @std 范围。这将是未来获取这些模块最新版本的地方。

对于 deno.land/x 上的其他依赖项,使用 deno vendor

对于项目中的其他依赖项,您也可以按照上述步骤,逐个用 npm 或 JSR 上的等效依赖项替换它们。

如果您发现此过程过于困难,您也可以选择使用 deno vendor 命令下载所有 HTTPS 依赖项的本地版本,并将它们与您的包一起存储在源代码管理中。

2.) 确保您的库不包含缓慢的类型

在您的主包目录中,运行以下命令

deno publish --dry-run

这将告知您 TypeScript 代码中可能导致类型检查速度变慢的任何问题。 在此处查看文档,了解有关如何修复缓慢类型的更多信息。

3.) 发布!

完成上述任务后,请按照这些说明 将您的包发布到 JSR!

在 GitHub 上编辑此页面