html-css-scope-loader
Version:
html add css scope ( html template add css module)
22 lines (19 loc) • 1.09 kB
JavaScript
function replaceSrc(fileContent, exclude) {
fileContent = fileContent.replace(/((\<img[^\<\>]*? src)|(\<link[^\<\>]*? href))=\\?[\"\']?[^\'\"\<\>\+]+?\\?[\'\"][^\<\>]*?\>/ig, function(str){
var reg = /((src)|(href))=\\?[\'\"][^\"\']+\\?[\'\"]/i;
var regResult = reg.exec(str);
if(!regResult) return str;
var attrName = /\w+=/.exec(regResult[0])[0].replace('=', '');
var imgUrl = regResult[0].replace(attrName+'=', '').replace(/[\\\'\"]/g, '');
if(!imgUrl) return str; // 避免空src引起编译失败
if(/^(http(s?):)?\/\//.test(imgUrl)) return str; // 绝对路径的图片不处理
if(!/\.(jpg|jpeg|png|gif|svg|webp)/i.test(imgUrl)) return str; // 非静态图片不处理
if(exclude && imgUrl.indexOf(exclude) != -1) return str; // 不处理被排除的
if(!(/^[\.\/]/).test(imgUrl)) {
imgUrl = './' + imgUrl;
}
return str.replace(reg, attrName+"=\"+JSON.stringify(require("+JSON.stringify(imgUrl)+"))+\"");
});
return fileContent;
}
module.exports = replaceSrc