初始化配置文件
新建文件夹 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