bm_scaffold_async_router
Version:
本木前端脚手架-异步路由版
62 lines (59 loc) • 2.06 kB
JavaScript
// 删除无用的异步路由文件
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();
})
})
}