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