使用套件
您可以在任何支援 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.json
中指定的 JSR 模組新增一個 匯入映射 條目。該條目會類似如下
{
"imports": {
"@luca/cases": "jsr:@luca/cases@^1.0.1"
}
}
對於 npm 和相容於 npm 的套件管理員,jsr
指令會將依賴項目新增至您的 package.json
檔案中,同時會將 .npmrc
檔案連同讓 npm 可使用 JSR 的必要設定檔一同新增至您的專案根目錄中。進一步了解 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 模組的更新時將需要使用此 .npmrc
檔案。
新增套件後,您可在 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:
說明符接在套件範圍、套件名稱、語意版本約束 後面,並且可以選擇在最後接一個項目進入點。
語意版本解析度
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/cases@1.0
# npm (and npm-like systems)
npx jsr add @luca/cases@1.0
如果您想要使用特定的修訂版本,您可以指定修訂版本
# deno
deno add @luca/cases@1.0.1
# npm (and npm-like systems)
npx jsr add @luca/cases@1.0.1
如果您想要使用至少特定修訂版本的版本,但同時允許
更新時,您可以使用 ^
字首指定補丁版本
# 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
欄位中列出的檔案無法由套件使用者直接匯入。但是,它們可以由套件中的其他模組匯入。
套件不需要有預設入口點。如果套件沒有預設入口點,您必須在匯入中指定入口點。