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

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

### 技术栈

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

findNouseSource.js

const fs=require('fs');
const path=require('path');
const glob=require('glob');
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)
}

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

  

猜你喜欢

转载自www.cnblogs.com/caoke/p/11023842.html