JavaScrptでもTypeScriptでも、
#!/usr/bin/env -S deno run
でOK!
hello.js
#!/usr/bin/env -S deno run
console.log('hello deno!');
hello.ts
#!/usr/bin/env -S deno run
const message: string = 'hello deno!'
console.log(message);
deno run
で実行する仕様なので、
#!/usr/bin/env node
と同じ感覚で
#!/usr/bin/env deno
と書いてもダメなんですねー。
error: Found argument './hello.js' which wasn't expected, or isn't valid in this context
USAGE:
deno [OPTIONS] [SUBCOMMAND]
For more information try --help
#!/usr/bin/env deno run
でも叱られます。
シェバンにオプションを渡すときは-S
が必要。
/usr/bin/env: ‘deno run’: No such file or directory
/usr/bin/env: use -[v]S to pass options in shebang lines
参考
https://stackoverflow.com/questions/63043929/how-do-i-invoke-deno-from-a-shell-script
追記)拡張子について
僕はシェバン付けてコマンドとして実行する場合も、ファイルの拡張子は付ける派なのですが、
拡張子を省略した場合は、DenoではJavaScriptと見なされるようです。
現状、TypeScriptと認識させたい場合は、.ts
拡張子はしっかり付けるのが安全です。
TypeScriptでも拡張子を省略したいという需要はあるようで、ここで議論されています。
https://github.com/denoland/deno/issues/5088