commander.js基本用法

Randy_rs發表於2019-03-15

準備工作

  • 安裝nodejs
  • 安裝commander.js,執行npm install commander --save

version方法

作用:定義命令程式的版本號

引數說明:

  • 版本號<必須>
  • 自定義flag<可省略>,預設為 -V--version

使用:

(1)只傳入版本資訊

// index.js
const program = require('commander');
program
	.version('1.0.0')
  .parse(process.argv);
複製程式碼
  • 執行node index.js -V 或者 node index.js --version得到版本號。

(2)自定義flag

// index.js
const program = require('commander');
program
	.version('1.0.0', '-v, --version')
	.parse(process.argv);
複製程式碼
  • 當自定義flag時,--version不能被省略
  • 執行node index.js -v或者 node index.js --version得到版本號。

option方法

作用:定義命令的選項

引數說明:

  • 自定義flag<必須>
    • 一長一短的flag,中間可以逗號、豎線或空格隔開
    • flag後面可以跟引數,<>定義必需引數,[]定義可選引數
  • 選項的描述<可省略>:在使用-h或者--help時會顯示
  • 選項的預設值<可省略>

使用

(1)定義多個選項

// index.js
const program = require('commander');
program
	.version('1.0.0')
	.option('-a, --add', 'add Something')
	.option('-u, --update', 'update Something')
	.option('-r, --remove', 'remove Something')
  .parse(process.argv);

console.log('You choose: ');
if (program.add) console.log('  add Something');
if (program.update) console.log('  update Something');
if (program.remove) console.log('  remove Something');
複製程式碼
  • 短flag使用-,長flag使用--
  • program.XXX可以得到輸入的選項
  • 執行node index.js -a或者node index.js --add會列印You choose: add Something

(2)多單詞形式

// index.js
const program = require('commander');
program
	.version('1.0.0')
	.option('--add-file', 'add a file')
  .parse(process.argv);

if (program.addFile) console.log('add a file')
複製程式碼
  • 當選項為多單詞形式時,使用駝峰形式得到輸入項
  • 執行node index.js --add-file會列印add a file

(3)以--no形式開頭的選項,代表後面緊跟單詞的相反面

// index.js
const program = require('commander');
program
	.version('1.0.0')
	.option('--no-add', 'not add a file')
  .parse(process.argv);

if (program.add) console.log('add a file')
else console.log('not add a file')
複製程式碼
  • 執行node index.js --no-add會列印not add a file

(4)選項後面使用<>或[]

// index.js
const program = require('commander');
program
	.version('1.0.0')
	.option('-a, --add <fileName>', 'add a file')
  .parse(process.argv);

console.log('add a file named: ' + program.add)
複製程式碼
  • 執行node index.js -a demo.js會列印add a file named: demo.js

command方法

作用:自定義命令

引數說明:

  • 自定義命令名稱
    • 名稱<必須>
    • 命令引數<可選>:
      • <>[]定義引數
      • 命令的最後一個引數可以是可變的,需要在陣列後面加入 ... 標誌;在命令後面傳入的引數會
  • 命令描述<可省略>
  • 配置選項<可省略>:可配置noHelp、isDefault等

使用

const program = require('commander');
program
	.version('1.0.0')
	.command('my-cli <path>')
	.option('-a, --add <fileName>', 'add a file')
	.option('-u, --update <fileName>', 'update a file')
	.option('-r, --remove <fileName>', 'remove a file')
	.action(function(path, cmd) {
		console.log(path)
		console.log(cmd.add)
	})

program.parse(process.argv);
複製程式碼
  • 使用action後會開啟輸入的選項校驗,若輸入了未定義的選項,則丟擲錯誤
  • 執行node index.js my-cli C -a demo.js會列印C demo.js

description方法

作用:命令的描述性語句

引數說明

  • 命令的描述

使用

// index.js
const program = require('commander');
program
	.version('1.0.0')
	.description('It is my cli')
  .parse(process.argv);
複製程式碼

action方法

作用:定義命令的回撥函式

引數說明:

  • 回撥函式

parse方法

作用:用於解析process.argv,設定options以及觸發commands

引數說明:

  • process.argv

相關文章