LoginSignup
5
7

More than 3 years have passed since last update.

[deno] denonで快適な開発環境を

Last updated at Posted at 2020-09-16

最近、簡単なプログラムや、趣味の開発でのdenoの使用頻度が上がっています。
ちゃちゃっと何か試したい時にゼロコンフィグでtypescript環境が用意されているUXが気に入ってます。
ただ下記の課題があったので備忘として残します。

課題

  • denoでもnode js環境のようにnpm scriptsを使いたい
  • ついでにnodemonのようにオートリロード環境も欲しい

package.jsonがない...!

denoではnode_modulesがありません。
node js作者のRyan Dahlが「モジュール用の集中管理されたリポジトリがあるのは残念なことだ」との後悔からだそうです。
つまりモジュールを管理するpackage.jsonがない。

こうなると今までお手軽に使っていたnpm scriptsが使えません。
かつdenoでは環境変数を使うにはサーバー起動時に --allow-envを、ネットワークへアクセスするには --allow-netのように起動時のオプションが多いです。

毎度これらを打つのは骨が折れます。
シェルのrcファイルにエイリアスを仕込む事もできますが、チーム開発時に各々の環境のシェルscriptを書くというのはあまりイケてません。(趣味でやってるので、これを考慮する理由はありませんが...)

そこで見つけたのが denonです。

インストール

deno install --allow-read --allow-run --allow-write --allow-net -f -q --unstable https://deno.land/x/denon@2.4.0/denon.ts

イニシャライズ

初期化のコマンドによって生成ファイルが変わります。

# json denon.json
denon init

# typescript denon.config.ts
denon init --typescript

# yaml denon.yml
denon init --yaml

設定(config.ts)

import { DenonConfig } from "https://deno.land/x/denon@2.3.2/mod.ts";

const config: DenonConfig = {
  scripts: {
    start: {
      cmd: "deno run src/server.ts",
      desc: "run my server.ts file",
      allow: ["env", "net", "read", "write", "plugin"],
      unstable: true,
    },
  },
};

export default config;

エグゼキュート

> denon start
[*] [main] v2.3.2-master
[*] [daem] watching path(s): *.*
[*] [daem] watching extensions: ts,tsx,js,jsx,json
[!] [#0] starting main `deno run --allow-env --allow-net --allow-read --allow-write --allow-plugin --unstable src/server.ts`
Check file:///Users/your_env/your_project/src/server.ts

これで無事deno scriptを使えるようになりました!

5
7
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
5
7