如何利用Commander建立自己的Node命令

commander模組可以製作自己的nodejs命令,類似grunt bower的全域指令服務

新增一個npm專案

如果要上傳至npm服務,方便起見可以先開一個github專案,方便之後npm publish

好了之後clone下來,初始化專案

1
npm init

建構命令

安裝 commander

1
npm i commander --save

範例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#!/usr/bin/env node
/**
* Module dependencies.
*/
var program = require('commander');
program
.version('0.0.1')
.option('-p, --peppers', 'Add peppers')
.option('-P, --pineapple', 'Add pineapple')
.option('-b, --bbq-sauce', 'Add bbq sauce')
.option('-c, --cheese [type]', 'Add the specified type of cheese [marble]', 'marble')
.parse(process.argv);
console.log('you ordered a pizza with:');
if (program.peppers) console.log(' - peppers');
if (program.pineapple) console.log(' - pineapple');
if (program.bbqSauce) console.log(' - bbq');
console.log(' - %s cheese', program.cheese);

詳細內容說明請至官網看..

重點第一行的#!/usr/bin/env node指定node執行

修改 package.json

增加 bin 屬性

1
2
3
{
bin: { mycom: "./index.js"}
}

這代表自己命名一個 mycom 命令,會進入 index.js 這隻程式

上傳至npm

1
npm bublish

使用方式

安裝

1
npm install 你建立的模組 -g

目前試過沒有安裝-g全域無法使用,區域使用方式之後再補上..

執行自己的命令

1
mycom