42 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
		
		
			
		
	
	
			42 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
| 
								 | 
							
								module.exports = function proxyLocation(reqUrl, configJSON, rootPath){
							 | 
						|||
| 
								 | 
							
								    let ReqEntry = configJSON.buildEntryPath.find((item)=>{
							 | 
						|||
| 
								 | 
							
								        let itemModulePath = /(?:\.\/src\/)*([^\.]*)\./.exec(item);
							 | 
						|||
| 
								 | 
							
								        let itemPath = null
							 | 
						|||
| 
								 | 
							
								        if(itemModulePath && itemModulePath[1]){
							 | 
						|||
| 
								 | 
							
								            itemPath = itemModulePath[1].split('/'); //存放四级目录,如lowcode/light-front/*/*/index
							 | 
						|||
| 
								 | 
							
								        }
							 | 
						|||
| 
								 | 
							
								        //json文件走本地判断
							 | 
						|||
| 
								 | 
							
								        if(reqUrl.startsWith('/' + rootPath + '/resources/') && reqUrl.endsWith('json') && configJSON.proxyJson){
							 | 
						|||
| 
								 | 
							
								            let domainName = reqUrl.split('/')[3];
							 | 
						|||
| 
								 | 
							
								            if(itemPath && itemPath[0] == domainName){
							 | 
						|||
| 
								 | 
							
								                return true;
							 | 
						|||
| 
								 | 
							
								            }
							 | 
						|||
| 
								 | 
							
								            return false;
							 | 
						|||
| 
								 | 
							
								        //js和html文件走本地判断
							 | 
						|||
| 
								 | 
							
								        }else{
							 | 
						|||
| 
								 | 
							
								            // 过滤出 reqUrl 的四级目录
							 | 
						|||
| 
								 | 
							
								            let reqModulePath = new RegExp('(?:\/' + rootPath  + '\/resources\/)*([^\.]*)\.').exec(reqUrl);
							 | 
						|||
| 
								 | 
							
								            let reqPath = null;
							 | 
						|||
| 
								 | 
							
								            if(reqModulePath && reqModulePath[1]){
							 | 
						|||
| 
								 | 
							
								                reqPath = reqModulePath[1].split('/'); //存放四级目录,如lowcode/light-front/runtime/main/index
							 | 
						|||
| 
								 | 
							
								            }
							 | 
						|||
| 
								 | 
							
								            if(reqPath && itemPath && reqPath.length === itemPath.length){
							 | 
						|||
| 
								 | 
							
								                //判断itemPath不是*号的部分是否与reqPath全部相等,是则使用本地资源,否则使用线上资源
							 | 
						|||
| 
								 | 
							
								                let isEqual = true;
							 | 
						|||
| 
								 | 
							
								                for(let index=0; index<itemPath.length; index++){
							 | 
						|||
| 
								 | 
							
								                    if(itemPath[index]!='*' && itemPath[index] != reqPath[index]){
							 | 
						|||
| 
								 | 
							
								                        isEqual= false;
							 | 
						|||
| 
								 | 
							
								                        break;
							 | 
						|||
| 
								 | 
							
								                    }
							 | 
						|||
| 
								 | 
							
								                }
							 | 
						|||
| 
								 | 
							
								                return isEqual;
							 | 
						|||
| 
								 | 
							
								            }
							 | 
						|||
| 
								 | 
							
								            return false;
							 | 
						|||
| 
								 | 
							
								        }
							 | 
						|||
| 
								 | 
							
								    })
							 | 
						|||
| 
								 | 
							
								    if(ReqEntry){
							 | 
						|||
| 
								 | 
							
								        return true;
							 | 
						|||
| 
								 | 
							
								    }
							 | 
						|||
| 
								 | 
							
								    return false
							 | 
						|||
| 
								 | 
							
								}
							 |