12/08/2018, 14:45

Node.JS Yargs - Build interactive command line tools (Part II)

Như trong phần I mình đã giới thiệu qua về module Yargs của Node.JS cũng như giới thiếu một số methods của nó. Hôm nay mình tiếp tục chia sẻ tiếp những methods còn lại của module Yargs này nhé. Yargs methods .command(cmd, desc, [Builder], [Handler]), .command(cmd, desc, [Module], ...

Như trong phần I mình đã giới thiệu qua về module Yargs của Node.JS cũng như giới thiếu một số methods của nó. Hôm nay mình tiếp tục chia sẻ tiếp những methods còn lại của module Yargs này nhé.

Yargs methods

.command(cmd, desc, [Builder], [Handler]), .command(cmd, desc, [Module], .command(Module)

Một ứng dụng to gồm rất nhiều chức năng (module) để thực hiện các công việc khác nhau. Method .command giúp chúng ta chia nhỏ ứng dụng thành nhiều module nhỏ thực hiện các chức năng khác nhau. Ví dụ như NPM có các câu lệnh như install để cài một package, uninstall để gỡ bỏ một package hay ls để xem danh sách các package đã cài (trong thư mục node_modules), ...!

Method này có thể nhận các tham số sau (không bắt buộc):

  • cmd: String hoặc mảng các tên lệnh và alias của các lệnh đó
  • desc: Mô tả cho lệnh (hoặc các lệnh). Bạn có thể set giá trị của nó thành false để tạo ra 1 câu lệnh ẩn (không xuất hiện trong phần trợ giúp của ứng dụng).
  • builder: Object chứa các gợi ý về các option mà câu lệnh đó chấp nhận.
// command-builder.js

var argv = require("yargs")
  .command('install', 'Install package', {
    alias: 'i'
  })
  .help()
  .argv;

/**
$ node command-builder.js --help
Commands:
install  Install package

Options:
--help  Show help                                                    [boolean]
*/

Lưu ý: Các command sẽ không kế thừa các tùy chọn hay các cài đặt của parent context. Vì vậy, với mỗi command bạn cần phải cài đặt và khai báo lại các tùy chọn hay các cấu hình.

builder cũng có thể là 1 function. Function này sẽ thực thi với instance của yargs và nó có thể được sử dụng để cung cấp command nâng cao cụ thể nào đó.

// command-builder-fn.js
var argv = require("yargs")
  .command("install", "Install package", function(yargs) {
    return yargs.option("name", {
      alias: "n",
      describe: "Package name"
    });
  })
  .help()
  .argv;

/*
$ node command-builder-fn.js --help
Commands:
  install  Install package

Options:
  --help  Show help                                                    [boolean]

$ node command-builder-fn.js install --help
command-builder-fn.js install

Options:
  --help      Show help                                                [boolean]
*/

Bạn cũng có thể cung cấp một handle function để thực hiện xử lý cho command đó. Handle function này được thực thi với object argv. Chúng ta thêm phần này cho ví dụ ở trên để in ra package name mà người dùng nhập nhé             </div>
            
            <div class=

0