UNPKG

magix-composer

Version:

compile html, style and javascript files into javascript

41 lines 4.01 kB
/* 增加loader https://www.ecma-international.org/ecma-262/#sec-html-like-comments */ let regexp = require('./util-rcache'); let utils = require('./util'); let regxer = require('./util-rcache'); let package = require('../package.json'); let anchorKey = utils.uId('\x1e', ''); let header = `/*!${package.version} kooboy_li@163.com*/\r\n/*\r\n generate by magix-composer@${package.version}\r\n https://github.com/thx/magix-composer\r\n author: xinglie.lkf@alibaba-inc.com\r\n loader:\${loader}\r\n */\r\n`; let reqsAnchorKey = `/*${anchorKey}_requires*/`; let varsAnchorKey = `/*${anchorKey}_vars*/`; let tmpls = { cmd: '${loaderFactory}("${moduleId}",[${requires}' + reqsAnchorKey + '],function(require,exports,module){\r\n' + varsAnchorKey + '\r\n${content}\r\n});', cmd_es: '${loaderFactory}("${moduleId}",[${requires}' + reqsAnchorKey + '],(require,exports,module)=>{\r\n' + varsAnchorKey + '\r\n${content}\r\n});', amd: '${loaderFactory}("${moduleId}",["require","exports","module",${requires}' + reqsAnchorKey + '],function(require,exports,module){\r\n' + varsAnchorKey + '\r\n${content}\r\n});', amd_es: '${loaderFactory}("${moduleId}",["require","exports","module",${requires}' + reqsAnchorKey + '],(require,exports,module)=>{\r\n' + varsAnchorKey + '\r\n${content}\r\n});', view: 'Magix.addView("${moduleId}",(callback)=>{let exports={};\r\n' + varsAnchorKey + '\r\n${content};callback(exports.default);\r\n})', webpack: varsAnchorKey + '\r\n${content}', none: '${content}', module: varsAnchorKey + '\r\n${content}', iife: '(function(){\r\n${content}\r\n})();', iife_es: '(()=>{\r\n${content}\r\n})();', umd: '(function(factory){\r\nif(typeof module==="object"&&typeof module.exports==="object"){\r\n factory(require,exports,module);\r\n}else if(typeof ${loaderFactory}==="function"){\r\n if(${loaderFactory}.amd){\r\n ${loaderFactory}("${moduleId}",["require","exports","module",${requires}' + reqsAnchorKey + '],factory);\r\n }else if(${loaderFactory}.cmd){\r\n ${loaderFactory}("${moduleId}",[${requires}' + reqsAnchorKey + '],factory);\r\n }\r\n}\r\n})(function(require,exports,module){\r\n' + varsAnchorKey + '\r\n${content}\r\n});', umd_es: '(factory=>{\r\nif(typeof module==="object"&&typeof module.exports==="object"){\r\n factory(require,exports,module);\r\n}else if(typeof ${loaderFactory}==="function"){\r\n if(${loaderFactory}.amd){\r\n ${loaderFactory}("${moduleId}",["require","exports","module",${requires}' + reqsAnchorKey + '],factory);\r\n }else if(${loaderFactory}.cmd){\r\n ${loaderFactory}("${moduleId}",[${requires}' + reqsAnchorKey + '],factory);\r\n }\r\n}\r\n})((require,exports,module)=>{\r\n' + varsAnchorKey + '\r\n${content}\r\n});', acmd: '(function(factory){\r\nif(${loaderFactory}.amd){\r\n ${loaderFactory}("${moduleId}",["require","exports","module",${requires}' + reqsAnchorKey + '],factory);\r\n}else if(${loaderFactory}.cmd){\r\n ${loaderFactory}("${moduleId}",[${requires}' + reqsAnchorKey + '],factory);\r\n}\r\n})(function(require,exports,module){\r\n' + varsAnchorKey + '\r\n${content}\r\n});', acmd_es: '(factory=>{\r\nif(${loaderFactory}.amd){\r\n ${loaderFactory}("${moduleId}",["require","exports","module",${requires}' + reqsAnchorKey + '],factory);\r\n}else if(${loaderFactory}.cmd){\r\n ${loaderFactory}("${moduleId}",[${requires}' + reqsAnchorKey + '],factory);\r\n}\r\n})((require,exports,module)=>{\r\n' + varsAnchorKey + '\r\n${content}\r\n});' }; module.exports = e => { e.requiresAnchorKey = new RegExp(regexp.escape(reqsAnchorKey), 'g'); e.varsAnchorKey = new RegExp(regexp.escape(varsAnchorKey), 'g'); e.addedWrapper = true; let loader = e.loader; let tmpl = header + (tmpls[loader] || tmpls.iife); for (let p in e) { let reg = regexp.get('\\$\\{' + p + '\\}', 'g'); let v = regxer.encode(e[p] || ''); tmpl = tmpl.replace(reg, v); } return tmpl; };