LoginSignup
8
12

More than 3 years have passed since last update.

【Deno】denonを利用してのscripts管理

Last updated at Posted at 2020-08-11

背景

  • 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

インストール

  • 下記のコマンドで、プロジェクトフォルダにインストール
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のようなもの。
# 標準では、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

参考

8
12
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
12