Denoを(Vimで)開発するときのテンプレートを作った
Denoの開発をする際に毎回同じような設定を行っているのでテンプレートリポジトリを作りました。
作業記録(Zenn scrap)はこちら
Loggerの設定
出力したログがコンソールだけでなくファイルに残っていると後から見直しやすく便利です。
これに関しては以下の記事でまとめました。
ここで作ったlogger.ts
を入れておきます。
Dotenvの設定
dotenv
も使用頻度が高いのでテンプレートに含めました。
Safe Modeを使うため、使用する環境変数の名前を.env.example
に書きます。
といってもテンプレートなので仮の名前です。
SECRET_TOKEN=secret_token
import { config } from "https://deno.land/x/dotenv@v2.0.0/mod.ts";
const {
SECRET_TOKEN,
} = config({ safe: true });
export { SECRET_TOKEN };
Safe Modeなら必要な環境変数が定義されていない場合にエラーを出してくれます。
なお、このenv.ts
を読み込まなければconfig()
も実行されないので、環境変数を使わない場合は気にする必要はありません。
Vimの設定
(自分はNeovimですが)開発する際にcoc.nvim
の設定が必要なので、これもテンプレートに入れてしまいます。
Node.js開発用のcoc-tsserver
およびcoc-prettier
との競合を回避して、coc-deno
に動いてもらうよう設定します。
{
"deno.enable": true,
"deno.lint": true,
"deno.unstable": true,
"prettier.disableLanguages": ["typescript"],
"typescript.format.enabled": false
}
普通はエディタ用の設定ファイルはGit管理から外すのが良いとされていますが、個人用テンプレートなので気にしないことにしました。
deps.tsの配置
テンプレートなので必須ではないのですが、Denoリポジトリであることの判断にdeps.ts
が使われることがあるっぽいので、空ファイルを置いておきます。
Velociraptorの設定
Denoはセキュリティのために--allow-write
などのオプションを明示的に使う必要があります。
安全性としては優れていますが、開発中にいちいち記載するのは面倒です。
ということでタスクランナーのVelociraptorを使います。
ドキュメントに従ってインストールします。
❯ deno install -qAn vr https://deno.land/x/velociraptor@1.0.1/cli.ts
✅ Successfully installed vr
/Users/kawarimidoll/.deno/bin/vr
ℹ️ Add /Users/kawarimidoll/.deno/bin to PATH
export PATH="/Users/kawarimidoll/.deno/bin:$PATH"
velociraptor.yml
を定義します。
allow:
- write=app.log
# - read=.env,.env.example,.env.defaults
# - env
# - net
scripts:
start:
desc: Runs main script
cmd: main.ts
# test: deno test
lint: deno lint
format: deno fmt
pre-commit:
cmd:
- vr lint
- vr format
gitHook: pre-commit
これでvr
を実行すればhook
が作成されます。
❯ vr
✅ Git hooks successfully installed
🦖 Available scripts
• start
Runs main script
$ main.ts
• lint
$ deno lint
• format
$ deno fmt
• pre-commit
Runs at pre-commit
$ vr lint, vr format
To run a script pass its name as the first argument to the vr command:
$ vr start
Any additional arguments will be passed to the script.
これでvr start
でmain.ts
を実行でき、コミットのたびにファイルの整形と検証をやってくれるようになります。
しれっと書いてますが、このテンプレートを作る途中で知りました。
便利なライブラリがあるもんですね。
おわりに
これでDeno開発のスタートダッシュが楽になりそうです。
今後も必要なものがあれば追加していきたいと思います。
Changelog
- 2021-06-21 Velociraptorの設定ファイルの名前を
scripts.yml
からvelociraptor.yml
に変更しました。また、内容を少し追加しました。
Discussion