Skip to main content
On this page

发布包

任何定义了导出的 Deno 程序都可以作为包发布,供其他开发者导入。本页介绍发布位置以及发布方式。

选择注册表 Jump to heading

  • JSR:推荐用于以 Deno 为优先的包的注册表。 它可直接接受 TypeScript(无需构建步骤),会根据你的 JSDoc 注释生成文档,并向 Deno、Node.js 及其他运行时提供包。
  • npm:当你的使用者主要在 Node.js 上,或需要 npm 工具链时,请发布到这里。 使用 deno pack 从 Deno 项目构建与 npm 兼容的 tarball,或者使用 dnt 以获得更 可配置的构建流程。
  • deno.land/x:用于 HTTPS 导入的旧注册表。对于新包,建议优先使用 JSR。

发布到 JSR Jump to heading

deno.json 中为你的包指定名称、版本和入口点:

deno.json
{
  "name": "@scope/my-package",
  "version": "1.0.0",
  "exports": "./mod.ts"
}

名称始终带有作用域(@scope/name)。首次发布时,请在 jsr.io 上创建该作用域。

检查将要发布的内容,然后执行发布:

>_
deno publish --dry-run   # 验证文件列表和元数据
deno publish             # 打开 jsr.io 进行身份验证,然后发布

deno publish 会在上传前对你的代码进行类型检查,并验证你的导出不依赖 于包外的任何内容。有关标志,请参阅 deno publish 参考,有关作用域、版本控制、来源信息以及从 CI 发布,请参阅 jsr.io 上的发布包

要在各个版本之间更新版本字段,你可以使用 deno bump-version

发布到 npm Jump to heading

deno pack(Deno 2.8+)会从 Deno 优先 项目构建与 npm 兼容的 tarball:它会转译 TypeScript、生成类型 声明,并生成 npm 期望的 package.json 元数据。

>_
deno pack                # 创建 tarball
npm publish ./package.tgz

对于较旧的设置,或需要对输出进行细粒度控制的构建 (shims、多目标、构建期间运行测试),请使用 dnt,即 Deno 到 npm 的构建工具。

工作区 Jump to heading

workspace 中,deno publish 会按依赖顺序发布 每个具有名称和版本的工作区成员。详细信息请参阅 将工作区包发布到注册表

自动化工作区发布 Jump to heading

deno bump-version 可以驱动整个工作区的发布流程。在工作区 根目录下运行且不指定递增时,它会根据自上次 发布以来所做的 Conventional Commits 推断每个成员的版本变更,重写根导入映射中的 jsr: 约束以保持跨包 引用同步,并在 Releases.md 前追加一条变更日志条目。有关规则以及用于固定提交范围的标志,请参阅 根据 Conventional Commits 推断版本变更

Deno 标准库 将此功能接入 CI 作为可供你适配的参考。其 version_bump 工作流 运行 deno bump-version --import-map import_map.json,使用 deno fmt 格式化生成的 说明,然后提交结果并打开一个发布 PR,其中包含 各包的版本变更以及新的 Releases.md 条目。 合并该 PR 并发布 GitHub release 会触发第二个工作流,该工作流 为每个成员运行 deno publish,因此带标签的发布会直接流向 JSR, 无需手动编辑版本。

继续 Jump to heading

Last updated on

Did you find what you needed?

编辑此页面
Privacy policy