UNPKG

magix-combine

Version:

合并Magix View的html,js,css成一个js文件,并检测html,js,css中可能存在的问题

99 lines (98 loc) 3.55 kB
//处理文件的头信息 let configs = require('./util-config'); let snippetReg = /(?:^|[\r\n])\s*(?:\/{2,})?\s*(['"])?#(?:snippet|gallery-config|gconfig|g-config|raw|gcfg)(?:[^\r\n]+)?\1\s*;?/g; let excludeReg = /(?:^|[\r\n])\s*(?:\/{2,})?\s*(['"])?#exclude[\(\[]([\w,]+)[\)\]]\1\s*;?/g; let excludeReg1 = /(?:^|[\r\n])\s*(?:\/{2,})?\s*(['"])?#exclude\s*=\s*([\w,_]+)\1\s*;?/g; let loaderReg = /(?:^|[\r\n])\s*(?:\/{2,})?\s*(['"])?#loader\s*=\s*([\w]+)\1\s*;?/g; let checkerReg = /(?:^|[\r\n])\s*(?:\/{2,})?\s*(['"])?#((?:un)?check)\[([\w,]+)\]\1\s*;?/g; let checkerReg1 = /(?:^|[\r\n])\s*(?:\/{2,})?\s*(['"])?#((?:un)?check)\s*=\s*([\w,]+)\1\s*;?/g; let exRequiresReg = /(?:^|[\r\n])\s*(?:\/{2,})?\s*(['"])?#(?:(?:no|non|ex)requires)\s*=\s*([^\r\n;]+)\1\s*;?/g; //let jsThisAliasReg = /(?:^|[\r\n])\s*(?:\/{2,})?\s*(['"])?#this\s*=\s*([\w_])\1\s*;?/g; module.exports = (content) => { let execBeforeProcessor = true, execAfterProcessor = true, ignoreAllProcessor = false; let addWrapper = true; let excludeProcessor = (m, q, keys) => { keys = keys.split(','); if (keys.indexOf('define') > -1 || keys.indexOf('loader') > -1) { addWrapper = false; } if (keys.indexOf('before') > -1 || keys.indexOf('beforeProcessor') > -1) { execBeforeProcessor = false; } if (keys.indexOf('after') > -1 || keys.indexOf('afterProcessor') > -1) { execAfterProcessor = false; } if (keys.indexOf('allProcessor') > -1) { ignoreAllProcessor = true; } return '\r\n'; }; if (ignoreAllProcessor) { execBeforeProcessor = execAfterProcessor = false; } content = content .replace(excludeReg, excludeProcessor) .replace(excludeReg1, excludeProcessor); let checkerCfg = Object.assign({}, configs.checker); let checkerProcessor = (m, q, key, value) => { let values = value.split(','); for (let v of values) { v = v.trim(); if (key == 'check') { checkerCfg[v] = true; } else { checkerCfg[v] = false; } } return '\r\n'; }; content = content .replace(checkerReg, checkerProcessor) .replace(checkerReg1, checkerProcessor); //let thisAlias = configs.thisAlias; /*content = content.replace(jsThisAliasReg, (m, q, value) => { thisAlias = value; return '\r\n'; });*/ snippetReg.lastIndex = 0; let isSnippet = snippetReg.test(content); content = content.replace(snippetReg, '\n'); let loader; content = content.replace(loaderReg, (m, q, type) => { loader = type; return '\r\n'; }); let exRequires = [], noRequires = false; content = content.replace(exRequiresReg, (m, q, reqs) => { if (reqs == 'true') { noRequires = true; } exRequires = reqs.split(',').map(i => { i = i.trim(); if (i.startsWith('\'') && i.endsWith('\'')) { i = i.slice(1, -1); } if (!i.startsWith('"') && !i.endsWith('"')) { i = `"${i}"`; } return i; }); return '\r\n'; }); return { content, isSnippet, addWrapper, checkerCfg, loader, exRequires, noRequires, //thisAlias, ignoreAllProcessor, execBeforeProcessor, execAfterProcessor }; };