feat(classes.publishmodule): Add method to create and write tsconfig.json during publish module setup

This commit is contained in:
Philipp Kunz 2024-10-28 01:21:06 +01:00
parent f518670443
commit 91f3c90607
3 changed files with 40 additions and 1 deletions

View File

@ -1,5 +1,11 @@
# Changelog # Changelog
## 2024-10-28 - 1.5.0 - feat(classes.publishmodule)
Add method to create and write tsconfig.json during publish module setup
- Introduced createTsconfigJson method in PublishModule class to generate a tsconfig.json for each publishable module.
- Modified createPublishModuleDir method to include writing of tsconfig.json file.
## 2024-10-26 - 1.4.0 - feat(core) ## 2024-10-26 - 1.4.0 - feat(core)
Refactor directory reading and module discovery for publishing process Refactor directory reading and module discovery for publishing process

View File

@ -3,6 +3,6 @@
*/ */
export const commitinfo = { export const commitinfo = {
name: '@git.zone/tspublish', name: '@git.zone/tspublish',
version: '1.4.0', version: '1.5.0',
description: 'A tool to publish multiple, concise, and small packages from monorepos, specifically for TypeScript projects within a git environment.' description: 'A tool to publish multiple, concise, and small packages from monorepos, specifically for TypeScript projects within a git environment.'
} }

View File

@ -76,6 +76,31 @@ export class PublishModule {
return packageInfo.allVersions[0].version; return packageInfo.allVersions[0].version;
} }
public async createTsconfigJson() {
const originalTsConfig = plugins.smartfile.fs.toObjectSync(
plugins.path.join(paths.cwd, 'tsconfig.json')
);
for (const path of originalTsConfig.compilerOptions.paths) {
originalTsConfig.compilerOptions.paths[path][0] = `.${originalTsConfig.compilerOptions.paths[path][0]}`;
}
const tsconfigJson = {
compilerOptions: {
experimentalDecorators: true,
useDefineForClassFields: false,
target: 'ES2022',
module: 'NodeNext',
moduleResolution: 'NodeNext',
esModuleInterop: true,
verbatimModuleSyntax: true,
paths: originalTsConfig.compilerOptions.paths,
},
exclude: [
'dist_*/**/*.d.ts',
],
};
return JSON.stringify(tsconfigJson, null, 2);
}
public async createPackageJson() { public async createPackageJson() {
const packageJson = { const packageJson = {
name: this.options.name, name: this.options.name,
@ -125,6 +150,14 @@ export class PublishModule {
); );
await packageJson.write(); await packageJson.write();
// tsconfig.json
const originalTsConfigJson = await plugins.smartfile.SmartFile.fromString(
plugins.path.join(this.options.publishModDirFullPath, 'tsconfig.json'),
await this.createTsconfigJson(),
'utf8'
);
await originalTsConfigJson.write();
// ts folder // ts folder
await plugins.smartfile.fs.copy( await plugins.smartfile.fs.copy(
this.options.packageSubFolderFullPath, this.options.packageSubFolderFullPath,