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

目录
相关文章
|
测试技术
如何评估软件测试的质量风险?记住这5个核心关键点
如何评估软件测试的质量风险?记住这5个核心关键点
554 0
|
Java Docker 容器
Docker安装ElasticSearch
Docker如何安装ElasticSearch
|
JavaScript Java 测试技术
基于Java的家具销售库存管理信息系统的设计与实现(源码+lw+部署文档+讲解等)
基于Java的家具销售库存管理信息系统的设计与实现(源码+lw+部署文档+讲解等)
131 3
简约火箭发射静态404错误页面源码
简约火箭发射静态404错误页面源码
143 0
简约火箭发射静态404错误页面源码
|
JavaScript API
vue中的ref属性
vue中的ref属性
152 0
|
前端开发 Java
thymeleaf 入门篇(一),简单语法介绍
thymeleaf 入门篇,基本语法介绍
502 0
|
存储 缓存 监控
Spring Cloud 学习笔记06-02----用Hystrix来限流以及进行服务隔离
上一篇我们介绍了Spring Cloud 学习笔记06----断路器(Hystrix)(Finchley版本)。那一篇主要是介绍Hystrix用来做熔断处理。这一篇我们将重点介绍一下用Hystrix来做限流器以及服务隔离器。
487 0
Spring Cloud 学习笔记06-02----用Hystrix来限流以及进行服务隔离
|
安全 网络协议 对象存储
CDN 添加加速域名| 学习笔记
快速学习 CDN 添加加速域名。
CDN 添加加速域名| 学习笔记