32 lines
1.3 KiB
TypeScript
32 lines
1.3 KiB
TypeScript
import * as plugins from './mod.plugins.js';
|
|
import * as paths from '../paths.js';
|
|
|
|
import { logger } from '../gitzone.logging.js';
|
|
import { Project } from '../classes.project.js';
|
|
|
|
export const run = async (projectArg: Project) => {
|
|
// lets care about tsconfig.json
|
|
logger.log('info', 'Formatting tsconfig.json...');
|
|
const factory = plugins.smartfile.SmartFileFactory.nodeFs();
|
|
const tsconfigSmartfile = await factory.fromFilePath(
|
|
plugins.path.join(paths.cwd, 'tsconfig.json'),
|
|
);
|
|
const tsconfigObject = JSON.parse(tsconfigSmartfile.parseContentAsString());
|
|
tsconfigObject.compilerOptions = tsconfigObject.compilerOptions || {};
|
|
tsconfigObject.compilerOptions.baseUrl = '.';
|
|
tsconfigObject.compilerOptions.paths = {};
|
|
const tsPublishMod = await import('@git.zone/tspublish');
|
|
const tsPublishInstance = new tsPublishMod.TsPublish();
|
|
const publishModules = await tsPublishInstance.getModuleSubDirs(paths.cwd);
|
|
for (const publishModule of Object.keys(publishModules)) {
|
|
const publishConfig = publishModules[publishModule];
|
|
tsconfigObject.compilerOptions.paths[`${publishConfig.name}`] = [
|
|
`./${publishModule}/index.js`,
|
|
];
|
|
}
|
|
await tsconfigSmartfile.editContentAsString(async () => {
|
|
return JSON.stringify(tsconfigObject, null, 2);
|
|
});
|
|
await tsconfigSmartfile.write();
|
|
};
|