網頁

2017/11/1

Node.js 使用yargs模組取得命令列執行時傳入的參數

Node.js以命令列執行時,原本是透過process.argv取得輸入的參數,本篇介紹yargs模組除了讓我們更輕鬆地存取參數,還可建立命令列式的操作介面,如參數說明,或必要的參數等等。


使用前先使用npm下載yargs

npm install yargs --save

範例一,透過yargs取得參數。

// app.js
const yargs = require('yargs'); // 載入yargs

var argv = yargs.argv;

console.log(argv);
console.log(argv._[0]);

要取得輸入的參數可以直接使用var argv = yargs.argv取得,例如在命令列執行時輸入以下。

node app.js "hello world"

argv印出的內容如下

{ _: [ 'hello world' ],
  help: false,
  version: false,
  '$0': 'app.js' }

可以看到傳入的參數被放入以_為key的陣列中,所以透過argv._[0]取得。


範例二,使用yargs自訂需輸入參數。

const argv = yargs
.options({
  add: {
    demandOption: true,
    alias: 'a',
    describe: 'Add new item',
    string: true
  }
})
.help()
.alias('help', 'h').argv;

console.log(argv.add);

argv.options()方法可以設定需要輸入的參數,上例中設定了參數add

參數add的設定中,demandOption:true代表執行app.jsadd為必要參數,alias屬性設定add參數的簡短寫法為astring:true表示參數值為一段字串。

yargs.help()提供執行時的help的說明

yargs.alias()help的簡短寫法設為h

所以執行時不輸入任何參數例如

node app.js

因為add為必要參數,所以會跳出缺少參數的訊息,並告訴你可輸入的參數有哪些。

Options:
  --version   Show version number                                      [boolean]
  --add, -a   Add new item                                   [string] [required]
  --help, -h  Show help                                                [boolean]

Missing required argument: add

執行時必須加上add如下才可執行

node app.js --add "Macbook Air"

印出結果如下

Macbook Air

更多好用的api請參考這裡。

沒有留言:

張貼留言