UNPKG

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.

52 lines (46 loc) 1.88 kB
const fs = require('fs'); const path = require('path'); const Parser = require('./parser'); const { loadModule } = require('./utils/moduleLoader'); // 导入工具方法 class PostmanGenerator { constructor(options) { this.options = { routesPath: './routes', outputFile: './postman/collection.json', baseUrl: '{{base_url}}', ...options, }; } buildClass() { const builder = loadModule(__dirname, `/builder/${this.options.collectionVersion}`); // 使用工具方法 if (builder) { return new builder(this.options) } else { // console.error('❌ 不支持该builder'); console.error('❌ Unsupported builder version'); // 不支持该builder } } async generate() { try { // console.log('🚀 开始生成Postman集合...'); console.log('🚀 Starting Postman collection generation...'); // 创建输出目录 fs.mkdirSync(path.dirname(this.options.outputFile), { recursive: true }); let parser = new Parser(this.options) const routes = await parser.parseRoutes(); // 生成器 const builder = this.buildClass(); const collection = builder.buildCollection(routes) fs.writeFileSync(this.options.outputFile, JSON.stringify(collection, null, 2)); // console.log(`✅ 成功生成Postman集合至:${this.options.outputFile}`); // console.log(`📊 共生成 ${routes.size} 个API端点`); `` console.log(`✅ Successfully generated Postman collection to: ${this.options.outputFile}`); // 成功提示 console.log(`📊 Generated ${routes.size} API endpoints`); // 统计信息 } catch (error) { // console.error('❌ 生成失败:', error.message); console.error('❌ Generation failed:', error.message); // 错误提示 生成失败 process.exit(1); } } } module.exports = PostmanGenerator;