概要
Node.js で CLI を作ったので備忘録として作り方の要点をメモします。
npm 等には公開せず、ローカル環境での実行のみを想定しています。
環境
Node.js 12.13.0
要点
package.json
で bin
を指定
コマンドラインから実行するコマンドと、コマンドを実行した際に実行されるスクリプトファイルを指定。
package.json
{
"bin": {
"my-cli-name": "bin/cli.js"
}
}
bin
で指定したスクリプトを作成
シェバンで node を指定して、実行したい処理を記述します。
bin/cli.js
#!/usr/bin/env node
require('../dist/app.js');
その他作法
- プロジェクト内の JSON 等静的テキストファイルは
require
で読み込むようにする。-
path.resolve
を使うとバンドルされた後やbin
ディレクトリからの実行時に__dirname
の挙動が変わる。(10割勉強不足) - 静的ファイルは
require
でスクリプト内に埋め込んでしまうのが、時間が無い時は学習コスト掛からず手っ取り早い。 - テンポラリファイル等の置き場所の解決はどうするのが良いのかまだ判断ついてない。
-
作ったコマンドのインストール
# プロジェクトのディレクトリで
npm link
# または
npm install -g .
振り返り
cli で動くプログラムをまともに作ったのが初めてだったのだけど、
今回シングルプロセス/シングルスレッド + 同期 I/O で作っちゃったので処理速度が結構遅くなりました。
非同期 I/O と Worker Threads を覚えるとよさそう。