63 # commander 的配置

初始化配置文件

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

63 # commander 的配置_第1张图片

修改配置文件

{
    "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

63 # commander 的配置_第2张图片

使用 commander

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

npm install [email protected]

63 # commander 的配置_第3张图片

自定义配置项:

const config = {
    // 配置端口号
    port: {
        option: "-p, --port ",
        description: "set your server port",
        usage: "kaimo-http-server --port 3000",
        default: 3000
    },
    // 配置目录
    directory: {
        option: "-d, --directory ",
        description: "set your start directory",
        usage: "kaimo-http-server --directory D:",
        default: process.cwd()
    },
    // 配置主机名
    host: {
        option: "-h, --host ",
        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

63 # commander 的配置_第4张图片

可以执行命令

kaimo-http-server --version

63 # commander 的配置_第5张图片

可以执行命令

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

63 # commander 的配置_第6张图片

你可能感兴趣的:(Node,/,Node,框架,前端工程架构)