準備工作
- 安裝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
會列印You choose: add Somethingnode index.js --add
(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')
-
複制代碼
- 當選項為多單詞形式時,使用駝峰形式得到輸入項
- 執行
會列印add a filenode index.js --add-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')
-
複制代碼
- 執行
會列印not add a filenode index.js --no-add
(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)
-
複制代碼
- 執行
會列印add a file named: demo.jsnode index.js -a 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
- 執行
會列印C demo.jsnode index.js my-cli C -a 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
轉自commander.js基本用法_weixin_33905756的部落格-CSDN部落格