UNPKG

@aiot-toolkit/packager

Version:

@aiot-toolkit/packager

3 lines (2 loc) 2.42 kB
"use strict";var _config=_interopRequireDefault(require("@aiot-toolkit/shared-utils/config")),_path=_interopRequireDefault(require("path")),_protobufControl=require("@aiot-toolkit/shared-utils/lib/protobuf/protobufControl");function _interopRequireDefault(t){return t&&t.__esModule?t:{default:t}}function _defineProperty(t,e,a){return e in t?Object.defineProperty(t,e,{value:a,enumerable:!0,configurable:!0,writable:!0}):t[e]=a,t}const PLUGIN_NAME="BinaryPlugin",contentType={style:"style",template:"template",tagName:"tagName"},ext=".bin",OutputPath=_path.default.resolve(_config.default.projectPath,_config.default.outputPath);class BinaryPlugin{apply(t){t.hooks.thisCompilation.tap(PLUGIN_NAME,(()=>{this.reset()})),t.hooks.done.tap(PLUGIN_NAME,(t=>{this.createBinFiles()}))}createBinFiles(){const t=Object.keys(BinaryPlugin.binaryData);t.length>0&&t.forEach((t=>{const e=BinaryPlugin.binaryData[t],a=[],n=[],i=[];e.forEach((t=>{i.push(t.tagName||""),a.push(t.style||"[]"),n.push(t.template||"")}));const r=_path.default.extname(t);if(".hml"!==r){const e=BinaryPlugin.getBinPath(t,"style");(0,_protobufControl.createBin)(e,new Array(i.length).fill(""),a,new Array(n.length).fill(""))}if(![".css",".less",".scss",".sass"].includes(r)){const e=BinaryPlugin.getBinPath(t,"template");(0,_protobufControl.createBin)(e,i,new Array(a.length).fill("[]"),n)}}))}reset(){BinaryPlugin.binaryData={}}static getBinPath(t,e){const a=_path.default.join(_config.default.projectPath,_config.default.sourceRoot),n=_path.default.relative(a,t),i=_path.default.parse(n);return _path.default.join(_config.default.projectPath,_config.default.outputPath,_path.default.dirname(n),`${i.name}.${e}.bin`)}static addContent(t,e,a,n,i=""){const r=BinaryPlugin.binaryData;r[t]||(r[t]=[]);const l=r[t];let o;const u=l.findIndex((t=>t.sourceFileName===e));u>=0?(o=l[u],o[a]=n):(o={sourceFileName:e,[a]:n},l.push(o));const s=BinaryPlugin.getBinPath(t,a);let c=_path.default.relative(OutputPath,s);return c=c.replace(/\\/g,"/"),{index:u>=0?u:l.length-1,name:c}}static addTagName(t,e,a,n=""){return BinaryPlugin.addContent(t,e,contentType.tagName,a,n)}static addTemplate(t,e,a,n=""){return BinaryPlugin.addContent(t,e,contentType.template,a,n)}static addStyle(t,e,a,n=""){return BinaryPlugin.addContent(t,e,contentType.style,a,n)}}_defineProperty(BinaryPlugin,"binaryData",{}),module.exports=BinaryPlugin; //# sourceMappingURL=binary-plugin.js.map