📄

LICENSEファイルをコマンド1つで生成できるツール「genelic」を作った

2022/10/10に公開約1,700字

はじめに

GitHubにレポジトリを作成した時に最初にやることはライセンスファイル(LICENSELICENSE.md)の作成だと思います。

しかし毎回GitHubのページ上でボタンをポチポチ押して生成するのは手間がかかるのが気になっていました(僕が知らないだけでもっと楽な方法があるのかもしれませんが…)。

ググってみたら生成ツールがいくつか見つかりましたが、Homebrewからのインストールに対応していなかったり、レポジトリ内に直接ライセンスファイルが置かれているものが多く、どれも微妙な感じでした。

そこでライセンスファイルを簡単に生成できるツール「genelic」を作成しました。

https://github.com/Fus1onDev/genelic

npmかHomebrewからインストールできます。

名前の由来は「generate」+「license」という安直な理由ですが、「generic(一般的な・包括的な)」という英単語ともかかっていて良い感じになったと思います(?)

使い方

genelic MITのようにライセンスのIDを引数として渡すと、簡単に生成できます。

ちなみにリッチなコンソール出力にはsignaleを使っています。

selectコマンドを使うと、辞書順に並んだ全てのライセンスの中から選択できます。

ただ数が多すぎて選ぶのが大変なので、検索コマンドも実装したいです。

このピッカーの表示はpromptsを使用しています。

使用した技術

  • TypeScript
  • Webpack
  • vercel/pkg
  • yargs
  • prompts
  • signale

APIから取得したデータをタイプセーフに扱うためにTypeScriptを使用しました。それをWebpackでバンドルし、npmへ公開しています。

また、vercel/pkgでnode.jsランタイムを含んだバイナリを生成し、Homebrewからインストールできるようにしています。
しかしバンドルサイズが50MBを超えてしまっているので、将来的にはGoで書き直して軽量化したいと考えています。

ライセンスのデータベース

Linux Foundation傘下のSPDXというプロジェクトがライセンスなどのフォーマットを規格化するという活動をしていて、SPDXのウェブサイトにライセンス一覧が公開されています。

一覧やライセンスごとのデータが取得できるJSON形式のAPIもあり、genelicではこのAPIを毎回叩くことによってデータを表示させています。

https://spdx.org/licenses/

GitHubレポジトリはこちらです。

https://github.com/spdx/license-list-data

おわりに

気に入った方はぜひ🌟をお願いします!

https://github.com/Fus1onDev/genelic

GitHubで編集を提案

Discussion

ログインするとコメントできます