@hap-toolkit/packager
Version:
@hap-toolkit/packager
3 lines (2 loc) • 2.82 kB
JavaScript
;Object.defineProperty(exports,"__esModule",{value:!0}),exports.allocateResourceToPackages=allocateResourceToPackages,exports.createPackagesDefinition=createPackagesDefinition;var _fs=_interopRequireDefault(require("fs")),_path=_interopRequireDefault(require("path")),_sharedUtils=require("@hap-toolkit/shared-utils"),_package=require("./package"),_constant=require("../common/constant");function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}const MAIN_PKG_NAME=_sharedUtils.compileOptionsMeta.MAIN_PKG_NAME,SPLIT_CHUNKS_PAGE_NAME=_sharedUtils.compileOptionsMeta.splitChunksNameEnum.PAGE,MANIFEST_TO_TRIM=["features","display","subpackages","router.entry","router.pages"];function createPackagesDefinition(e,t,a,r,s=""){const n=(0,_package.createFullPackage)(e);let o;return t&&t.length>0&&(o=(0,_package.createSubPackages)(e,t,a,s)),n.comment=r,(o||[]).forEach((e=>{e.comment=r})),{fullPackage:n,subPackages:o}}function getBuildInfoResource(e,t){e=JSON.parse(e);let a=Object.keys(e).map((t=>t+"="+e[t])).join("\n");t&&Object.keys(t).forEach((e=>{a+=`\n${e}=${t[e]}`}));const r=_constant.BUILD_INFO_FILE,s=Buffer.from(a);return[r,s,(0,_sharedUtils.calcDataDigest)(s)]}function trimSubPkgManifest(e,t,a){var r;if(!e._widget)return;const s=(0,_sharedUtils.readJson)(a);MANIFEST_TO_TRIM.forEach((e=>{let t=e.split("."),a=s;for(let e=0;e<t.length-1;e++){if(!a[t[e]])return;a=a[t[e]]}delete a[t[t.length-1]]}));const n=null==s||null===(r=s.router)||void 0===r?void 0:r.widgets;if(n){const t=Object.keys(n).filter((t=>e.subMatch.test(t+"/"))).reduce(((e,t)=>(e[t]=n[t],e)),{});s.router.widgets=t}const o=JSON.stringify(s),i=Buffer.from(o);return[t,i,(0,_sharedUtils.calcDataDigest)(i)]}function allocateResourceToPackages(e,t,a,r,s,n){const o=new RegExp(`^${SPLIT_CHUNKS_PAGE_NAME}$`),i=new RegExp(`\\/${SPLIT_CHUNKS_PAGE_NAME}$`),c=_path.default.join(MAIN_PKG_NAME,SPLIT_CHUNKS_PAGE_NAME);if(e.forEach((e=>{const s=_path.default.join(t,e),n=_fs.default.readFileSync(s);let u=[e,n,(0,_sharedUtils.calcDataDigest)(n)];if(i.test(e)||a.addResource(...u),!r||o.test(e))return;let l=!0;e===c.replace(/\\/g,"/")&&(u[0]=SPLIT_CHUNKS_PAGE_NAME);for(let t=1;t<r.length;t++){const a=r[t];let n=u;if(a._widget&&"manifest.json"===e&&(n=trimSubPkgManifest(a,e,s)),a.standalone&&("manifest.json"===e||"sitemap.json"===e||e.startsWith("i18n")||e.startsWith("lottie")||a.icon&&a.icon.indexOf(e)>0||a.banner&&a.banner.indexOf(e)>0)&&a.addResource(...n),a.subMatch.test(e)){l=!1,a.addResource(...n);break}}if(l){r[0].addResource(...u)}})),s){const e=getBuildInfoResource(s,n);a.addResource(...e),r&&r[0].addResource(...e)}r&&r.forEach((e=>{if(!e.resourceList.length)throw new Error(`分包失败:分包${e.fileName}内不包含任何资源,请重新检查manifest`)}))}
//# sourceMappingURL=service.js.map