@notadd/cli
Version:
notadd core none dependence
87 lines (86 loc) • 3.85 kB
JavaScript
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;
;