はじめに
この記事は、@kjunichiの2015年パーソナルアドベントカレンダーの15日目の記事です。
ansi-canvasのExamplesのスクリプトをグローバルにインストール
以下は、nodebrew環境が前提の記事になります。
ansi-canvasのオリジナルはNode.js v5.2.0に未対応なので、
https://github.com/rgbkrk/ansi-canvas/tree/patch-1github.com
フォークして、v5.2.0でもビルドできるansi-canvasを使う。
今回は、ansi-canvasのサンプルの画像ファイルをコンソールに表示するimgcat.jsが対象
ディレクトリの作成
cd ~/.nodebrew/current/lib/node_modules mkdir imgcat-cli cd imgcat-cli
ansi-canvasのインストール
macOSの場合、以下の様にビルド時に各種フラグを指定
CXXFLAGS="-I/usr/local/include" LDFLAGS="-L/usr/local/lib" \ PKG_CONFIG_PATH=/opt/X11/lib/pkgconfig \ npm install rgbkrk/ansi-canvas#patch-1
imgcat.jsの抽出と編集
cp node_modules/ansi-canvas/examples/imgcat.js . atom imgcat.js
*** 1,5 **** ! var tc = require('../'); var Canvas = require('canvas'); // create terminal <canvas> --- 1,6 ---- + #!/usr/bin/env node ! var tc = require('ansi-canvas'); var Canvas = require('canvas');
コマンド化するスクリプトでrequireしている他のモジュールも入れる
imgcat.jsはcanvasをrequireしているので、これもインストールする必要がある。
CXXFLAGS="-I/usr/local/include" LDFLAGS="-L/usr/local/lib" \ PKG_CONFIG_PATH=/opt/X11/lib/pkgconfig \ npm install canvas
コマンド本体のリンクをbin配下に作成
cd ~/.nodebrew/current/bin ln -s ../lib/node_modules/imgcat-cli/imgcat.js imgcat
これで、imgcatコマンドの完成
まとめ
examplesのコードをコマンド化するには
- ~/.nodebrew/current/lib/node_modules配下にフォルダを作成(imgcat-cli)
- 作成したフォルダにexamplesを含むモジュールをnpm install
- コマンド化したいスクリプトでrequireしているモジュールもnpm install
- コマンド化したいスクリプトをモジュール直下にコピー
- コピーしたスクリプトを編集してコマンド化する
- ~/.nodebrew/current/binに作成したコマンドへのシンボリックリンクを作成する。