youzanyun-devtool-worker
Version:
124 lines (123 loc) • 5.56 kB
JavaScript
;
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;
;