Denoばた会議 Monthly 第15回

Deno v1.28

npmパッケージサポートの安定化

--unstableなしでnpmパッケージを利用できます。

$ cat main.js
import chalk from "npm:chalk@5.1.2";

console.log(chalk.green("Deno"));

$ deno run --allow-read --allow-env main.js

npmパッケージサポートの改善

今後計画されている変更内容などについてはロードマップを参照ください

ロックファイルの自動適用と生成

deno.json(c)が存在する場合、ロックファイル(deno.lock)の生成と適用が自動化されました。

$ ls
deno.json  main.js

$ deno run main.js

$ ls
deno.json  deno.lock  main.js

この挙動は--no-lockで無効化できます。

Deno.Commandが追加 (--unstable)

const command = new Deno.Command("deno", {
  args: ["fmt", "--ext=json", "-"],
  stdin: "piped",
});
command.spawn();
const file = await Deno.open("deno.json");
file.readable.pipeTo(command.stdin);

const { stdout } = await command.output();
console.info(new TextDecoder().decode(stdout));

const status = await command.status;
console.info(status.success);

deno benchの安定化

deno benchコマンドとDeno.bench--unstableなしで利用できます。

function sum(...numbers: Array<number>): number {
  return numbers.reduce((a, b) => a + b, 0);
}

Deno.bench("sum", () => {
  sum(1, 2, 3, 4, 5);
});

unstable APIの安定化

以下のAPIも安定化され、--unstableなしで利用できるようになりました。

  • Deno.networkInterfaces()
  • Deno.systemMemoryInfo()
  • Deno.uid()
  • Deno.gid()

V8がv10.9へアップグレード

proposal-array-groupingのサポートが入っています。

console.log([5.6, 4.1, 3.5, 4, 5.2].group(Math.floor));
$ deno run --v8-flags=--harmony-array-grouping main.js
{ "3": [ 3.5 ], "4": [ 4.1, 4 ], "5": [ 5.6, 5.2 ] }

その他の話題

denoland/fresh-wordpress-themes

WordPressをHeadless CMSとして使いつつ、フロントエンドをFreshで開発するためのテンプレートがDeno公式で公開されました。

以下の記事で使用方法などが解説されています。

Launch Week

Denoのnpmパッケージサポートのデモとして、チュートリアルが公開されています。

  1. Persist Data in Deno with npm using Prisma, Mongoose, Apollo, and more.
  2. Build Apps in Deno with Frameworks such as React, Vue, Express, and more.
  3. Build a More Secure Web using npm with Deno
  4. Run npm and Deno anywhere

Deno Advent Calendar 2022

Qiitaで2022年のDenoのAdvent Calendarが公開されました。