emahiro/b.log

Drastically Repeat Yourself !!!!

Deno で 3rd party 製ライブラリをいれる

Overview

Deno で 3rd party のライブラリを import する方法についての備忘録です。

Install third party libraries

公式ドキュメントの https://deno.land/x に記載している手順になります。

https://deno.land/x/MODULE_NAME@BRANCH/SCRIPT.ts を import に追加します。
バージョンを指定したい場合には、https://deno.land/x/MODULE_NAME@vX.X.X/SCRIPT.tsv を付けます。(この辺もなんとなく Go のお作法っぽさがありますね。)

※ Deno は node のエコシステムから外れているので何か必要なライブラリがあるときはファイルにて直でバージョンと import したいライブラリ名を指定します。公式のライブラリですが同様の形式をとります。

Install oak

Deno でいい感じの web サーバーを書ける Router のライブラリを探していたら oak がヒットした( deno.land/x 配下にもあるし、スター数も多い)のでこれを入れてみます。

Deno の公式ドキュメントに記載されてる方法で oak を import します。

import { Application } from "https://deno.land/x/oak@v5.3.1/mod.ts";

const port:number = 8080;
const app = new Application()

app.use((ctx) => {
    ctx.response.body = "Hello oak app"
})
app.addEventListener("listen", ({ hostname, port}) => {
    console.log(`Start server on ${hostname}:${port}`);
  });
await app.listen({hostname: "127.0.0.1", port: port})
console.log("Shutdown server.")

これでアプリを起動してみると

$ deno run --allow-net --unstable main.ts
Download https://deno.land/x/oak@v5.3.1/mod.ts
Download https://deno.land/x/oak@v5.3.1/application.ts
Download https://deno.land/x/oak@v5.3.1/context.ts
Download https://deno.land/x/oak@v5.3.1/helpers.ts
Download https://deno.land/x/oak@v5.3.1/cookies.ts
Download https://deno.land/x/oak@v5.3.1/httpError.ts
# ...

と言う感じで依存 module が DL -> コンパイルされてサーバーが起動します。

シュッとサーバー書くときには便利だなーと思いました。

1点不満があるとすると、エディタ上ではまだ DL していないモジュールの補完を聞かせることができないことかなと思います。まぁそれはそうだろう、って言う気もしてますが。