準備工作
- 安裝nodejs
- 安裝commander.js,執行
npm install commander --save
version方法
作用:定義命令程式的版本號
引數說明:
- 版本號<必須>
- 自定義flag<可省略>,預設為
-V
和--version
使用:
(1)只傳入版本資訊
const program = require('commander');
program
.version('1.0.0')
.parse(process.argv);
複製程式碼
- 執行
node index.js -V
或者 node index.js --version
得到版本號。
(2)自定義flag
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)定義多個選項
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)多單詞形式
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
形式開頭的選項,代表後面緊跟單詞的相反面
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)選項後面使用<>或[]
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方法
作用:命令的描述性語句
引數說明
使用
const program = require('commander');
program
.version('1.0.0')
.description('It is my cli')
.parse(process.argv);
複製程式碼
action方法
作用:定義命令的回撥函式
引數說明:
parse方法
作用:用於解析process.argv,設定options以及觸發commands
引數說明: