Closed7

Denoでコマンドを作る

taktamurtaktamur

~/deno/cli.ts にhelloworldを書いて、

deno install cli.ts

とやったら、~/.deno/bin/deno ができた。

あれーと思ったけど、ドキュメントに理由があった。

実行可能ファイル名を変更するには、-n/ を使用します--name。
deno install --allow-net --allow-read -n serve https://deno.land/std/http/file_server.ts
実行可能ファイル名はデフォルトで推測されます。
  URL パスのファイル語幹を取得しようとします。上の例は「file_server」になります。
  ファイルステムが「main」、「mod」、「index」、「cli」などの一般的なもので、パスに親がない場合は、親パスのファイル名を取得します。それ以外の場合は一般名で解決します。
  結果の名前に「@...」接尾辞が付いている場合は、それを取り除きます。

cli.ts は一般的なので親のdenoがコマンド名になったっぽい。

taktamurtaktamur

-nで名前をつけたらちゃんと動いた

~/deno via  v21.6.1 
❯ deno install ./cli.ts -n helloworld
✅ Successfully installed helloworld
/Users/tak/.deno/bin/helloworld

~/deno via  v21.6.1 
❯ rehash

~/deno via  v21.6.1 
❯ helloworld 
hello world

~/deno via  v21.6.1 
❯ 

taktamurtaktamur

~/.deno/bin/ の下に置かれるファイルはペラいラッパー

❯ cat ~/.deno/bin/helloworld 
#!/bin/sh
# generated by deno install
exec deno run --no-config 'file:///Users/tak/deno/cli.ts' "$@"
このスクラップは2ヶ月前にクローズされました