UNPKG

bm_scaffold_async_router

Version:

本木前端脚手架-异步路由版

62 lines (59 loc) 2.06 kB
// 删除无用的异步路由文件 const fs = require('fs'); const path = require('path'); const asyncRoutersPath = path.resolve(process.cwd(), 'dist/js'); // 循环方法封装 function circulation(arr, fn){ let result = []; for(let i = 0, len = arr.length; i < len; i++){ let returnVal = fn(arr[i], i); if(returnVal){ result.push(returnVal); } } return result; } // 删除无用路由文件 module.exports = function delRouterFile(){ return new Promise((resolve, reject) => { fs.readdir(asyncRoutersPath, function(err, files){ if(err){ console.log(err); reject(err); return; } let delFiles = []; circulation(files, (file) => { let result = [file]; result = result.concat(circulation(files, (router) => { if(file !== router){ let name = file.slice(0, file.indexOf('.')); if(name && router.slice(0, router.indexOf('.')) === name){ return router; } } return undefined; })); if(result.length <= 1){ return; } let mtimes = circulation(result, (item) => { let stat = fs.statSync(asyncRoutersPath + '/' + item); return +stat.mtime; }) let max = Math.max.apply(null, mtimes); delFiles = delFiles.concat(circulation(mtimes, (mtime, index) => { if(mtime !== max){ return asyncRoutersPath + '/' + result[index]; } return undefined; })) }) delFiles = [...new Set(delFiles)]; circulation(delFiles, filePath => { fs.unlinkSync(filePath); }) resolve(); }) }) }