找出项目中没有用到的资源-项目性能优化

为了性能优化,找出项目中没有用到的css、png、jpeg、jpg、js文件,对项目总体的资源有一个管理控制。

### 技术栈

   glob、ac多字符自动机、fs、path

findNouseSource.js

//findNouseSource.js
const fs=require('fs');
const acSearch=require('./acSearch');
//找出项目中没有用到的资源
function findNouseSource(sourceFileArr,textFileArr,keyFunc){

let sourceKepMap={}
sourceFileArr.forEach(function (filepath,i) {
const key=keyFunc(filepath);
if(!sourceKepMap[key]){
sourceKepMap[key]=[i];
}else{
sourceKepMap[key].push(i)
}
})

const keys=Object.keys(sourceKepMap)
const nouseSourceArr=[].concat(sourceFileArr);
textFileArr.forEach(function (filepath) {
const text=fs.readFileSync(filepath).toString();
const keyArr=acSearch(keys,text).map((item)=>item.str)

keyArr.forEach(function (key) {
sourceKepMap[key].forEach(function (index) {
nouseSourceArr[index]=false;
});
})
})
return nouseSourceArr.filter((item)=>item)
}
module.exports=findNouseSource;

 

//app2.js
//找出项目中没有用到的资源
const fs=require('fs');
const path=require('path');
const glob=require('glob');
const findNouseSource=require('./utils/findNouseSource');

const srcDir='./src/';
//ignone
function filterIgnone(filepath) {
    if(/\/(build|libs)\//.test(filepath)){
        return false;
    }
    if(/web-server/.test(filepath)){
        return false;
    }
    return true;
}
//被搜索的资源
let textFileArr=glob.sync(srcDir+'**/*.+(html|js|css|ejs|less)').filter(filterIgnone);
//png 全名搜索和js 文件name搜索
let sourceFileArr=glob.sync(srcDir+'**/*.+(css|png|gif|jpg|jpeg)').filter(filterIgnone);
let jssourceFileArr=glob.sync(srcDir+'**/*.+(js)').filter(filterIgnone);

const nouseSource=findNouseSource(sourceFileArr,textFileArr,function (filepath) {
    return path.basename(filepath);
})
// console.log(nouseSource)
const nouseJsSource=findNouseSource(jssourceFileArr,textFileArr,function (filepath) {
    return path.basename(filepath,'.js');
})
// console.log(nouseJsSource)
const toText={
    lenArr:[nouseSource.length,nouseJsSource.length],
    nouseSource,
    nouseJsSource,
}
fs.writeFileSync('./dist/nouse.map',JSON.stringify(toText,null,2))

 

nouse.map

 

  

 

posted @ 2019-06-14 16:08  巅峰蜗牛  阅读(308)  评论(0编辑  收藏  举报