跳至主要内容

查看目录

使用包

您可以在任何支持 ES 模块的运行时中使用 JSR 包,例如 Deno、Node.js、Bun、Cloudflare Workers 等。您还可以将 JSR 包与支持 ES 模块的捆绑器一起使用,例如 **Vite**、**esbuild**、**Webpack** 和 **Rollup**。

添加包

您可以使用以下任何命令将 JSR 包添加到您的项目中 - 以下示例将向您的项目添加最新版本的 @luca/cases

# deno
deno add @luca/cases

# npm (one of the below, depending on your package manager)
npx jsr add @luca/cases
yarn dlx jsr add @luca/cases
pnpm dlx jsr add @luca/cases
bunx jsr add @luca/cases

如果您使用的是 Deno,deno add 命令将在 deno.json 文件中为您指定的 JSR 模块添加一个 导入映射 条目。该条目将类似于以下内容

{
  "imports": {
    "@luca/cases": "jsr:@luca/cases@^1.0.1"
  }
}

对于 npm 和与 npm 兼容的包管理器,jsr 命令会将依赖项添加到您的 package.json 文件中,以及一个 .npmrc 文件到您的项目根目录,其中包含使用 JSR 与 npm 的必要配置。了解有关 JSR 的 npm 兼容性层 的更多信息。

使用 npx jsr add 安装后,您的 package.json 将包含一个类似于以下内容的依赖项条目

{
  "dependencies": {
    "@luca/cases": "npm:@jsr/luca__cases@^1.0.1"
  }
}

此 npm 依赖项配置使用了一个特殊的自定义范围,称为 @jsr,该范围现在已在 .npmrc 中为您配置。

@jsr:registry=https://npm.jsr.io

注意:您应该将新的 .npmrc 文件检入源代码控制 - 它将需要安装 JSR 模块的更新。

添加包后,您可以在跨运行时的 ES 模块代码中以相同的方式使用它

import { camelCase } from "@luca/cases";

camelCase("hello world"); // "helloWorld"

使用 jsr: 说明符导入

在 Deno 中,您可以使用包而无需安装步骤,方法是在源文件中直接使用 jsr: 说明符。在此示例中,我们直接在代码中导入 @luca/cases 模块,而无需导入映射条目。

import { camelCase } from "jsr:@luca/cases@^1.0.1";

camelCase("hello world"); // "helloWorld"

这里,jsr: 说明符后跟包范围、包名称、semver 约束,以及可选的入口点。

语义版本控制解析

JSR 使用语义版本控制来解析包版本。这意味着您可以在 jsr: 指定符、导入映射或 package.json"dependencies" 条目中使用语义版本范围,然后运行时或包管理器将下载满足包所有约束的最新版本。

如果您只关心主版本,您可以只指定主版本

# deno
deno add @luca/cases@1

# npm (and npm-like systems)
npx jsr add @luca/cases@1

如果您想使用特定的次版本,您可以指定次版本

# deno
deno add @luca/[email protected]

# npm (and npm-like systems)
npx jsr add @luca/[email protected]

如果您想使用特定的补丁版本,您可以指定补丁版本

# deno
deno add @luca/[email protected]

# npm (and npm-like systems)
npx jsr add @luca/[email protected]

如果您想使用至少特定的补丁版本,但希望允许
更新,您可以使用 ^ 前缀指定补丁版本

# deno
deno add @luca/cases@^1.0.1

# npm (and npm-like systems)
npx jsr add @luca/cases@^1.0.1

了解更多关于语义版本控制的信息,请点击 这里.

入口点

JSR 上的每个包都有一个或多个入口点。入口点是包用户可以导入的模块。入口点在包配置文件的 exports 字段中指定。 了解更多关于 exports 的信息。

如果您在导入中没有指定入口点,运行时将使用包的默认入口点。例如,当您导入 jsr:@luca/cases@1 时,您将导入 @luca/cases 包的默认入口点。

您也可以从包中导入其他入口点。为此,请在版本约束之后指定入口点

import { join } from "jsr:@std/path@1/join";

如果您使用的是导入映射或 package.json,您可以在别名之后指定入口点

import { join } from "@std/path/join";

未在 exports 字段中列出的文件不能被包用户直接导入。但是,它们可以被包中的其他模块导入。

包不需要有默认入口点。如果包没有默认入口点,那么您必须在导入中指定一个入口点。

在 GitHub 上编辑此页面