Chapter 08

サードパーティモジュールを使ってみよう

uki00a
uki00a
2021.05.07に更新

deno_stdを使ってみようの章では、Denoの標準ライブラリであるdeno_stdについて解説しました。

しかし、欲しい機能がdeno_stdでは提供されていないこともあるかと思います。

その場合は、サードパーティモジュールの利用を検討するとよいです。

この章では、サードパーティモジュールの使用方法について解説します。

deno.land/xからサードパーティモジュールを利用する

deno.land/xとは、Denoの公式のモジュールレジストリです。

試しに、DenoのSQLiteモジュールであるdeno-sqlitedeno.land/xから利用してみます。

以下のようなファイルを用意してみましょう。

sample.ts
import { DB } from "https://deno.land/x/sqlite@v2.4.0/mod.ts";

const db = new DB(":memory:");
db.query("CREATE TABLE users (id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT, age INTEGER)");
db.query("INSERT INTO users (name, age) VALUES (?, ?)", ["hoge", 20]);
db.query("INSERT INTO users (name, age) VALUES (?, ?)", ["piyo", 30]);
for (const [name, age] of db.query("SELECT name, age FROM users")) {
  console.log({ name, age });
}
db.close();

Denoでサードパーティモジュールを利用するときは、上記のようにimport文でモジュールの配信元のURLを指定します。

試しに、上記のファイルを実行してみましょう。

$ deno run sample.ts

実行すると、依存しているサードパーティモジュールがダウンロードされると思います。

Denoでは、一度ダウンロードされたモジュールはJavaScriptコードへトランスパイルされた上で、ローカルのファイルシステムへキャッシュされます。

そのため、すでにキャッシュ済みのサードパーティモジュールに依存したコードは起動が高速化されます。

サードパーティモジュールの探し方

Deno向けに書かれた多くのサードパーティモジュールは、以下のレジストリで公開されています。

基本的には、これらのレジストリからモジュールをimportするとよいでしょう。

使いたいモジュールを探したいときは、以下のページから探すとよいです。

npmパッケージを使いたい

deno.land/xnest.landに、目当てのモジュールが見つからない場合もあるでしょう。

そのような場合は、npmパッケージの使用を検討してみるとよいでしょう。

Denoでnpmパッケージを使用したいときは、esm.shSkypackを利用するとよいです。

import * as htmlParser from "https://esm.sh/node-html-parser@3.1.2?no-check";

console.log(htmlParser.parse("<div>Hello</div>"));

Denoからnpmパッケージを使用するノウハウの記事でnpmパッケージの使用方法についてより詳しく解説しています。

よろしければ、そちらのページも参照ください。

現時点では大部分のnpmパッケージはDenoでの使用を想定しているわけではありません。

そのため、esm.shやSkypackを利用したとしても、必ずしも動作するとは限りません。

ポイント

  • 多くのDenoモジュールはdeno.land/xnest.landに公開されています。
  • npmパッケージを使いたいときはesm.shSkypackを利用するとよいです。