@git.zone/tspublish 1.1.0 → 1.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/cli.js CHANGED
File without changes
@@ -3,7 +3,7 @@
3
3
  */
4
4
  export const commitinfo = {
5
5
  name: '@git.zone/tspublish',
6
- version: '1.1.0',
7
- description: 'publish multiple, concise and small packages from monorepos'
6
+ version: '1.2.1',
7
+ description: 'A tool to publish multiple, concise, and small packages from monorepos, specifically for TypeScript projects within a git environment.'
8
8
  };
9
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMDBfY29tbWl0aW5mb19kYXRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvMDBfY29tbWl0aW5mb19kYXRhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHO0lBQ3hCLElBQUksRUFBRSxxQkFBcUI7SUFDM0IsT0FBTyxFQUFFLE9BQU87SUFDaEIsV0FBVyxFQUFFLDZEQUE2RDtDQUMzRSxDQUFBIn0=
9
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMDBfY29tbWl0aW5mb19kYXRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvMDBfY29tbWl0aW5mb19kYXRhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHO0lBQ3hCLElBQUksRUFBRSxxQkFBcUI7SUFDM0IsT0FBTyxFQUFFLE9BQU87SUFDaEIsV0FBVyxFQUFFLHdJQUF3STtDQUN0SixDQUFBIn0=
@@ -16,4 +16,6 @@ export declare class PublishModule {
16
16
  getLatestVersionOfPackage(name: string): Promise<string>;
17
17
  createPackageJson(): Promise<string>;
18
18
  createPublishModuleDir(): Promise<void>;
19
+ build(): Promise<void>;
20
+ publish(): Promise<void>;
19
21
  }
@@ -12,13 +12,19 @@ export class PublishModule {
12
12
  throw new Error('subFolder must start with "ts"');
13
13
  }
14
14
  const jsonData = plugins.smartfile.fs.toObjectSync(plugins.path.join(this.options.packageSubFolderFullPath, 'tspublish.json'));
15
- this.options.dependencies = this.options.dependencies || {};
15
+ const monoRepoPackageJson = JSON.parse(plugins.smartfile.fs.toStringSync(plugins.path.join(this.options.monoRepoDir, 'package.json')));
16
16
  this.options.dependencies = {
17
17
  ...this.options.dependencies,
18
- ...jsonData.dependencies,
18
+ ...(() => {
19
+ const resultDependencies = {};
20
+ for (const dependency of jsonData.dependencies) {
21
+ resultDependencies[dependency] = monoRepoPackageJson.dependencies[dependency];
22
+ }
23
+ return resultDependencies;
24
+ })()
19
25
  };
20
26
  this.options.name = this.options.name || jsonData.name;
21
- this.options.version = plugins.smartfile.fs.toObjectSync(plugins.path.join(this.options.monoRepoDir, 'package.json')).version;
27
+ this.options.version = monoRepoPackageJson.version;
22
28
  // now that we have a name and version, lets check if there is already a package under the same name and version.
23
29
  const smartnpmInstance = new plugins.smartnpm.NpmRegistry({}); // TODO: pass in options
24
30
  const packageInfo = await smartnpmInstance.getPackageInfo(this.options.name);
@@ -66,5 +72,17 @@ export class PublishModule {
66
72
  // ts folder
67
73
  await plugins.smartfile.fs.copy(this.options.packageSubFolderFullPath, plugins.path.join(this.options.publishModDirFullPath, this.options.packageSubFolder));
68
74
  }
75
+ async build() {
76
+ const smartshellInstance = new plugins.smartshell.Smartshell({
77
+ executor: 'bash',
78
+ });
79
+ await smartshellInstance.exec(`cd ${this.options.publishModDirFullPath} && pnpm run build`);
80
+ }
81
+ async publish() {
82
+ const smartshellInstance = new plugins.smartshell.Smartshell({
83
+ executor: 'bash',
84
+ });
85
+ await smartshellInstance.exec(`cd ${this.options.publishModDirFullPath} && pnpm publish`);
86
+ }
69
87
  }
70
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xhc3Nlcy5wdWJsaXNobW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvY2xhc3Nlcy5wdWJsaXNobW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxPQUFPLE1BQU0sY0FBYyxDQUFDO0FBQ3hDLE9BQU8sS0FBSyxLQUFLLE1BQU0sWUFBWSxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFZdEMsTUFBTSxPQUFPLGFBQWE7SUFFeEIsWUFBWSxPQUE4QjtRQUN4QyxJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztJQUN6QixDQUFDO0lBRU0sS0FBSyxDQUFDLElBQUk7UUFDZixJQUFJLENBQUMsT0FBTyxDQUFDLHdCQUF3QixHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUN2RCxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsRUFDeEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FDOUIsQ0FBQztRQUVGLHFCQUFxQjtRQUNyQixJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUNwRCxNQUFNLElBQUksS0FBSyxDQUFDLGdDQUFnQyxDQUFDLENBQUM7UUFDcEQsQ0FBQztRQUNELE1BQU0sUUFBUSxHQUFHLE9BQU8sQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLFlBQVksQ0FDaEQsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyx3QkFBd0IsRUFBRSxnQkFBZ0IsQ0FBQyxDQUMzRSxDQUFDO1FBQ0YsSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLElBQUksRUFBRSxDQUFDO1FBQzVELElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxHQUFHO1lBQzFCLEdBQUcsSUFB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
88
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xhc3Nlcy5wdWJsaXNobW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvY2xhc3Nlcy5wdWJsaXNobW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxPQUFPLE1BQU0sY0FBYyxDQUFDO0FBQ3hDLE9BQU8sS0FBSyxLQUFLLE1BQU0sWUFBWSxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFZdEMsTUFBTSxPQUFPLGFBQWE7SUFFeEIsWUFBWSxPQUE4QjtRQUN4QyxJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztJQUN6QixDQUFDO0lBRU0sS0FBSyxDQUFDLElBQUk7UUFDZixJQUFJLENBQUMsT0FBTyxDQUFDLHdCQUF3QixHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUN2RCxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsRUFDeEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FDOUIsQ0FBQztRQUVGLHFCQUFxQjtRQUNyQixJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUNwRCxNQUFNLElBQUksS0FBSyxDQUFDLGdDQUFnQyxDQUFDLENBQUM7UUFDcEQsQ0FBQztRQUNELE1BQU0sUUFBUSxHQUFHLE9BQU8sQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLFlBQVksQ0FDaEQsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyx3QkFBd0IsRUFBRSxnQkFBZ0IsQ0FBQyxDQUMzRSxDQUFDO1FBQ0YsTUFBTSxtQkFBbUIsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUNwQyxPQUFPLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9B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
@@ -11,6 +11,9 @@ export class TsPublish {
11
11
  packageSubFolder: publishModule,
12
12
  });
13
13
  await publishModuleInstance.init();
14
+ await publishModuleInstance.createPublishModuleDir();
15
+ await publishModuleInstance.build();
16
+ await publishModuleInstance.publish();
14
17
  }
15
18
  }
16
19
  async readDirectory(dirArg) {
@@ -32,4 +35,4 @@ export class TsPublish {
32
35
  return publishModules;
33
36
  }
34
37
  }
35
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xhc3Nlcy50c3B1Ymxpc2guanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9jbGFzc2VzLnRzcHVibGlzaC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ3RDLE9BQU8sS0FBSyxPQUFPLE1BQU0sY0FBYyxDQUFDO0FBRXhDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUUzRCxNQUFNLE9BQU8sU0FBUztJQUNwQixnQkFBZSxDQUFDO0lBRVQsS0FBSyxDQUFDLE9BQU8sQ0FBRSxjQUFzQjtRQUMxQyxNQUFNLGNBQWMsR0FBRyxNQUFNLElBQUksQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDaEUsS0FBSyxNQUFNLGFBQWEsSUFBSSxjQUFjLEVBQUUsQ0FBQztZQUMzQyxNQUFNLHFCQUFxQixHQUFHLElBQUksYUFBYSxDQUFDO2dCQUM5QyxXQUFXLEVBQUUsY0FBYztnQkFDM0IsZ0JBQWdCLEVBQUUsYUFBYTthQUNoQyxDQUFDLENBQUM7WUFDSCxNQUFNLHFCQUFxQixDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3JDLENBQUM7SUFDSCxDQUFDO0lBRU0sS0FBSyxDQUFDLGFBQWEsQ0FBRSxNQUFjO1FBQ3hDLE1BQU0sT0FBTyxHQUFHLE1BQU0sT0FBTyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQy9ELE1BQU0sY0FBYyxHQUFhLEVBQUUsQ0FBQztRQUNwQyxLQUFLLE1BQU0sTUFBTSxJQUFJLE9BQU8sRUFBRSxDQUFDO1lBQzdCLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7Z0JBQzdCLFNBQVM7WUFDWCxDQUFDO1lBQ0QsTUFBTSxRQUFRLEdBQUcsTUFBTSxPQUFPLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1lBQ3pFLE1BQU0sY0FBYyxHQUFHLFFBQVEsQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztZQUMzRCxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7Z0JBQ3BCLFNBQVM7WUFDWCxDQUFDO1lBQ0QsTUFBTSxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUseUJBQXlCLE1BQU0sRUFBRSxDQUFDLENBQUM7WUFDdEQsY0FBYyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUM5QixDQUFDO1FBQ0QsTUFBTSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsU0FBUyxjQUFjLENBQUMsTUFBTSxrQkFBa0IsQ0FBQyxDQUFDO1FBQ25FLE9BQU8sY0FBYyxDQUFDO0lBQ3hCLENBQUM7Q0FDRiJ9
38
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xhc3Nlcy50c3B1Ymxpc2guanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9jbGFzc2VzLnRzcHVibGlzaC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ3RDLE9BQU8sS0FBSyxPQUFPLE1BQU0sY0FBYyxDQUFDO0FBRXhDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUUzRCxNQUFNLE9BQU8sU0FBUztJQUNwQixnQkFBZSxDQUFDO0lBRVQsS0FBSyxDQUFDLE9BQU8sQ0FBRSxjQUFzQjtRQUMxQyxNQUFNLGNBQWMsR0FBRyxNQUFNLElBQUksQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDaEUsS0FBSyxNQUFNLGFBQWEsSUFBSSxjQUFjLEVBQUUsQ0FBQztZQUMzQyxNQUFNLHFCQUFxQixHQUFHLElBQUksYUFBYSxDQUFDO2dCQUM5QyxXQUFXLEVBQUUsY0FBYztnQkFDM0IsZ0JBQWdCLEVBQUUsYUFBYTthQUNoQyxDQUFDLENBQUM7WUFDSCxNQUFNLHFCQUFxQixDQUFDLElBQUksRUFBRSxDQUFDO1lBQ25DLE1BQU0scUJBQXFCLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztZQUNyRCxNQUFNLHFCQUFxQixDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ3BDLE1BQU0scUJBQXFCLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDeEMsQ0FBQztJQUNILENBQUM7SUFFTSxLQUFLLENBQUMsYUFBYSxDQUFFLE1BQWM7UUFDeEMsTUFBTSxPQUFPLEdBQUcsTUFBTSxPQUFPLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDL0QsTUFBTSxjQUFjLEdBQWEsRUFBRSxDQUFDO1FBQ3BDLEtBQUssTUFBTSxNQUFNLElBQUksT0FBTyxFQUFFLENBQUM7WUFDN0IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztnQkFDN0IsU0FBUztZQUNYLENBQUM7WUFDRCxNQUFNLFFBQVEsR0FBRyxNQUFNLE9BQU8sQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLFlBQVksQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUM7WUFDekUsTUFBTSxjQUFjLEdBQUcsUUFBUSxDQUFDLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1lBQzNELElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztnQkFDcEIsU0FBUztZQUNYLENBQUM7WUFDRCxNQUFNLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSx5QkFBeUIsTUFBTSxFQUFFLENBQUMsQ0FBQztZQUN0RCxjQUFjLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzlCLENBQUM7UUFDRCxNQUFNLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxTQUFTLGNBQWMsQ0FBQyxNQUFNLGtCQUFrQixDQUFDLENBQUM7UUFDbkUsT0FBTyxjQUFjLENBQUM7SUFDeEIsQ0FBQztDQUNGIn0=
@@ -5,4 +5,5 @@ import * as smartcli from '@push.rocks/smartcli';
5
5
  import * as smartlog from '@push.rocks/smartlog';
6
6
  import * as smartnpm from '@push.rocks/smartnpm';
7
7
  import * as smartpath from '@push.rocks/smartpath';
8
- export { smartfile, smartcli, smartlog, smartnpm, smartpath, };
8
+ import * as smartshell from '@push.rocks/smartshell';
9
+ export { smartfile, smartcli, smartlog, smartnpm, smartpath, smartshell };
@@ -7,5 +7,6 @@ import * as smartcli from '@push.rocks/smartcli';
7
7
  import * as smartlog from '@push.rocks/smartlog';
8
8
  import * as smartnpm from '@push.rocks/smartnpm';
9
9
  import * as smartpath from '@push.rocks/smartpath';
10
- export { smartfile, smartcli, smartlog, smartnpm, smartpath, };
11
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGx1Z2lucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3RzL3BsdWdpbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsb0JBQW9CO0FBQ3BCLE9BQU8sS0FBSyxJQUFJLE1BQU0sTUFBTSxDQUFDO0FBQzdCLE9BQU8sRUFDTCxJQUFJLEdBQ0wsQ0FBQTtBQUVELG9CQUFvQjtBQUNwQixPQUFPLEtBQUssU0FBUyxNQUFNLHVCQUF1QixDQUFDO0FBQ25ELE9BQU8sS0FBSyxRQUFRLE1BQU0sc0JBQXNCLENBQUM7QUFDakQsT0FBTyxLQUFLLFFBQVEsTUFBTSxzQkFBc0IsQ0FBQztBQUNqRCxPQUFPLEtBQUssUUFBUSxNQUFNLHNCQUFzQixDQUFDO0FBQ2pELE9BQU8sS0FBSyxTQUFTLE1BQU0sdUJBQXVCLENBQUM7QUFFbkQsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxTQUFTLEdBQUcsQ0FBQyJ9
10
+ import * as smartshell from '@push.rocks/smartshell';
11
+ export { smartfile, smartcli, smartlog, smartnpm, smartpath, smartshell };
12
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGx1Z2lucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3RzL3BsdWdpbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsb0JBQW9CO0FBQ3BCLE9BQU8sS0FBSyxJQUFJLE1BQU0sTUFBTSxDQUFDO0FBQzdCLE9BQU8sRUFDTCxJQUFJLEdBQ0wsQ0FBQTtBQUVELG9CQUFvQjtBQUNwQixPQUFPLEtBQUssU0FBUyxNQUFNLHVCQUF1QixDQUFDO0FBQ25ELE9BQU8sS0FBSyxRQUFRLE1BQU0sc0JBQXNCLENBQUM7QUFDakQsT0FBTyxLQUFLLFFBQVEsTUFBTSxzQkFBc0IsQ0FBQztBQUNqRCxPQUFPLEtBQUssUUFBUSxNQUFNLHNCQUFzQixDQUFDO0FBQ2pELE9BQU8sS0FBSyxTQUFTLE1BQU0sdUJBQXVCLENBQUM7QUFDbkQsT0FBTyxLQUFLLFVBQVUsTUFBTSx3QkFBd0IsQ0FBQztBQUVyRCxPQUFPLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsQ0FBQyJ9
package/npmextra.json CHANGED
@@ -5,10 +5,22 @@
5
5
  "githost": "code.foss.global",
6
6
  "gitscope": "git.zone",
7
7
  "gitrepo": "tspublish",
8
- "description": "publish multiple, concise and small packages from monorepos",
8
+ "description": "A tool to publish multiple, concise, and small packages from monorepos, specifically for TypeScript projects within a git environment.",
9
9
  "npmPackagename": "@git.zone/tspublish",
10
10
  "license": "MIT",
11
- "projectDomain": "git.zone"
11
+ "projectDomain": "git.zone",
12
+ "keywords": [
13
+ "typescript",
14
+ "monorepo",
15
+ "package",
16
+ "publish",
17
+ "npm",
18
+ "automation",
19
+ "git",
20
+ "modularity",
21
+ "module-management",
22
+ "developer-tools"
23
+ ]
12
24
  }
13
25
  },
14
26
  "npmci": {
package/package.json CHANGED
@@ -1,13 +1,16 @@
1
1
  {
2
2
  "name": "@git.zone/tspublish",
3
- "version": "1.1.0",
3
+ "version": "1.2.1",
4
4
  "private": false,
5
- "description": "publish multiple, concise and small packages from monorepos",
5
+ "description": "A tool to publish multiple, concise, and small packages from monorepos, specifically for TypeScript projects within a git environment.",
6
6
  "main": "dist_ts/index.js",
7
7
  "typings": "dist_ts/index.d.ts",
8
8
  "type": "module",
9
9
  "author": "Task Venture Capital GmbH",
10
10
  "license": "MIT",
11
+ "bin": {
12
+ "tspublish": "cli.js"
13
+ },
11
14
  "devDependencies": {
12
15
  "@git.zone/tsbuild": "^2.1.25",
13
16
  "@git.zone/tsbundle": "^2.0.5",
@@ -44,8 +47,21 @@
44
47
  "@push.rocks/smartfile": "^11.0.21",
45
48
  "@push.rocks/smartlog": "^3.0.7",
46
49
  "@push.rocks/smartnpm": "^2.0.4",
47
- "@push.rocks/smartpath": "^5.0.18"
50
+ "@push.rocks/smartpath": "^5.0.18",
51
+ "@push.rocks/smartshell": "^3.0.6"
48
52
  },
53
+ "keywords": [
54
+ "typescript",
55
+ "monorepo",
56
+ "package",
57
+ "publish",
58
+ "npm",
59
+ "automation",
60
+ "git",
61
+ "modularity",
62
+ "module-management",
63
+ "developer-tools"
64
+ ],
49
65
  "scripts": {
50
66
  "test": "(tstest test/ --web)",
51
67
  "build": "(tsbuild --web --allowimplicitany)",
package/readme.md CHANGED
@@ -2,6 +2,190 @@
2
2
 
3
3
  publish multiple, concise and small packages from monorepos
4
4
 
5
- ## How to create the docs
5
+ ## Install
6
6
 
7
- To create docs run gitzone aidoc.
7
+ To install `@git.zone/tspublish`, you can use npm. To use the latest stable version, run:
8
+
9
+ ```bash
10
+ npm install @git.zone/tspublish
11
+ ```
12
+
13
+ Alternatively, if you are using yarn, the equivalent command would be:
14
+
15
+ ```bash
16
+ yarn add @git.zone/tspublish
17
+ ```
18
+
19
+ These commands will add `@git.zone/tspublish` as a dependency in your `package.json` file and install the package into your `node_modules` directory.
20
+
21
+ ## Usage
22
+
23
+ `@git.zone/tspublish` is designed to manage the publishing of multiple, small-scale packages within monorepos. The following sections will guide you through its usage, from setting up your environment to effectively publishing packages.
24
+
25
+ ### Getting Started with TypeScript and Module Setup
26
+
27
+ `@git.zone/tspublish` works with monorepos that are organized using TypeScript. The package structure should follow a convention where each submodule intended for publishing is located in a directory prefixed with `ts`, for example, `tsModuleName`. Each submodule directory should contain a `tspublish.json` file to correctly configure the package to be published separately. This file is critical for the `tspublish` process to identify valid package directories and should also include necessary metadata for the package.
28
+
29
+ Your monorepo structure might resemble:
30
+
31
+ ```
32
+ my-monorepo/
33
+ ├── ts-package1/
34
+ │ ├── src/
35
+ │ ├── tspublish.json
36
+ ├── ts-package2/
37
+ │ ├── src/
38
+ │ ├── tspublish.json
39
+ ```
40
+
41
+ ### Configuring `tspublish.json`
42
+
43
+ Each submodule must include a `tspublish.json` within its directory. This JSON file should include essential details for your publishable package, including its dependencies. Here's a basic example of what `tspublish.json` could look like:
44
+
45
+ ```json
46
+ {
47
+ "name": "@myorg/ts-package1",
48
+ "dependencies": {
49
+ "some-dependency": "^1.0.0"
50
+ }
51
+ }
52
+ ```
53
+
54
+ ### Running the CLI
55
+
56
+ `@git.zone/tspublish` includes a CLI that simplifies the publishing process. Begin by importing the CLI runner in a script within your project:
57
+
58
+ ```typescript
59
+ import { runCli } from '@git.zone/tspublish';
60
+
61
+ runCli();
62
+ ```
63
+
64
+ This function call orchestrates the publishing operation. It reads each directory prefixed with `ts`, looks for a `tspublish.json`, and creates an individual package based on the gathered data.
65
+
66
+ ### Core Features
67
+
68
+ #### Publishing Modules
69
+
70
+ The core functionality provided by `@git.zone/tspublish` involves processing directories to check for valid submodules that are ready to be published. This occurs via the `publish` method in `TsPublish` class. This method does the following:
71
+
72
+ - **Reads all directories** within the specified monorepo path.
73
+ - **Identifies directories** that start with `ts` and validates the presence of `tspublish.json`.
74
+ - **Logs** information about found packages for user awareness and debugging.
75
+ - **Checks for collisions** with existing versions on the npm registry to prevent overriding published versions.
76
+
77
+ ```typescript
78
+ import { TsPublish } from '@git.zone/tspublish';
79
+
80
+ const tspublish = new TsPublish();
81
+ await tspublish.publish('/path/to/your/monorepo');
82
+ ```
83
+
84
+ #### Package Initialization
85
+
86
+ Once valid submodules are identified, the `init` method in the `PublishModule` class initializes the publish module. This includes:
87
+
88
+ - Parsing `tspublish.json` for metadata.
89
+ - Constructing full paths for necessary operations.
90
+ - Verifying package existence to avoid duplication.
91
+
92
+ ```typescript
93
+ import { PublishModule } from '@git.zone/tspublish';
94
+
95
+ const publishModule = new PublishModule({
96
+ monoRepoDir: '/path/to/monorepo',
97
+ packageSubFolder: 'ts-package1',
98
+ });
99
+
100
+ await publishModule.init();
101
+ ```
102
+
103
+ #### Creating `package.json`
104
+
105
+ Part of the publishing process involves automatically creating a `package.json` tailored to each submodule. This dynamically generated JSON will incorporate dependencies from `tspublish.json` and associate them with the latest version of `tsbuild` from the registry:
106
+
107
+ ```typescript
108
+ await publishModule.createPackageJson();
109
+ ```
110
+
111
+ This creates a structured `package.json` which includes scripts to build your TypeScript files before publishing.
112
+
113
+ #### Constructing Publish-ready Directory
114
+
115
+ After all configurations are verified and the `package.json` is created, the submodule is ready to be published. This step involves setting up a `dist_publish_` directory specific to each module:
116
+
117
+ ```typescript
118
+ await publishModule.createPublishModuleDir();
119
+ ```
120
+
121
+ The above method ensures that each module's source files are copied and prepared under a dedicated directory meant for packaging and distribution.
122
+
123
+ ### Logging and Debugging
124
+
125
+ The package includes a structured logging mechanism using `smartlog` which provides insights into the publishing process, helping in runtime debugging and status tracking of operations:
126
+
127
+ ```typescript
128
+ import { logger } from '@git.zone/tspublish/logging';
129
+
130
+ logger.log('info', 'Publishing process initialized');
131
+ ```
132
+
133
+ This powerful logging helps in tracking the status of each step and understanding potential issues during the operations.
134
+
135
+ ### Testing with tapbundle
136
+
137
+ To ensure that your publishing workflow is functioning correctly, you can utilize the test suite set up with `tapbundle`. This library facilitates behavior-driven testing for your monorepo. Below is a basic test setup to verify the import and initial function accessibility of `@git.zone/tspublish`:
138
+
139
+ ```typescript
140
+ import { expect, tap } from '@push.rocks/tapbundle';
141
+ import * as tspublish from '@git.zone/tspublish';
142
+
143
+ tap.test('Should run the CLI without errors', async () => {
144
+ await tspublish.runCli();
145
+ expect(tspublish).toBeTruthy();
146
+ });
147
+
148
+ tap.start();
149
+ ```
150
+
151
+ ### Comprehensive usage example
152
+
153
+ Let's combine all the steps into a complete example where you prepare a monorepo, configure each module, and execute the publishing workflow.
154
+
155
+ Suppose you have a project structure as follows:
156
+
157
+ ```plaintext
158
+ my-monorepo/
159
+ ├── ts-package1/
160
+ │ ├── src/
161
+ │ ├── tspublish.json
162
+ ├── ts-package2/
163
+ │ ├── src/
164
+ │ ├── tspublish.json
165
+ ```
166
+
167
+ Follow these steps:
168
+
169
+ 1. Ensure each package has `tspublish.json` properly configured with necessary metadata.
170
+ 2. Create a CLI script such as `publish.js`:
171
+
172
+ ```typescript
173
+ import { runCli } from '@git.zone/tspublish';
174
+
175
+ runCli().then(() => {
176
+ console.log('Publishing completed successfully');
177
+ }).catch((error) => {
178
+ console.error('Error during publishing:', error);
179
+ });
180
+ ```
181
+
182
+ 3. Execute your CLI script:
183
+
184
+ ```bash
185
+ node publish.js
186
+ ```
187
+
188
+ Your script will call `runCli`, which will traverse each `ts-package`, verify their publish readiness, and handle individual publishing processes.
189
+
190
+ By following these comprehensive guidelines and utilizing the structured approach provided by `@git.zone/tspublish`, you can efficiently manage and publish multiple sub-packages from within a monorepo, facilitating organized, modular package management in projects of any scale.
191
+ undefined
@@ -3,6 +3,6 @@
3
3
  */
4
4
  export const commitinfo = {
5
5
  name: '@git.zone/tspublish',
6
- version: '1.1.0',
7
- description: 'publish multiple, concise and small packages from monorepos'
6
+ version: '1.2.1',
7
+ description: 'A tool to publish multiple, concise, and small packages from monorepos, specifically for TypeScript projects within a git environment.'
8
8
  }
@@ -31,15 +31,21 @@ export class PublishModule {
31
31
  const jsonData = plugins.smartfile.fs.toObjectSync(
32
32
  plugins.path.join(this.options.packageSubFolderFullPath, 'tspublish.json')
33
33
  );
34
- this.options.dependencies = this.options.dependencies || {};
34
+ const monoRepoPackageJson = JSON.parse(
35
+ plugins.smartfile.fs.toStringSync(plugins.path.join(this.options.monoRepoDir, 'package.json'))
36
+ )
35
37
  this.options.dependencies = {
36
38
  ...this.options.dependencies,
37
- ...jsonData.dependencies,
39
+ ...(() => {
40
+ const resultDependencies = {};
41
+ for (const dependency of jsonData.dependencies) {
42
+ resultDependencies[dependency] = monoRepoPackageJson.dependencies[dependency];
43
+ }
44
+ return resultDependencies;
45
+ })()
38
46
  };
39
47
  this.options.name = this.options.name || jsonData.name;
40
- this.options.version = plugins.smartfile.fs.toObjectSync(
41
- plugins.path.join(this.options.monoRepoDir, 'package.json')
42
- ).version;
48
+ this.options.version = monoRepoPackageJson.version;
43
49
 
44
50
  // now that we have a name and version, lets check if there is already a package under the same name and version.
45
51
  const smartnpmInstance = new plugins.smartnpm.NpmRegistry({}); // TODO: pass in options
@@ -102,4 +108,18 @@ export class PublishModule {
102
108
  // ts folder
103
109
  await plugins.smartfile.fs.copy(this.options.packageSubFolderFullPath, plugins.path.join(this.options.publishModDirFullPath, this.options.packageSubFolder))
104
110
  }
111
+
112
+ public async build() {
113
+ const smartshellInstance = new plugins.smartshell.Smartshell({
114
+ executor: 'bash',
115
+ })
116
+ await smartshellInstance.exec(`cd ${this.options.publishModDirFullPath} && pnpm run build`);
117
+ }
118
+
119
+ public async publish() {
120
+ const smartshellInstance = new plugins.smartshell.Smartshell({
121
+ executor: 'bash',
122
+ })
123
+ await smartshellInstance.exec(`cd ${this.options.publishModDirFullPath} && pnpm publish`);
124
+ }
105
125
  }
@@ -14,6 +14,9 @@ export class TsPublish {
14
14
  packageSubFolder: publishModule,
15
15
  });
16
16
  await publishModuleInstance.init();
17
+ await publishModuleInstance.createPublishModuleDir();
18
+ await publishModuleInstance.build();
19
+ await publishModuleInstance.publish();
17
20
  }
18
21
  }
19
22
 
package/ts/plugins.ts CHANGED
@@ -10,5 +10,6 @@ import * as smartcli from '@push.rocks/smartcli';
10
10
  import * as smartlog from '@push.rocks/smartlog';
11
11
  import * as smartnpm from '@push.rocks/smartnpm';
12
12
  import * as smartpath from '@push.rocks/smartpath';
13
+ import * as smartshell from '@push.rocks/smartshell';
13
14
 
14
- export { smartfile, smartcli, smartlog, smartnpm, smartpath, };
15
+ export { smartfile, smartcli, smartlog, smartnpm, smartpath, smartshell };