UNPKG

youzanyun-devtool-worker

Version:

124 lines (123 loc) 5.56 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const tslib_1 = require("tslib"); const fs_extra_1 = tslib_1.__importDefault(require("fs-extra")); const path_1 = tslib_1.__importDefault(require("path")); const adm_zip_1 = tslib_1.__importDefault(require("adm-zip")); const spring4js_nodejs_1 = require("spring4js-nodejs"); let TemplateManageService = class TemplateManageService { async getTemplates(params) { const result = await this.dpRequestService.getTemplates(params, { projectName: params.appName, }); return result; } async getTemplateDetail(params) { const { appId, appName } = params; const result = await this.dpRequestService.getTemplateDetail(appId, { projectName: appName, }); return result; } async saveTemplate(data) { const result = await this.dpRequestService.saveTemplate(data, { projectName: data.appName, }); return result; } async updateTemplate(data) { const result = await this.dpRequestService.updateTemplate(data); return result; } async deleteTemplate(data) { const result = await this.dpRequestService.deleteTemplate(data, { projectName: data.appName, }); return result; } async getTemplateMpResources(projectRoot, compTypes, templateId, appName) { const mpCodeDir = path_1.default.resolve(projectRoot, 'showcase-components-mp'); const mpDirExist = fs_extra_1.default.pathExistsSync(mpCodeDir); if (!mpDirExist) { return ''; } const tempDir = '__temp-space'; const zipPath = path_1.default.resolve(projectRoot, `${templateId}-mp.gzip`); const tempSpace = path_1.default.resolve(projectRoot, tempDir, `template_${templateId}-ui/mp-extension`); const lsTempSpace = path_1.default.resolve(projectRoot, tempDir, `template_${templateId}-ui/retail-mp-extension`); const tempDirPath = path_1.default.resolve(projectRoot, tempDir); async function zipMpExtension() { await fs_extra_1.default.remove(tempDirPath); await fs_extra_1.default.ensureDir(tempSpace); await fs_extra_1.default.copy(mpCodeDir, tempSpace, { filter: (src, dest) => { if (src.includes('node_modules') || src.includes('/dist/')) { return false; } return true; } }).catch(() => { console.log('原生模板-拷贝小程序代码失败'); return Promise.reject(); }); await fs_extra_1.default.remove(path_1.default.resolve(tempSpace, 'node_modules')); const customCompDir = path_1.default.resolve(tempSpace, 'src/pages/home/feature/custom-components'); const compDirList = await fs_extra_1.default.readdir(customCompDir); console.log(compDirList, 'compDirList'); compDirList.forEach(dir => { if (dir === 'extension-common') { return; } if (!compTypes.includes(dir)) { fs_extra_1.default.removeSync(path_1.default.resolve(customCompDir, dir)); } }); const extensionJsonPath = path_1.default.resolve(tempSpace, 'extension.json'); const extensionJson = fs_extra_1.default.readJsonSync(extensionJsonPath); console.log(extensionJson, 'extensionJson'); try { console.log(extensionJson, 'extensionJson'); const components = extensionJson.pageCustom[`pages/home/feature/index`]['components'] || []; const tempComp = components.filter((item) => { return compTypes.includes(item.name); }); extensionJson.pageCustom[`pages/home/feature/index`]['components'] = tempComp; fs_extra_1.default.writeJsonSync(extensionJsonPath, extensionJson, { spaces: 2 }); } catch (error) { console.error(error, '模板保存extensionJson重写出错'); } await fs_extra_1.default.copy(tempSpace, lsTempSpace).catch(() => { console.log('原生模板-拷贝小程序代码到零售失败'); return Promise.reject(); }); var zip = new adm_zip_1.default(); zip.addLocalFolder(path_1.default.resolve(projectRoot, tempDir)); zip.writeZip(zipPath); } await zipMpExtension(); const [mpZipUploadRes] = await this.cdnService.uploadFileToCdn({ projectName: appName, pageName: 'template-component-mp', fileList: [zipPath], addHash: true, }); await fs_extra_1.default.remove(tempDirPath); await fs_extra_1.default.remove(zipPath); return mpZipUploadRes.url; } }; tslib_1.__decorate([ (0, spring4js_nodejs_1.Resource)() ], TemplateManageService.prototype, "dpRequestService", void 0); tslib_1.__decorate([ (0, spring4js_nodejs_1.Resource)() ], TemplateManageService.prototype, "customApiService", void 0); tslib_1.__decorate([ (0, spring4js_nodejs_1.Resource)() ], TemplateManageService.prototype, "cdnService", void 0); TemplateManageService = tslib_1.__decorate([ (0, spring4js_nodejs_1.Service)() ], TemplateManageService); exports.default = TemplateManageService; ;