gulpやgrunt等のタスクランナーをプロジェクトに導入していると
"沢山のタスク (コマンド)が増えて管理しづらくなった .. "って経験はありませんか?

'コンパイル用', 'minify用', '画像のロスレス圧縮用', 'bower update用'
その他bot用、デプロイ用 ... プロジェクトが大きくなれば専用のコマンドも増えてきます。

そんな肥大するタスクコマンド事情を解決してくれそうなライブラリが「ntl」です。

ntlはnode.jsで作られた、コマンドライン上で起動するライブラリで、
"package.json"内の"scripts"内に登録されたコマンドをリスト化してくれます。


ntlのインストール

ntlのインストールにはコマンドライン上で行います。
下のコマンドを実行するとnpmのglobalにインストールされます。
( * node.jsのインストールは割愛します )

# ntlのinstall 
npm install -g ntl # 環境によっては'sudo'も必要

これで" ntl "コマンドが使えるようになりました!

# ntlを起動
$ ntl -h # helpを表示

Usage:
  ntl []

Options:
  -v --version   Displays app version number
  -h --help      Shows this help message
  -a --all       Includes pre and post scripts on the list
  -m --multiple  Allows a selection of multiple tasks to run at once


ntlの使い方

ntlはカレントフォルダ内のpackage.json内のscripts内配列を読み込みます。
( 下はnode.jsのexpressのプロジェクトのフォルダ群です。)

わかり易くするため"gulpfile.js"内のtaskコマンドを使って説明していきます。

# expressのプロジェクトのフォルダ群のサンプル
- expressProject
  - node_module
  - public
  - view
  ...
  app.js
  gulpfile.js # 例としてgulp内のコマンドを実行させる
  package.json # このファイル内のscripts内を読み込む


gulpfile.js内に3つのコマンドを用意しました。
( 例: "gulp test1"でタスクが走ります )

"use strict"
let gulp = require('gulp');

// TASK
gulp.task('test1', () => {
  return console.log("RUN!! test1  !");
});

gulp.task('test2', () => {
  return console.log("RUN!! test2 !!");
});

gulp.task('test3', () => {
  return console.log("RUN!! test3 !!!");
});


npmコマンドで動くようにするため、package.json内は下記のように。
"scipts" 内でエイリアス(別名)を指定しgulpコマンドを呼び出すようにしています。

{
  "private": true,
  "devDependencies": {
    "gulp": "^3.9.1"
  },
  "dependencies": {
    "express": "^4.13.4"
  },
  "scripts": {
    "test1": "gulp test1",
    "test2": "gulp test2",
    "test3": "gulp test3"
  }
}


以上で準備は完了。

プロジェクトフォルダ内でntlコマンドを起動させると下記のように登録したコマンドがリスト化され、
選択したタスクを実行できます!

コマンドライン上で"ntl"とタイプすると起動します

ntlに" - m " オプションをつけて複数のコマンドを同時に起動させることも可能。

"ntl -m"でマルチマルチタスクモードに

gulpのタスクで紹介しましたが、ntlはnpm内の"scripts"内を読み込んでリスト化しているだけなので、
"package.json"がプロジェクト内にあればnode.js以外のプロジェクトでも問題なく利用できます。

例えば、Laravelのプロジェクトで使うことも。
( productionコマンドとして登録 )

{
  "private": true,
  "devDependencies": {
    "gulp": "^3.9.0"
  },
  "dependencies": {
    "laravel-elixir": "^4.0.0",
    "bootstrap-sass": "^3.0.0"
  },
  "scripts": {
  "production": "gulp -- production && composer update"

  }
}


Summary

ntlはプロジェクトの規模が大きいほど、タスクの数が多い程
利便性が増すライブラリです。

”コマンドを確認する為にgulpfileやpackage.json内を確認するのが面倒だ、、”

”1プロジェクトの為に.bashrc内にコマンドを登録したくない...”

という人には打って付けのライブラリなので、気になった方はチェックしてくだい!

GitHub : ruyadorno/ntl

 

この記事のカテゴリ

プログラミング

この記事のタグ

nodejs , 開発ツール , サーバー関連

Socialシェアボタン

スポンサーリンク