UNPKG

@notadd/cli

Version:

notadd core none dependence

87 lines (86 loc) 3.85 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.UtilService = void 0; const tslib_1 = require("tslib"); const path_1 = require("path"); const fs_extra_1 = require("fs-extra"); const lodash_1 = require("lodash"); const core_1 = require("@notadd/core"); let UtilService = class UtilService { /** * 导入/导出/导入类名 的列表 * @param {any[]} entities * @param {string} ext */ importExportFileAndImportNames(entities, ext) { const upperExt = lodash_1.upperFirst(ext); const importFile = entities.map(it => { const name = it.entityName.replace(/Entity$/, `${upperExt == 'Api' ? 'ApiController' : upperExt}`); return ` import { ${name} } from './${it.fileName.replace('.entity.ts', `.${ext}`)}';`; }).reduce((acc, cur) => (acc += cur), ''); const exportFile = entities.map(it => { return ` export * from './${it.fileName.replace('.entity.ts', `.${ext}`)}';`; }).reduce((acc, cur) => (acc += cur), ''); const importNames = entities.map(it => { const name = it.entityName.replace(/Entity$/, `${upperExt == 'Api' ? 'ApiController' : upperExt}`); return ` ${name},`; }).reduce((acc, cur) => (acc += cur), '').trim(); return { importFile, exportFile, importNames }; } /** * 创建index.ts 并在本层导出 * @param {string} dirName 文件夹名 * @param {string} dirUrl 文件夹地址 * @param {string} exportFile 导出文件列表(string) */ createIndexTs(dirName, dirUrl, exportFile) { //创建此模块的index.ts const moduleIndex = `export * from './${dirName}.module';${exportFile}`; fs_extra_1.writeFileSync(path_1.join(dirUrl, `index.ts`), moduleIndex); // 本层的index.ts fs_extra_1.ensureFileSync(path_1.join(dirUrl, '../index.ts')); let thisIndex = fs_extra_1.readFileSync(path_1.join(dirUrl, '../index.ts')).toString(); if (!thisIndex.includes(`${dirName}`)) { thisIndex += ` export * from './${dirName}';`; fs_extra_1.writeFileSync(path_1.join(dirUrl, '../index.ts'), thisIndex); } } /** * 获取所有层的package.json * @param {any[]} entities */ getPackageJsons(entities) { const dirName = entities[0].dirName; const libUrl = path_1.join(process.cwd(), '../../../'); const basicDir = path_1.join(libUrl, './basic/src', dirName); const domainDir = path_1.join(libUrl, './domain/src', dirName); const entitiesDir = path_1.join(libUrl, './entities/src', dirName); const apiDir = path_1.join(libUrl, './api/src', dirName); // entity const entitiesPakcageJson = this._getPackageByLayerName('entities'); // basic const basicPakcageJson = this._getPackageByLayerName('basic'); // domain const domainPakcageJson = this._getPackageByLayerName('domain'); // api const apiPakcageJson = this._getPackageByLayerName('api'); return { apiPakcageJson, domainPakcageJson, basicPakcageJson, entitiesPakcageJson, apiDir, entitiesDir, domainDir, basicDir }; } _getPackageByLayerName(layerName) { const packageUrl = path_1.join(process.cwd(), '../../../', layerName, 'package.json'); if (!fs_extra_1.pathExistsSync(packageUrl)) throw new Error(`请创建${layerName}层package.json`); const pakcageJson = fs_extra_1.readJSONSync(packageUrl); if (!pakcageJson.name || !pakcageJson.version) throw new Error(`${layerName}层package.json没有name或version`); return pakcageJson; } }; UtilService = tslib_1.__decorate([ core_1.Injectable() ], UtilService); exports.UtilService = UtilService;