Deno で VSCode files.exclude を追加する CLI をつくった
はじめに
VSCode の files.exclude
を追加する CLI vsexclude
を Deno で書きました。
🦕🦕🦕 新しい言語のテンプレートを追加するなど、たくさんの PR まってます 🦕🦕🦕
今回は、vsexclude 制作をしたときの気持ちと備忘録です。
VSCode files.exclude
VSCode の files.exclude
は、VSCode のサイドバーに表示したくないものを非表示にできる機能です。
以下のように、.vscode/settings.json
に設定します。
これによって、venv
などのプログラミング言語が生成するキャッシュファイル、設定ファイルなどを非表示にできます。
{
"files.exclude": {
"**/*venv": true,
"**/*develo-eggs": true,
"**/*eggs": true,
"**/*wheels": true
}
}
gitignore
このような管理したくないファイルを扱う代表例に gitignore
があります。
git で管理したくないファイルを .gitignore
ファイルに書くことで、 git から除外します。
下記の CLI は、gitignore.io
から代表的な gitignore ファイルを引っ張ってきます。
このように、gitignore に関しては代表的な言語の設定例を持ってこられるツールがありますが、
VSCode にはなかったため vsexclude という CLI を作りました。
仕組み & 使い方
仕組みはとてもシンプルです。
vsexclude
GitHub の templates
ディレクトリに、言語ごとの files.exclude
設定ファイルを PR で追加します。
あとは vsexclude add lang
をもちいて、対応する言語のファイルを GitHub 上から引っ張ってきて settings.json/files.exclude
に追加します。
GitHub 上から対応する言語を引っ張ってくる処理は fetch
で実装しています。
Client の js っぽく書けるのは便利ですね。
Deno の環境構築
Deno で毎回行う環境構築があるのでまとめておきます。
VSCode
VSCode の Deno 拡張機能を使って、以下の設定ファイルを追加します。
suggest.imports.hosts
を書くことで import 文で補完が効くようになります。
{
"deno.enable": true,
"deno.lint": true,
"deno.unstable": true,
"deno.suggest.imports.hosts": {
"https://deno.land": true
}
}
mod.ts
index.js
や index.ts
みたいな認識です。
呼び出しエントリーポイントを mod.ts にまとめます。
自分が CLI をつくるときは、CLI
の呼び出し処理を cli.ts
に書いて、肝心の処理は mod.ts
に書いています。
こうすることで、別ライブラリに対して、純粋な機能のみを mod.ts
として提供できます。
deps.ts
deps.ts
に関係する依存ファイルを以下のように書くことが多いです。
これは、セマンティックバージョニングの管理を一括にまとめたいためです。
export { Command } from "https://deno.land/x/cliffy@v0.19.6/command/mod.ts";
export * as fs from "https://deno.land/std/fs/mod.ts";
最近だと import-maps
で管理する方法もあるみたいです。
denon
タスクランナー & nodemon
として denon
を追加します。
scripts.config.ts
に設定ファイルを書くことでコマンドを実行できます。
テスト
テストは、tests/
ディレクトリに分けて書いています。
また、テストのファイル名は original.test.ts
の拡張子で個人的に書いています。
いろんな書き方が Deno はできるため、詳しく調べてみるといいかもです。
GitHub Actions
Deno 公式で setupAction
が提供されています。
そのため、deno test
を GitHub Actions に書くだけでいい感じになります。
最後に
🦕🦕🦕 新しい言語のテンプレートを追加するなど、たくさんの PR まってます 🦕🦕🦕
Discussion