🐥

Deno でコマンドラインツールを雑に作ったので感想

2022/07/07に公開

趣味で TC39 のアクティビティを追ったり https://cybozu.github.io/frontend-expert/ にそういう記事を書いたりすることがあるのですが、その作業をする中でややめんどい手作業みたいなのがあったりします。

そういうのを自動化するコマンドラインツールを作ろうと思って、最初いつもどおり Node.js で作り始めました。30分くらいしていつもどおり Node.js じゃつまらないなと思ったので Deno で作ってみました。

https://github.com/sosukesuzuki/tools-39

実は Deno を使ったのは初めてだったので感想を書いてみます。哲学とかは置いといて単純にユーザーとしての利便性について。

  • deno lintdeno fmt が便利
    • 自分は ESLint と Prettier に精通している方だけどとは言えそういう設定なしにシュッと動くのはかなり楽。速いし。
  • 標準ライブラリが便利
    • Node.js に比べてラインナップが豊富で便利
    • Node.js に比べて「この処理をするならどのライブラリが無難なんだろうな〜」って探すことは減りそう
  • リリースが楽
    • GitHub リポジトリに WebHook 登録して tag 打ってリリース作るだけでいいので楽
    • Node.js でなんか作るときは自前で GitHub Actions かなんかでそれ相当のものを作る必要があった
  • Node.js に依存してなければ https://esm.sh とかから npm のライブラリが使えるので便利
    • 今回作ったツールは unified と remark に依存してますが、普通にすぐ動いたので便利
  • semver は標準でほしい
    • npm の semver パッケージに該当するものが標準ライブラリに含まれててもよさそうと思った
  • Deno.run 便利
    • 今までは execa をあとから入れてた
  • (あとから気づいたから今回は使ってないけど) Import Maps で依存を指定できるのはよさそう
    • 利便性的にも整い的にも
  • 設定なしで TypeScript 動くの便利
    • 「設定苦痛なことなくない?」とは思っていたが、どうやら自分にとっても雑にやるときはないほうが良いらしい

総じて好感を持ってます。なんか適当に CLI ツールとか作るときは今後は Deno でいいかなーって感じです。

Discussion