找出項目中沒有用到的資源-項目性能優化

爲了性能優化,找出項目中沒有用到的css、png、jpeg、jpg、js文件,對項目整體的資源有一個管理控制。css

### 技術棧html

   glob、ac多字符自動機、fs、pathweb

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.mapapp

相關文章
相關標籤/搜索