Denoからnpmパッケージを使用する
最近はnpm:パッケージ名のURLをESModulesインポートで使えるはず
Node.jsとDenoの両方をサポートするパッケージ
公式的にNode.jsとDenoの両方をサポートするパッケージがいくつか存在します(例: ky, cac.js等). そうしたパッケージを使用する際は、公式ドキュメントの手順に従うことを推奨します
kyの使用例)
code:typescript
import ky from "https://unpkg.com/ky@0.24.0/index.js";
console.log(await ky.get("https://example.com/api/users"));
ES Modules形式のnpmパッケージ
ES Modules形式で記述されており かつ Node.jsとブラウザの両方で動作するパッケージであれば、Denoでも動作する可能性が高いです
パッケージをimportする際はSkypackの使用をおすすめします
SkypackはX-TypeScript-Typesヘッダをサポートしているためです
Skypackからfakerを使用する例)
code:typescript
import faker from "https://cdn.skypack.dev/faker@5.1.0?dts";
console.log(faker.name.findName());
CommonJS形式のnpmパッケージ
CommonJS形式で記述されており、かつNode.jsのAPIに依存しないパッケージについては、jspm.devからimportすれば使用できる可能性があります
esm.shも使えます
@deno-typesを使用すると、対象のJavaScriptモジュールに型を適用することができます
code:typescript
// @deno-types="https://unpkg.com/typescript@4.0.3/lib/typescript.d.ts"
import ts from "https://jspm.dev/typescript@4.0.3/lib/typescript.js";
例
code:sample.ts
// @deno-types="https://unpkg.com/typescript@4.0.3/lib/typescript.d.ts"
import { default as ts } from "https://jspm.dev/typescript@4.0.3/lib/typescript.js";
const source = `
const a = 100;
const b = 200;
console.log(a + b);
`;
console.log(ts.transpileModule(source, {
compilerOptions: {
removeComments: true,
}
}));
code:sh
deno run https://scrapbox.io/api/code/deno-ja/Denoからnpmパッケージを使用する/sample.ts
Rollup等でバンドルされたパッケージ
Rollupでバンドルされたパッケージであれば、jsdelivr等からもimportできます。
例) https://cdn.jsdelivr.net/npm/preact@10.4.1/dist/preact.min.js
mizchiさんより情報をいただきました。
Node.jsのAPIに依存するパッケージ
Node.jsのAPIに依存するパッケージについては、std/nodeを使用する必要があります。
DenoでBabelを動かす例
esm.shならNode.jsのAPIをDenoにある程度置き換えてくれます
記事版:Denoからnpmパッケージを使用するノウハウ