从 /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.json
或 mod.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!