node でコマンドラインツールを作ろう

package.json に "bin" : { "command-name" : "to-path" } を追加することでシェルコマンドとして実行したときに、どのファイルを実行するかを指定します。ここでは "cli" という名前で実行すると、index.js が実行されるように指定しました。

package.json
{
    "bin": {
        "cli": "index.js"
    },
}

冒頭に #!/usr/bin/env node をつけることで node で実行されるよう shell に伝えます。

index.js
#! /usr/bin/env node
console.log("cli ok!!");

公開する

npm version minor # マイナーチェンジを行なったので
npm publish # 変更を公開

npm package を使う

npm update @superyusuke/node-learn # 更新を取り込む

Local にインストールしたパッケージ使う方法2つ

npx を使う

npx cli

npm script に記述して使う

package.json
{
    "scripts": {
        "cli": "cli"
    }
}
npm run cli

package に変更があるたびに公開してupdate して…という手順を踏むのは面倒です。そこで npm link を活用します。

開発中のディレクトリで npm link 実行することで、npm が global にインストールされている場所から開発フォルダへの symlink を追加します。これによって、global にインストールされたコマンドのように実行することができます。

Last updated