背景
- 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: "deno run src/app.ts"
desc: "run app.ts file"
allow: ["env", "net", "read", "write", "plugin"]
unstable: true
build:
cmd: "deno bundle src/app.ts > build/app.js"
desc: "build app.ts file"
lint:
cmd: "deno lint src/"
desc: "lint all ts file"
unstable: true
fmt:
cmd: "deno fmt src/"
desc: "format all ts file"
watcher:
exts: ["js", "jsx", "ts", "tsx", "json"]
skip: ["*/.git/*"]
実行方法
- 下記のコマンドのように実行。
# denon スクリプト名
denon dev
# フォーマット
denon fmt
# ビルド
denon build