var fs = require('fs'); var path = require('path'); //解析需要遍历的文件夹 var filePath = path.resolve(`${__dirname}\\src\\apiData`); //调用文件遍历方法 let interfaces = []; let index = 1; fileDisplay(filePath); /** * 文件遍历方法 * @param filePath 需要遍历的文件路径 */ function fileDisplay(filePath) { //根据文件路径读取文件,返回文件列表 fs.readdir(filePath, function (err, files) { if (err) { console.warn(err); } else { //遍历读取到的文件列表 files.forEach(function (filename) { //获取当前文件的绝对路径 var filedir = path.join(filePath, filename); //根据文件路径获取文件信息,返回一个fs.Stats对象 fs.stat(filedir, function (eror, stats) { if (eror) { console.warn('获取文件stats失败'); } else { var isFile = stats.isFile(); //是文件 var isDir = stats.isDirectory(); //是文件夹 if (isFile) { // 是文件,文件处理 let login = require(filedir); interfaces.push(login); writeInterface(interfaces, index); index++; } if (isDir) { fileDisplay(filedir); //递归,如果是文件夹,就继续遍历该文件夹下面的文件 } } }); }); } }); } /** * 接口生成函数 * @param {Array} apiPort 接口json数据 */ function writeInterface(interfaces, index) { let text = `"use strict"; import request from "@/utils/request";`; interfaces.map((item) => { let _URL = item.BASE_URL; item.apiList.map((_item) => { if (_item.isUrl) { text += ` /*** ${_item.remark || '无'} ***/ export const ${_item.eventName} = "${_URL + _item.url}"`; } else { text += ` /*** ${_item.remark || '无'} ***/ export const ${_item.eventName} = params => { return request("${_URL + _item.url}" ${_item.urlParam ? '+ params' : ''}, { method: "${_item.method || 'GET'}", ${_item.type ? 'params' : 'data'}: ${!_item.urlParam ? 'params' : 'undefined'} || "", timeout: "${_item.timeout || '10000'}", }); };`; } }); }); fs.writeFile(__dirname + '/src/services/index.js', text, (err) => { if (err) { return console.log(err); } console.log(`第${index}个文件接口汇总完毕!共${interfaces[index - 1].apiList.length}个接口`); }); }