高木のブログ

【Deno】Hello, World!を出力するだけのコマンドを作る

2021/05/25

作りたいコマンドができたので、Denoでコマンドを作成する予習

Hello, World!を出力するだけのコマンド作成する

Denoのバージョン

Dockerでやるのは不都合が出てきたのでMacにHomebrewで直接インストールした

$ brew install deno
$ deno --version
deno 1.10.2 (release, x86_64-apple-darwin)
v8 9.1.269.27
typescript 4.2.2

コマンドの作成

Hello, World!と出力するだけのファイルを作成

cli.ts
console.log("Hello, World!");

権限も特にいらないのでこれで完成

$ deno run cli.ts
Hello, World!

コマンドのインストール

インストール

deno installでインストールできる

$ deno install cli.ts

もしくはGitHubに上げて

$ deno install --name deno_hello https://raw.githubusercontent.com/ytkg/deno_hello/main/cli.ts

※デフォルトで拡張子を省略したファイル名がコマンド名になるが、mod.tscli.tsの場合は親ディレクトリ名になるので、--nameオプションでコマンド名の指定をしている

パスを通す

デフォルトで$HOME/.deno/bin以下に保存されるのでパスを通してあげる

$ echo 'export PATH="$HOME/.deno/bin:$PATH"' >> ~/.bash_profile
$ source ~/.bash_profile

実行

$ deno_hello
Hello, World!

動いた

実行ファイルの中身

~/.deno/bin/deno_hello
#!/bin/sh
# generated by deno install
exec deno run 'https://raw.githubusercontent.com/ytkg/deno_hello/main/cli.ts' "$@"

別のやり方(コンパイル)

コンパイル

$ deno compile cli.ts

もしくはGitHubに上げて

$ deno compile --output deno_hello https://raw.githubusercontent.com/ytkg/deno_hello/main/cli.ts

※デフォルトで拡張子を省略したファイル名がコマンド名になるが、mod.tscli.tsの場合は親ディレクトリ名になるので、--outputオプションでコマンド名の指定をしている

実行ファイルの移動

deno_helloという実行ファイルが生成されている

$ ls
cli.ts          deno_hello

$ mv ./deno_hello $HOME/.deno/bin

実行

$ deno_hello
Hello, World!

OK!

リポジトリ

今回の成果物

ytkg/deno_hello - GitHub

参考


Written by ytkg, Twitter, GitHub

Pixela