node-postman-generator
Version:
📦 CLI tool that automatically converts Express.js routes to Postman collections - handles path/query/body params, and generates ready-to-import JSON with route config.
61 lines (52 loc) • 2.19 kB
JavaScript
#!/usr/bin/env node
const { Command } = require('commander');
const fs = require('fs');
const path = require('path');
const PostmanGenerator = require('../src/index.js');
const packageJson = require('../package.json');
// 读取配置文件
const configPath = path.resolve(__dirname, '../config/node-postman-generator.json');
const defaultConfig = fs.existsSync(configPath)
? JSON.parse(fs.readFileSync(configPath, 'utf8'))
: {};
// 初始化 CLI 命令
const program = new Command();
program
// .version('2.8.0')
.version(packageJson.version)
.description(`📦 Express Router to Postman Collection Generator
Documentation: https://github.com/KelvinTee58/node-postman-generator/blob/main/doc/README.md`)
.option('-i, --input <path>', 'Specify Express routes directory path', defaultConfig.routesPath)
.option('-o, --output <file>', 'Specify Postman Collection output file', defaultConfig.outputFile)
.option('-u, --base-url <url>', 'Specify API base URL', defaultConfig.baseUrl)
.option('-path, --path <url>', 'Specify config file path', "")
.option('-s, --schema <version>', 'Specify Postman collection schema version (postman2.1)', 'postman2.1')
.addHelpText('after', `
Examples:
$ npx node-postman-generator -i ./routes -o ./postman/collection.json
$ npx node-postman-generator --input ./routes --output ./collection.json --base-url http://localhost:3000
$ npx node-postman-generator -i ./routes -o ./collection.json -path ./config.json
Config file example (config.json):
{
"routesPath": "./routes",
"outputFile": "./postman/collection.json",
"baseUrl": "{{base_url}}"
}
`)
.action(async (options) => {
// 读取用户配置文件
const userConfigPath = options.path;
const userConfig = fs.existsSync(userConfigPath) ? require(userConfigPath) : {};
const generator = new PostmanGenerator({
...defaultConfig,
routesPath: options.input,
outputFile: options.output,
baseUrl: options.baseUrl,
path: options.path,
collectionVersion: options.schema,
...userConfig
});
await generator.generate();
});
// 解析 CLI 参数
program.parse(process.argv);