背景
- Deno利用時に以下の点が気になったため、Node同様に可能なのか調査することに。
deno run --allow-net --allow-read server.ts
のような実行コマンドの長さを簡略化して、各種権限管理をしたい。- npm scriptsのように各環境や種類毎に管理できるようにしたい。
- Nodeでのnodemonのようなオートリロード環境の仕組みにしたい。
結果
denon
- 調査の結果、上記3つの要望が可能であるdenonを導入することに。
- denonとは、nodemonのdeno代替であり、柔軟かつ高機能に設定が可能なツール。
- 設定ファイルは、以下の3つの形式で記述することが可能。
- json:
denon.json
- typescript:
denon.config.ts
- yaml:
denon.yml
- json:
インストール
- 下記のコマンドで、プロジェクトフォルダにインストール
deno install--allow-read--allow-run--allow-write--allow-net-f-q--unstable https://deno.land/x/denon@2.3.2/denon.ts
初期化
- 下記のコマンドで設定ファイルの雛形を作成する。
- ※Nodeであれば、
npm init
のようなもの。
- ※Nodeであれば、
# 標準では、json形式(denon.json)
denon init
# typescript形式(denon.config.ts)
denon init --typescript# yaml形式(denon.yml)
denon --init yaml
設定テンプレート
- 以下の点をふまえた設定テンプレートを記述する。
- 開発の流れで必須、また頻度が高いものをまとめる
- なるべく環境変数は記述しない。
- 多く記述せず、単純にする。
- 今回は、視認性や機能性をふまえて、YAMLでの方法を記述する。
- ※その他、denonの詳細な設定方法はこちらを参考にする。
denon.yml
scripts:dev:cmd:"denorunsrc/app.ts"desc:"runapp.tsfile"allow:["env","net","read","write","plugin"]unstable:truebuild:cmd:"denobundlesrc/app.ts>build/app.js"desc:"buildapp.tsfile"lint:cmd:"denolintsrc/"desc:"lintalltsfile"unstable:truefmt:cmd:"denofmtsrc/"desc:"formatalltsfile"watcher:exts:["js","jsx","ts","tsx","json"]skip:["*/.git/*"]
実行方法
- 下記のコマンドのように実行。
# denon スクリプト名
denon dev
# フォーマット
denon fmt# ビルド
denon build