🖥️
[deno] denonで快適な開発環境を
最近、簡単なプログラムや、趣味の開発でのdenoの使用頻度が上がっています。
ちゃちゃっと何か試したい時にゼロコンフィグでtypescript環境が用意されているUXが気に入ってます。
ただ下記の課題があったので備忘としてzennに初ポストします!
課題
- 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を使えるようになりました!
Discussion