63 # commander 的配置

简介: 63 # commander 的配置

初始化配置文件

新建文件夹 63,执行 npm init -y

修改配置文件

{
    "name": "kaimo-http-server",
    "version": "1.0.0",
    "description": "",
    "main": "index.js",
    "keywords": [
        "http-server"
    ],
    "author": "kaimo",
    "license": "MIT",
    "bin": {
        "kaimo-http-server": "./bin/www.js"
    }
}

新建 bin 文件夹,下面添加 www.js

#! /usr/bin/env node
console.log("进入 bin");

使用下面命令添加全局命令

npm link

然后就可以执行我们的命令

kaimo-http-server

使用 commander

https://github.com/tj/commander.js/blob/HEAD/Readme_zh-CN.md

npm install commander@5.1.0

自定义配置项:

const config = {
    // 配置端口号
    port: {
        option: "-p, --port <val>",
        description: "set your server port",
        usage: "kaimo-http-server --port 3000",
        default: 3000
    },
    // 配置目录
    directory: {
        option: "-d, --directory <val>",
        description: "set your start directory",
        usage: "kaimo-http-server --directory D:",
        default: process.cwd()
    },
    // 配置主机名
    host: {
        option: "-h, --host <val>",
        description: "set your hostname",
        usage: "kaimo-http-server --host 127.0.0.1",
        default: "localhost"
    }
};
module.exports = config;

www.js 添加 commander 相关代码

#! /usr/bin/env node
const program = require("commander");
const { version } = require("../package.json");
const config = require("./config.js");
program.name("kaimo-http-server");
program.usage("[args]");
program.version(version);
Object.values(config).forEach((val) => {
    if (val.option) {
        program.option(val.option, val.description);
    }
});
program.on("--help", () => {
    console.log("\r\nExamples:");
    Object.values(config).forEach((val) => {
        if (val.usage) {
            console.log("  " + val.usage);
        }
    });
});
// 解析用户的参数
let parseObj = program.parse(process.argv);
console.log("parseObj---->", parseObj);
let keys = Object.keys(config);
console.log(keys);
// 最终用户拿到的数据
let resultConfig = {};
keys.forEach((key) => {
    console.log(parseObj[key]);
    resultConfig[key] = parseObj[key] || config[key].default;
});
console.log(resultConfig);

可以执行命令

kaimo-http-server --help

可以执行命令

kaimo-http-server --version

可以执行命令

kaimo-http-server --host xxx --port 4000

目录
相关文章
|
JavaScript 前端开发 API
28 # commander 的用法
28 # commander 的用法
46 0
|
6月前
|
安全 网络协议 数据安全/隐私保护
ERD Commander 2005 使用教程
ERD Commander 2005 使用教程
62 1
|
PHP Windows
Windows下laravel/lumen中执行phpunit报phpunit: command not found解决办法
Windows下laravel/lumen中执行phpunit报phpunit: command not found解决办法
170 0
Windows下laravel/lumen中执行phpunit报phpunit: command not found解决办法
|
JavaScript
Cypress系列(91)- Cypress.config 命令详解
Cypress系列(91)- Cypress.config 命令详解
470 0
Cypress系列(91)- Cypress.config 命令详解
Cypress系列(85)- Cypress.platform 命令详解
Cypress系列(85)- Cypress.platform 命令详解
113 0
Cypress系列(85)- Cypress.platform 命令详解
|
资源调度 索引
Cypress系列(98)- cypress-xpath 插件, xpath() 命令详解
Cypress系列(98)- cypress-xpath 插件, xpath() 命令详解
385 0
Cypress系列(98)- cypress-xpath 插件, xpath() 命令详解
Cypress系列(99)- cypress-downloadfile 插件, downloadFile() 命令详解
Cypress系列(99)- cypress-downloadfile 插件, downloadFile() 命令详解
385 0
Cypress系列(99)- cypress-downloadfile 插件, downloadFile() 命令详解
Cypress系列(100)- cypress-file-upload 插件, attachFile() 命令详解
Cypress系列(100)- cypress-file-upload 插件, attachFile() 命令详解
400 0
Cypress系列(100)- cypress-file-upload 插件, attachFile() 命令详解
|
JavaScript 测试技术
Cypress系列(92)- Cypress.env 命令详解
Cypress系列(92)- Cypress.env 命令详解
284 0
Cypress系列(92)- Cypress.env 命令详解
Cypress系列(87)- Cypress.browser 命令详解
Cypress系列(87)- Cypress.browser 命令详解
149 0
Cypress系列(87)- Cypress.browser 命令详解