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
|
|||
|
}
|