Zenn
Closed25

[Scrap] Deno に Hello World する

ヘブンヘブン

Deno が必須になってきた

今新規のプロダクトで Supabase を使っているのだけど、Supabase Function が Deno で作るっぽい。

あと mcp Server 便利そう

Deno が mizchi さんの便利なツールセットになってるっぽく、MCP Server の実装にも便利そう。
https://zenn.dev/mizchi/articles/deno-mcp-server


ということで、Deno に慣れていきたい。

ヘブンヘブン
ヘブンヘブン

Deno で In-Source Testing

Deno の In-Source Testing についてググったら、mizch さんの記事が出てきた。読んでいく
https://zenn.dev/mizchi/articles/inline-testing

NODE_ENV で test 時にしか実行されないスコープを作るという感じだった。内容は理解しつつ4年前の記事なので、公式に対応が入っていないか調べてみる。

ヘブンヘブン

Command Line Interface

コマンドラインも作ってみたい
https://docs.deno.com/runtime/getting_started/command_line_interface/

後から気づいたが、このドキュメントはそもそも deno コマンド自体に関するもので、CLI Command を作成する話じゃなかった。

ヘブンヘブン

deno run 用の flag は実行ファイルの指定の前に書く

これ地味に大事そう。実行ファイルに渡される args は、実行ファイル以降の文字列になるから。

# Good. We grant net permission to net_client.ts.
deno run --allow-net net_client.ts

# Bad! --allow-net was passed to Deno.args, throws a net permission error.
deno run net_client.ts --allow-net
ヘブンヘブン

Executable scripts

こんな風に書けば、勝手に deno runtime を使って実行できるようになるらしい。shell script みたいに使える感じか

#!/usr/bin/env -S deno run --allow-env
const path = Deno.env.get("DENO_INSTALL");

console.log("Deno Install Path:", path);

https://docs.deno.com/examples/hashbang_tutorial/

ヘブンヘブン

コマンドラインツールをわざわざ作らなくても、書き捨ての deno script で十分な可能性はあるので、一旦終わり。

ヘブンヘブン

Modules and dependencies

依存関係周りは理解しておきたい。

https://docs.deno.com/runtime/fundamentals/modules/

ヘブンヘブン

deno.json の imports の使い所

deno.json の imports は各モジュールのバージョンを一括で指定したいときに便利とのことなので、書き捨ての script を超える規模のコードベースに使う感じかな?

https imports

直接 https の url を指定して package を取得できる。

上書きもできる

Deno provides mechanisms to override dependencies, enabling developers to use custom or local versions of libraries during development or testing.

これ結構面白いな。どういう仕組みかはよく分からないけど、部分的に違うバージョンを使ったりできるっぽい。

ヘブンヘブン

import 元のパスの指定方法まとめ

ChatGPT にまとめてもらった。

記法プレフィックス 説明
ローカルモジュール プロジェクト内のファイルを参照。相対パスまたは絶対パスで指定し、ファイル拡張子を必ず含む必要があります。 import { add } from "./calc.ts";
HTTPS モジュール HTTP/HTTPS URL を利用して、リモートから直接モジュールをインポートします。 import { Application } from "https://deno.land/x/oak/mod.ts";
jsr: モジュール JSR レジストリからパッケージをインポートするための記法です。パッケージ名の前に jsr: を付け、必要に応じてバージョンを指定します。 import { camelCase } from "jsr:@luca/cases@1.0.0";
npm: モジュール npm パッケージをインポートするための記法です。パッケージ名の前に npm: を付け、バージョン指定も可能です。 import { say } from "npm:cowsay@1.6.0";
ヘブンヘブン

Frozen lockfile

下記のように指定すれば、lock file を固定できる。

{
  "lock": {
    "frozen": true
  }
}
ヘブンヘブン

他にも、プライベートレジストリを使うにはどうすればいいか書いてあったので、いつか真面目にやる時に参照しよう。

ヘブンヘブン

Effective Deno

有名な本っぽい。4年ほど前の本で色々変わってそうだけど軽く目を通しておこう。
https://zenn.dev/uki00a/books/effective-deno/viewer/about

ヘブンヘブン

vscode-denoのインストール後、コマンドパレットを開き、Deno: Initialize Workspace Configurationコマンドを実行してください。(コマンドパレットはCtrl+Shift+Pで開けるはずです)

こんなんあったな...完全に忘れてた

ヘブンヘブン

まとめ

一旦キャッチアップは終わりで、あとは作りながら学んでいけば良さそう。

ただ、mizchi さんが書いてる Deno が少しでも関連の記事は全部読んでおきたい。知りたいこと全部載ってそう。続く

[Scrap] mizchi さんの Deno 関連の記事を読む
https://zenn.dev/heavenosk/scraps/eef9637c893ca4

このスクラップは1ヶ月前にクローズされました
ログインするとコメントできます