読者です 読者をやめる 読者になる 読者になる

non vorrei lavorare

ブログ名の通りです。javascript three.js mruby rust OCaml golang julialang blender

Node.jsのサンプルコードをコマンド化する

はじめに

この記事は、@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のインストール

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に作成したコマンドへのシンボリックリンクを作成する。

関連記事