mh-two-thousand-and-two
2024-04-12 7fc6dbf547b8899d949b67cdec36b96a7d1701c7
1
2
"use strict";var _fs=_interopRequireDefault(require("fs")),_path=_interopRequireDefault(require("path")),_sharedUtils=require("@hap-toolkit/shared-utils"),_config=_interopRequireDefault(require("@hap-toolkit/shared-utils/config")),_utils=require("../common/utils"),_compilationConfig=require("@hap-toolkit/shared-utils/compilation-config"),_info=require("../common/info"),_rpks=require("../subpackages/rpks");function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}let chunkFilenameList=[];function resolveFiles(e,i){let t=(0,_utils.lsdirdeep)(e);return t.includes(_rpks.DIGEST_ZIP_PATH)?(console.warning(`检测到存在快应用保留文件: ${_rpks.DIGEST_ZIP_PATH}`),!1):(t=(0,_utils.sortFilesBy)(t,i),t)}function ZipPlugin(e){this.options=Object.assign({priorities:["manifest.json","app.js"]},e);const i=e.cwd||_config.default.projectPath,t=e.pathSignFolder||"sign",s={debug:{privatekey:_path.default.join(i,t,"debug/private.pem"),certificate:_path.default.join(i,t,"debug/certificate.pem")},release:{privatekey:_path.default.join(i,t,"release/private.pem"),certificate:_path.default.join(i,t,"release/certificate.pem")}};this.pemFiles=s[e.sign]}function generateDistFile(e,i,t,s){const r=`${i.name}.${i.sign}.${s}`,n=_path.default.join(i.output,r);_fs.default.writeFileSync(n,e),_sharedUtils.colorconsole.log(`### App Loader ### ${(0,_sharedUtils.relateCwd)(i.output)}目录签名并生成${s}文件:${r}`)}ZipPlugin.prototype.apply=function(e){const i=this.options;if(!this.pemFiles)return void _sharedUtils.colorconsole.error("> 无签名配置项, 放弃打包: ",i.sign);let t;!i.disableSubpackages&&i.subpackages&&i.subpackages.length>0&&(t=i.subpackages),_compilationConfig.options.splitChunksMode===_compilationConfig.optionsConfig.splitChunksModeEnum.SMART&&e.hooks.emit.tap("ZipPlugin",(function(i){const t=(0,_info.getEntryFiles)(e.options.entry);chunkFilenameList=Object.keys(i.assets).filter(e=>-1===t.indexOf(e))})),e.hooks.afterEmit.tapAsync("ZipPlugin",(s,r)=>{function n(e,i){e+=(0,_sharedUtils.relateCwd)(i),s.errors.push(new _sharedUtils.KnownError(e)),r()}const{privatekey:o,certificate:a}=this.pemFiles;if(!_fs.default.existsSync(o))return void n("> 缺少私钥文件, 打包失败: ",o);if(!_fs.default.existsSync(a))return void n("> 缺少证书文件, 打包失败: ",a);const l=_fs.default.readFileSync(o),u=_fs.default.readFileSync(a);if(chunkFilenameList.length){const e=i.priorities.findIndex(e=>"app.js"===e);i.priorities.splice(e,0,...chunkFilenameList)}const p=resolveFiles(i.pathBuild,i.priorities);if(!1===p)return void r();const{fullPackage:c,subPackages:f}=(0,_rpks.createPackagesDefinition)(t,i.icon);(0,_rpks.allocateResourceToPackages)(p,i.pathBuild,c,f),(0,_rpks.signZipPkgs)(i.name,l,u,c,f,i.comment,i.disableStreamPack).then(({rpksBuffer:t,rpkBuffer:s})=>{_fs.default.mkdir(i.output,()=>{t&&generateDistFile(t,i,e.watchMode,"rpks"),generateDistFile(s,i,e.watchMode,"rpk"),r()})})})},module.exports=ZipPlugin;
//# sourceMappingURL=zip-plugin.js.map