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