deno vendor
コマンド使い方
# サードパーティモジュール及びimport_map.jsonをvendorディレクトリへ書き込む
$ deno vendor mod.ts
# vendor/import_map.jsonによってサードパーティモジュールをvendorディレクトリから透過的に読み込めます
$ deno run --import-map=vendor/import_map.json mod.ts
vendor/import_map.json
{
"imports": {
"https://deno.land/": "./deno.land/",
"https://unpkg.com/": "./unpkg.com/"
},
"scopes": {
"./unpkg.com/": {
"./unpkg.com/puppeteer@10.2.0/lib/esm/puppeteer/common/Debug.js": "./unpkg.com/puppeteer@10.2.0/lib/esm/puppeteer/common/Debug.js",
"./unpkg.com/puppeteer@10.2.0/lib/esm/puppeteer/common/helper.js": "./unpkg.com/puppeteer@10.2.0/lib/esm/puppeteer/common/helper.js"
}
}
}
Deno.File
がDeno.FsFile
にリネームWeb APIのFileとかぶって混乱を生むことがあったため
Deno.File
はv2.0で削除予定のようなので、今のうちにDeno.FsFile
に移行しておくことを推奨します。
Deno.FsFile
(Deno.File
)やDeno.Conn
などでWeb Streams APIがサポート例) Deno.FsFile.readable
でReadableStream
へアクセスできます。
const file = await Deno.open("README.md");
const decoder = new TextDecoder();
for await (const x of file.readable) {
console.log(decoder.decode(x));
}
例) Deno.FsFile.writable
でWritableStream
へアクセスできます。
const res = await fetch("https://avatars.githubusercontent.com/u/35212662?v=4");
const file = await Deno.create("avator.png");
await res.body!.pipeTo(file.writable);
Deno.Conn
でsetNoDelay()
とsetKeepAlive()
がサポートconn.setNoDelay(); // Nagleアルゴリズムを無効化
conn.setKeepAlive(); // TCPキープアライブを有効化
deno compile
の安定性の向上deno compile
コマンドの内部では、元々swcを使用してコードがバンドルされていました。
Deno v1.19からはswcの代わりにeszipが使われるようになりました
これにより安定性の向上などが見込まれます。(スタックトレース、import.meta.url
など)
(deno bundle
コマンドでは引き続きswcが使われてます)
CompressionStream
とDecompressionStream
がサポートconst res = await fetch("https://github.com/x-motemen/ghq/archive/refs/tags/v1.2.1.tar.gz");
const file = await Deno.create("ghq.tar");
await res.body!
.pipeThrough(new DecompressionStream("gzip"))
.pipeTo(file.writable);
const signalListener = () => {
// SIGTERMのハンドリング...
};
// SIGTERMのリスナを登録
Deno.addSignalListener("SIGTERM", signalListener);
// SIGTERMのリスナを削除
Deno.removeSignalListener("SIGTERM", signalListener);
Deno.serveHttp
でUnixドメインソケットがサポート--watch
)で--no-clear-screen
がサポートconsole.log()
などでの循環参照の表示が改善https://github.com/denoland/deno/pull/13633
これが実現されれば、Node.js向けにN-APIを使って書かれたネイティブモジュールが動くようになりそうです。
https://github.com/denoland/deno_std/pull/1877
まだマージされていませんが、deno_stdにdotenv
モジュールを追加するPRが作成されています。
公式のGitHubアクションがサポートされました。
- name: Deploy to Deno Deploy
uses: denoland/deployctl@main
with:
project: "nuxt3-example"
root: ".output"
entrypoint: "server/index.mjs"
https://github.com/ije/aleph-canary
気になる人はウォッチしておくとよいかもしれないです。
また、Aleph.jsは最近new-architectureというブランチでも活発に開発が行われていて、JSXマジックの削除など、大きな変更も行われているようです。
https://kdy1.dev/posts/2022/1/tsc-go
SWCの作者であるkdy1氏がtscをGoでポートしているという話
将来的にはDenoでも採用されるという可能性もあるかもしれません。