Denoばた会議 Monthly 第20回

Deno v1.34

Deno.serve()のシグネチャの変更

Deno.Serverという新しいオブジェクトが返却されるようになりました。

const ac = new AbortController();
const server: Deno.Server = Deno.serve(
  { signal: ac.signal },
  (req) => new Response(req.body),
);

await server.finished; // サーバが完了するまで待機...

deno.json(c)とCLI引数でglobがサポート

{
  "lint": {
    "exclude": ["generated/**/*.ts"]
  },
  "tasks": {
    "my_task": "cat vendor/**/*.ts"
  }
}

deno.json(c)excludeフィールドがサポート

v1.33

{
  "fmt": {
    "exclude": [
      "fresh.gen.ts",
      "README.md"
    ]
  },
  "lint": {
    "exclude": ["fresh.gen.ts"]
  }
}

v1.34

{
  "fmt": {
    "exclude": ["README.md"]
  },
  "exclude": ["fresh.gen.ts"]
}

deno.json(c)nodeModulesDirが追加

これを設定しておくと、node_modulesディレクトリが作られます。(--node-modules-dirと同様)

{
  "nodeModulesDir": true
}

package.jsonに関する挙動の変更

v1.34

Denoの起動時にpackage.jsonで指定された依存関係があらかじめインストールされます。

v1.33

アプリケーションが実際に依存しているnpmパッケージのみが必要に応じてインストールされます。

その他の話題

Deno Deployでnode:URLがサポート

これにより、Deno DeployでExpressが動くようになったようです。

import express from "https://esm.sh/express@4.18.2?target=denonext";

const app = express();
app.get("/", (req, res) => {
  res.send("Hello Express");
});
app.listen(3000);

Deno DeployのChangelog

Deno Deployの公式サイトでChangelogページが公開されています。

Windmill

Airplaneなどの代替OSS

TypeScriptで書かれたスクリプトを実行するためにDenoが採用されているようです。