@git.zone/tspublish 1.11.3 → 1.11.5

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.
@@ -3,7 +3,7 @@
3
3
  */
4
4
  export const commitinfo = {
5
5
  name: '@git.zone/tspublish',
6
- version: '1.11.3',
6
+ version: '1.11.5',
7
7
  description: 'A tool to publish multiple, concise, and small packages from monorepos, specifically for TypeScript projects within a git environment.'
8
8
  };
9
9
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMDBfY29tbWl0aW5mb19kYXRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvMDBfY29tbWl0aW5mb19kYXRhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHO0lBQ3hCLElBQUksRUFBRSxxQkFBcUI7SUFDM0IsT0FBTyxFQUFFLFFBQVE7SUFDakIsV0FBVyxFQUFFLHdJQUF3STtDQUN0SixDQUFBIn0=
@@ -118,10 +118,10 @@ export class PublishModule {
118
118
  'dist_ts_web/**/*',
119
119
  'assets/**/*',
120
120
  'cli.js',
121
- 'smartconfig.json',
121
+ '.smartconfig.json',
122
122
  'readme.md',
123
123
  ],
124
- ...this.options.tsPublishJson.bin ? {
124
+ ...this.options.tsPublishJson?.bin ? {
125
125
  bin: (() => {
126
126
  const binObject = {};
127
127
  for (const bin of this.options.tsPublishJson.bin) {
@@ -171,7 +171,7 @@ export class PublishModule {
171
171
  logSuccess(`Build completed for ${this.options.name}`);
172
172
  }
173
173
  async createBinCliSetup() {
174
- const binSetupApplies = this.options.tsPublishJson.bin &&
174
+ const binSetupApplies = !!this.options.tsPublishJson?.bin &&
175
175
  Array.isArray(this.options.tsPublishJson.bin) &&
176
176
  this.options.tsPublishJson.bin.length > 0;
177
177
  const files = await this.tsPublishRef.giteaAssetsInstance.getFiles('git.zone', 'cli', 'assets/templates/cli/cli.js');
@@ -257,4 +257,4 @@ export class PublishModule {
257
257
  logSuccess(`Successfully published ${this.options.name} v${this.options.version}!`);
258
258
  }
259
259
  }
260
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xhc3Nlcy5wdWJsaXNobW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvY2xhc3Nlcy5wdWJsaXNobW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxPQUFPLE1BQU0sY0FBYyxDQUFDO0FBQ3hDLE9BQU8sS0FBSyxLQUFLLE1BQU0sWUFBWSxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFFbkksT0FBTyxFQUF1QixNQUFNLHVCQUF1QixDQUFDO0FBbUI1RCxNQUFNLE9BQU8sYUFBYTtJQUd4QixZQUFZLFlBQXVCLEVBQUUsT0FBOEI7UUFDakUsSUFBSSxDQUFDLFlBQVksR0FBRyxZQUFZLENBQUM7UUFDakMsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7SUFDekIsQ0FBQztJQUVNLEtBQUssQ0FBQyxJQUFJO1FBQ2YsSUFBSSxDQUFDLE9BQU8sQ0FBQyx3QkFBd0IsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FDdkQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLEVBQ3hCLElBQUksQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLENBQzlCLENBQUM7UUFFRixxQkFBcUI7UUFDckIsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDcEQsTUFBTSxJQUFJLEtBQUssQ0FBQyxnQ0FBZ0MsQ0FBQyxDQUFDO1FBQ3BELENBQUM7UUFDRCxNQUFNLGlCQUFpQixHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsd0JBQXdCLEVBQUUsZ0JBQWdCLENBQUMsQ0FB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
260
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xhc3Nlcy5wdWJsaXNobW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvY2xhc3Nlcy5wdWJsaXNobW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxPQUFPLE1BQU0sY0FBYyxDQUFDO0FBQ3hDLE9BQU8sS0FBSyxLQUFLLE1BQU0sWUFBWSxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFFbkksT0FBTyxFQUF1QixNQUFNLHVCQUF1QixDQUFDO0FBbUI1RCxNQUFNLE9BQU8sYUFBYTtJQUd4QixZQUFZLFlBQXVCLEVBQUUsT0FBOEI7UUFDakUsSUFBSSxDQUFDLFlBQVksR0FBRyxZQUFZLENBQUM7UUFDakMsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7SUFDekIsQ0FBQztJQUVNLEtBQUssQ0FBQyxJQUFJO1FBQ2YsSUFBSSxDQUFDLE9BQU8sQ0FBQyx3QkFBd0IsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FDdkQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLEVBQ3hCLElBQUksQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLENBQzlCLENBQUM7UUFFRixxQkFBcUI7UUFDckIsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDcEQsTUFBTSxJQUFJLEtBQUssQ0FBQyxnQ0FBZ0MsQ0FBQyxDQUFDO1FBQ3BELENBQUM7UUFDRCxNQUFNLGlCQUFpQixHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsd0JBQXdCLEVBQUUsZ0JBQWdCLENBQUMsQ0FB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
package/license ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2024 Task Venture Capital GmbH
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@git.zone/tspublish",
3
- "version": "1.11.3",
3
+ "version": "1.11.5",
4
4
  "private": false,
5
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",
@@ -17,11 +17,11 @@
17
17
  "tspublish": "./cli.js"
18
18
  },
19
19
  "devDependencies": {
20
- "@git.zone/tsbuild": "^4.0.2",
21
- "@git.zone/tsbundle": "^2.6.3",
20
+ "@git.zone/tsbuild": "^4.4.0",
21
+ "@git.zone/tsbundle": "^2.10.0",
22
22
  "@git.zone/tsrun": "^2.0.1",
23
- "@git.zone/tstest": "^3.1.3",
24
- "@types/node": "^25.0.2"
23
+ "@git.zone/tstest": "^3.5.1",
24
+ "@types/node": "^25.5.0"
25
25
  },
26
26
  "repository": {
27
27
  "type": "git",
@@ -43,21 +43,21 @@
43
43
  "dist_ts_web/**/*",
44
44
  "assets/**/*",
45
45
  "cli.js",
46
- "npmextra.json",
46
+ ".smartconfig.json",
47
47
  "readme.md"
48
48
  ],
49
49
  "dependencies": {
50
50
  "@push.rocks/consolecolor": "^2.0.3",
51
- "@push.rocks/smartconfig": "^6.0.0",
52
- "@push.rocks/smartcli": "^4.0.19",
51
+ "@push.rocks/smartcli": "^4.0.20",
52
+ "@push.rocks/smartconfig": "^6.0.1",
53
53
  "@push.rocks/smartdelay": "^3.0.5",
54
54
  "@push.rocks/smartfile": "^13.1.2",
55
- "@push.rocks/smartfs": "^1.3.1",
56
- "@push.rocks/smartlog": "^3.1.10",
55
+ "@push.rocks/smartfs": "^1.5.0",
56
+ "@push.rocks/smartlog": "^3.2.1",
57
57
  "@push.rocks/smartnpm": "^2.0.6",
58
58
  "@push.rocks/smartpath": "^6.0.0",
59
59
  "@push.rocks/smartrequest": "^5.0.1",
60
- "@push.rocks/smartshell": "^3.3.7"
60
+ "@push.rocks/smartshell": "^3.3.8"
61
61
  },
62
62
  "keywords": [
63
63
  "typescript",
package/readme.hints.md CHANGED
@@ -1,3 +1,22 @@
1
1
  # Project Readme Hints
2
2
 
3
- This is the initial readme hints file.
3
+ ## Overview
4
+ - `@git.zone/tspublish` is a CLI tool + library for publishing multiple TypeScript packages from a monorepo
5
+ - Main entry: `ts/index.ts` exports `TsPublish` class and `runCli()` function
6
+ - CLI entry: `cli.js` (compiled) → `cli.child.ts` (dev) → `ts/index.ts`
7
+
8
+ ## Key Architecture
9
+ - `TsPublish` - main orchestrator class, discovers modules and runs publish pipeline
10
+ - `PublishModule` - handles individual module build/publish (not exported from main index)
11
+ - `GiteaAssets` - fetches CLI templates from code.foss.global Gitea API
12
+ - `plugins.ts` - all dependencies imported here, uses `@push.rocks/smartfs` for filesystem ops
13
+ - `logging.ts` - color-coded console output using consolecolor + smartlog
14
+
15
+ ## Configuration
16
+ - Uses `.smartconfig.json` (not npmextra.json) with `@push.rocks/smartconfig`
17
+ - Each publishable sub-module has its own `tspublish.json` in `ts_*` directories
18
+ - Registry config supports `useBase`, `extendBase`, or explicit URLs
19
+
20
+ ## Dependencies
21
+ - All dependencies at latest versions as of 2026-03-24
22
+ - No `ts_*/tspublish.json` sub-modules exist in this project itself
package/readme.md CHANGED
@@ -7,7 +7,7 @@
7
7
 
8
8
  ## 🌟 What is tspublish?
9
9
 
10
- `@git.zone/tspublish` is your Swiss Army knife for managing and publishing multiple TypeScript packages from a monorepo. It automates the tedious parts of package publishing while giving you full control over the process. Whether you're maintaining a suite of microservices, a component library, or any collection of related packages, tspublish makes your life easier.
10
+ `@git.zone/tspublish` is a powerful CLI tool and library for managing and publishing multiple TypeScript packages from a monorepo. It automates the tedious parts of package publishing — discovery, dependency resolution, building, version validation, and multi-registry publishing — while giving you full control over the process. Whether you're maintaining a suite of microservices, a component library, or any collection of related packages, tspublish makes your life dramatically easier.
11
11
 
12
12
  ## Issue Reporting and Security
13
13
 
@@ -15,62 +15,54 @@ For reporting bugs, issues, or security vulnerabilities, please visit [community
15
15
 
16
16
  ### ✨ Key Features
17
17
 
18
- - 📦 **Automatic Package Discovery** - Scans your monorepo for publishable packages
19
- - 🎨 **Beautiful CLI Output** - Color-coded logging with progress indicators
20
- - 🔍 **Version Collision Detection** - Prevents accidental overwrites
21
- - 🏗️ **Build Integration** - Automatically builds TypeScript before publishing
22
- - 🎯 **Smart Dependency Management** - Inherits dependencies from your monorepo
23
- - 🌐 **Multi-Registry Support** - Publish to npm, GitHub packages, or private registries
24
- - ⚡ **Zero Config** - Works out of the box with sensible defaults
18
+ - 📦 **Automatic Package Discovery** — Scans your monorepo for publishable `ts*` directories
19
+ - 🎨 **Beautiful CLI Output** — Color-coded logging with progress bars and status indicators
20
+ - 🔍 **Version Collision Detection** — Prevents accidental overwrites by checking the registry first
21
+ - 🏗️ **Build Integration** — Automatically compiles TypeScript before publishing via `@git.zone/tsbuild`
22
+ - 🎯 **Smart Dependency Management** — Inherits dependency versions from your monorepo's `package.json`
23
+ - 🌐 **Multi-Registry Support** — Publish to npm, GitHub Packages, Gitea, or private registries
24
+ - 🔗 **Base Registry Inheritance** — Use `useBase` / `extendBase` to inherit registries from `.smartconfig.json`
25
+ - ⚡ **CLI Binary Support** — Automatically generates `cli.js` wrappers for publishable CLI packages
26
+ - 🧹 **Clean Builds** — Creates isolated `dist_publish_*` directories for each package
25
27
 
26
28
  ## 📥 Installation
27
29
 
28
- ### As a Development Dependency (Recommended)
29
-
30
30
  ```bash
31
31
  # Using pnpm (recommended)
32
32
  pnpm add -D @git.zone/tspublish
33
33
 
34
- # Using npm
35
- npm install --save-dev @git.zone/tspublish
36
-
37
- # Using yarn
38
- yarn add -D @git.zone/tspublish
39
- ```
40
-
41
- ### Global Installation
42
-
43
- ```bash
44
- npm install -g @git.zone/tspublish
34
+ # Global installation for CLI usage
35
+ pnpm add -g @git.zone/tspublish
45
36
  ```
46
37
 
47
38
  ## 🚀 Quick Start
48
39
 
49
40
  ### 1️⃣ Structure Your Monorepo
50
41
 
51
- Organize your packages with the `ts` prefix convention:
42
+ Organize your packages using directories that start with `ts`:
52
43
 
53
44
  ```
54
45
  my-awesome-monorepo/
55
- ├── package.json # Main monorepo package.json
56
- ├── tsconfig.json # Shared TypeScript config
57
- ├── ts-core/ # Core package
58
- │ ├── ts/ # TypeScript source files
59
- │ ├── readme.md # Package documentation
60
- │ └── tspublish.json # Publishing configuration
61
- ├── ts-utils/ # Utilities package
62
- │ ├── ts/
46
+ ├── package.json # Main monorepo package.json (version is inherited)
47
+ ├── tsconfig.json # Shared TypeScript config
48
+ ├── .smartconfig.json # Optional: base registry configuration
49
+ ├── ts_core/ # Core package
50
+ │ ├── index.ts # Entry point
51
+ │ ├── readme.md # Package-specific documentation
52
+ │ └── tspublish.json # Publishing configuration
53
+ ├── ts_utils/ # Utilities package
54
+ │ ├── index.ts
63
55
  │ ├── readme.md
64
56
  │ └── tspublish.json
65
- └── ts-cli/ # CLI package
66
- ├── ts/
57
+ └── ts_cli/ # CLI package
58
+ ├── index.ts
67
59
  ├── readme.md
68
60
  └── tspublish.json
69
61
  ```
70
62
 
71
63
  ### 2️⃣ Configure Each Package
72
64
 
73
- Create a `tspublish.json` in each package directory:
65
+ Create a `tspublish.json` in each publishable directory:
74
66
 
75
67
  ```json
76
68
  {
@@ -81,10 +73,9 @@ Create a `tspublish.json` in each package directory:
81
73
  "@push.rocks/smartfile"
82
74
  ],
83
75
  "registries": [
84
- "registry.npmjs.org:public",
85
- "npm.pkg.github.com:private"
76
+ "registry.npmjs.org:public"
86
77
  ],
87
- "bin": ["my-cli"]
78
+ "bin": []
88
79
  }
89
80
  ```
90
81
 
@@ -92,86 +83,45 @@ Create a `tspublish.json` in each package directory:
92
83
 
93
84
  | Field | Type | Description |
94
85
  |-------|------|-------------|
95
- | `name` | string | Package name (required) |
96
- | `order` | number | Build order for interdependent packages |
97
- | `dependencies` | string[] | Dependencies from the monorepo to include |
98
- | `registries` | string[] | Target registries with access level |
99
- | `bin` | string[] | CLI executable names |
100
-
101
- ### 3️⃣ Run the Publisher
86
+ | `name` | `string` | The published package name (e.g., `@myorg/core`) |
87
+ | `order` | `number` | Build order for interdependent packages (lower builds first) |
88
+ | `dependencies` | `string[]` | Dependencies to include — versions are resolved from the monorepo's `package.json` |
89
+ | `registries` | `string[]` | Target registries with access level (format: `"url:accessLevel"`) |
90
+ | `bin` | `string[]` | CLI executable names (generates a `cli.js` wrapper automatically) |
102
91
 
103
- #### Command Line
92
+ ### 3️⃣ Publish
104
93
 
105
94
  ```bash
106
95
  # From your monorepo root
107
96
  npx tspublish
108
97
  ```
109
98
 
110
- #### Programmatic Usage
111
-
112
- ```typescript
113
- import { TsPublish } from '@git.zone/tspublish';
114
-
115
- const publisher = new TsPublish();
116
- await publisher.publish(process.cwd());
117
- ```
99
+ That's it! tspublish will discover all `ts*` directories containing `tspublish.json`, build them in order, validate versions against the registry, and publish.
118
100
 
119
101
  ## 🎯 Advanced Usage
120
102
 
121
- ### Custom Publishing Pipeline
122
-
123
- ```typescript
124
- import { TsPublish, PublishModule } from '@git.zone/tspublish';
125
-
126
- // Initialize the publisher
127
- const publisher = new TsPublish();
128
-
129
- // Get all publishable modules
130
- const modules = await publisher.getModuleSubDirs('./my-monorepo');
131
-
132
- // Custom processing for each module
133
- for (const [name, config] of Object.entries(modules)) {
134
- const module = new PublishModule(publisher, {
135
- monoRepoDir: './my-monorepo',
136
- packageSubFolder: name
137
- });
138
-
139
- // Initialize module
140
- await module.init();
141
-
142
- // Create publish directory
143
- await module.createPublishModuleDir();
144
-
145
- // Custom build step
146
- console.log(`Building ${config.name}...`);
147
- await module.build();
148
-
149
- // Publish to registries
150
- await module.publish();
151
- }
152
- ```
153
-
154
103
  ### Registry Configuration
155
104
 
156
- TSPublish supports multiple registries with different access levels. You have three approaches:
105
+ TSPublish offers three approaches for configuring target registries:
157
106
 
158
- #### 1️⃣ Explicit Registries
107
+ #### 1. Explicit Registries
159
108
 
160
- Define specific registries directly in your `tspublish.json`:
109
+ Define specific registries directly in `tspublish.json`:
161
110
 
162
111
  ```json
163
112
  {
164
113
  "registries": [
165
- "registry.npmjs.org:public", // Public npm package
166
- "npm.pkg.github.com:private", // Private GitHub package
167
- "my-company.jfrog.io/npm:restricted" // Corporate registry
114
+ "registry.npmjs.org:public",
115
+ "npm.pkg.github.com:private"
168
116
  ]
169
117
  }
170
118
  ```
171
119
 
172
- #### 2️⃣ Use Base Configuration (`useBase`)
120
+ The format is `"registryUrl:accessLevel"` where `accessLevel` is `public` or `private`.
121
+
122
+ #### 2. Use Base Configuration (`useBase`)
173
123
 
174
- Inherit registries from your project's `npmextra.json` configuration (managed by `gitzone config`):
124
+ Inherit registries from your project's `.smartconfig.json` (managed by `@git.zone/cli`):
175
125
 
176
126
  ```json
177
127
  {
@@ -179,220 +129,181 @@ Inherit registries from your project's `npmextra.json` configuration (managed by
179
129
  }
180
130
  ```
181
131
 
182
- This reads from `npmextra.json` under `@git.zone/cli.release.registries`.
132
+ This reads from `.smartconfig.json` at the key `@git.zone/cli.release.registries`.
183
133
 
184
- #### 3️⃣ Extend Base Configuration (`extendBase`)
134
+ #### 3. Extend Base Configuration (`extendBase`)
185
135
 
186
- Start with base registries and add/remove specific ones:
136
+ Start with base registries and add or remove specific ones:
187
137
 
188
138
  ```json
189
139
  {
190
140
  "registries": [
191
141
  "extendBase",
192
142
  "custom-registry.example.com:public",
193
- "-https://registry.npmjs.org" // Exclude this registry
143
+ "-https://registry.npmjs.org"
194
144
  ]
195
145
  }
196
146
  ```
197
147
 
198
- The `-` prefix excludes a registry from the base configuration.
148
+ The `-` prefix excludes a registry from the base configuration. All other entries (besides `extendBase`) are added.
199
149
 
200
150
  #### Empty Registries
201
151
 
202
- If no registries are configured, the package will be built but **not published** (a warning is logged).
152
+ If `registries` is an empty array `[]`, the package will be built but **not published** — useful for internal-only packages that other packages depend on.
203
153
 
204
154
  ### Build Order Management
205
155
 
206
- When packages depend on each other, use the `order` field to ensure correct build sequence:
156
+ When packages depend on each other, use the `order` field to control build sequence:
207
157
 
208
- ```json
209
- // ts-core/tspublish.json
158
+ ```jsonc
159
+ // ts_core/tspublish.json — builds first
210
160
  {
211
161
  "name": "@myorg/core",
212
162
  "order": 1,
213
- "dependencies": []
163
+ "dependencies": [],
164
+ "registries": ["useBase"],
165
+ "bin": []
214
166
  }
215
167
 
216
- // ts-utils/tspublish.json
168
+ // ts_utils/tspublish.json — builds second, depends on core
217
169
  {
218
170
  "name": "@myorg/utils",
219
171
  "order": 2,
220
- "dependencies": ["@myorg/core"]
172
+ "dependencies": ["@myorg/core"],
173
+ "registries": ["useBase"],
174
+ "bin": []
221
175
  }
222
176
  ```
223
177
 
224
- ### CLI Binary Configuration
178
+ ### CLI Binary Packages
225
179
 
226
- For packages that include CLI tools:
180
+ For packages that ship CLI tools, specify the binary names in the `bin` array:
227
181
 
228
182
  ```json
229
183
  {
230
184
  "name": "@myorg/cli",
231
- "bin": ["my-cli", "my-tool"],
232
- "dependencies": ["commander", "chalk"]
185
+ "order": 3,
186
+ "dependencies": ["commander", "@myorg/core"],
187
+ "registries": ["registry.npmjs.org:public"],
188
+ "bin": ["my-cli", "my-tool"]
233
189
  }
234
190
  ```
235
191
 
236
- This automatically generates the necessary `cli.js` wrapper and configures the package.json `bin` field.
192
+ TSPublish will:
193
+ 1. Fetch the standard `cli.js` template from the `@git.zone/cli` assets repository
194
+ 2. Adjust the import path to point to the correct `dist_*` folder
195
+ 3. Configure the `bin` field in the generated `package.json`
237
196
 
238
- ## 🎨 Beautiful Output
197
+ ### Programmatic Usage
239
198
 
240
- TSPublish provides rich, colored console output with:
199
+ ```typescript
200
+ import { TsPublish } from '@git.zone/tspublish';
241
201
 
242
- - 📊 Progress bars for multi-package operations
243
- - 🎯 Clear status indicators (ℹ info, ✓ success, ⚠ warning, ✖ error)
244
- - 📦 Package-specific icons and formatting
245
- - 🚀 Visual separators between operation phases
202
+ const publisher = new TsPublish();
246
203
 
247
- ## 🔧 How It Works
204
+ // Publish all discovered modules in the current directory
205
+ await publisher.publish(process.cwd());
248
206
 
249
- 1. **Discovery Phase** 🔍
250
- - Scans for directories starting with `ts`
251
- - Validates `tspublish.json` presence
252
- - Orders packages by dependency
253
-
254
- 2. **Preparation Phase** 📋
255
- - Creates temporary `dist_publish_*` directories
256
- - Generates package.json from tspublish.json
257
- - Copies source files and assets
258
- - Sets up TypeScript configuration
259
-
260
- 3. **Build Phase** 🔨
261
- - Runs TypeScript compilation
262
- - Generates declaration files
263
- - Prepares distribution bundle
264
-
265
- 4. **Validation Phase** ✅
266
- - Checks npm registry for existing versions
267
- - Prevents accidental overwrites
268
- - Validates package metadata
269
-
270
- 5. **Publishing Phase** 🚀
271
- - Publishes to configured registries
272
- - Handles authentication
273
- - Reports success/failure
274
-
275
- ## 🤝 Integration with CI/CD
276
-
277
- ### GitHub Actions
278
-
279
- ```yaml
280
- name: Publish Packages
281
-
282
- on:
283
- push:
284
- tags:
285
- - 'v*'
286
-
287
- jobs:
288
- publish:
289
- runs-on: ubuntu-latest
290
- steps:
291
- - uses: actions/checkout@v3
292
-
293
- - uses: pnpm/action-setup@v2
294
- with:
295
- version: 8
296
-
297
- - uses: actions/setup-node@v3
298
- with:
299
- node-version: '20'
300
- cache: 'pnpm'
301
-
302
- - run: pnpm install
303
-
304
- - run: pnpm build
305
-
306
- - run: npx tspublish
307
- env:
308
- NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
207
+ // Or just discover modules without publishing
208
+ const modules = await publisher.getModuleSubDirs('./my-monorepo');
209
+ console.log(modules);
210
+ // => { ts_core: { name: '@myorg/core', order: 1, ... }, ts_utils: { ... } }
309
211
  ```
310
212
 
311
- ### GitLab CI
312
-
313
- ```yaml
314
- publish:
315
- stage: deploy
316
- image: node:20
317
- before_script:
318
- - npm install -g pnpm
319
- - pnpm install
320
- script:
321
- - pnpm build
322
- - npx tspublish
323
- only:
324
- - tags
213
+ ## 🔧 How It Works
214
+
215
+ ```
216
+ ┌──────────────────────────────────────────────────────────┐
217
+ │ tspublish pipeline │
218
+ ├──────────────────────────────────────────────────────────┤
219
+ │ │
220
+ │ 1. 🔍 Discovery │
221
+ │ Scan for ts* directories containing tspublish.json │
222
+ │ │
223
+ │ 2. 📋 Preparation │
224
+ │ Create dist_publish_* with generated package.json, │
225
+ │ tsconfig.json, source files, readme, and license │
226
+ │ │
227
+ │ 3. 🔨 Build │
228
+ │ Run `tsbuild tsfolders` in the publish directory │
229
+ │ │
230
+ │ 4. ✅ Validation │
231
+ │ Check npm registry — abort if version already exists │
232
+ │ │
233
+ │ 5. 🚀 Publish │
234
+ │ pnpm publish to each configured registry │
235
+ │ │
236
+ └──────────────────────────────────────────────────────────┘
325
237
  ```
326
238
 
239
+ For each discovered module, tspublish:
240
+
241
+ 1. **Discovers** all directories starting with `ts` that contain a `tspublish.json`
242
+ 2. **Resolves dependencies** from the monorepo's `package.json`, using the monorepo version for packages not found in `dependencies`
243
+ 3. **Creates an isolated publish directory** (`dist_publish_<folder>`) with a generated `package.json`, `tsconfig.json`, source code copy, readme, and license
244
+ 4. **Builds** the package using `pnpm run build` (which calls `tsbuild tsfolders`)
245
+ 5. **Validates** against the target registry — if the name+version already exists, it exits with an error
246
+ 6. **Publishes** to each configured registry via `pnpm publish`
247
+
327
248
  ## 📚 API Reference
328
249
 
329
- ### TsPublish Class
250
+ ### TsPublish
251
+
252
+ The main class that orchestrates the entire publishing pipeline.
330
253
 
331
254
  ```typescript
332
255
  class TsPublish {
333
- // Publish all packages in a monorepo
334
- async publish(monorepoDirPath: string): Promise<void>
335
-
336
- // Get all publishable module configurations
337
- async getModuleSubDirs(dirPath: string): Promise<{[key: string]: ITsPublishJson}>
338
- }
339
- ```
256
+ /** Publish all discovered modules in a monorepo directory */
257
+ async publish(monorepoDirPath: string): Promise<void>;
340
258
 
341
- ### PublishModule Class
342
-
343
- ```typescript
344
- class PublishModule {
345
- // Initialize the module for publishing
346
- async init(): Promise<void>
347
-
348
- // Create the publishing directory structure
349
- async createPublishModuleDir(): Promise<void>
350
-
351
- // Build the TypeScript package
352
- async build(): Promise<void>
353
-
354
- // Publish to configured registries
355
- async publish(): Promise<void>
259
+ /** Discover and return all publishable modules with their tspublish.json configs */
260
+ async getModuleSubDirs(dirPath: string): Promise<Record<string, ITsPublishJson>>;
356
261
  }
357
262
  ```
358
263
 
359
- ### ITsPublishJson Interface
264
+ ### ITsPublishJson
265
+
266
+ The configuration interface for each `tspublish.json` file:
360
267
 
361
268
  ```typescript
362
269
  interface ITsPublishJson {
363
- name: string // Package name
364
- order: number // Build order
365
- dependencies: string[] // Dependencies to include
366
- registries: string[] // Target registries
367
- bin: string[] // CLI binaries
270
+ name: string; // Published package name
271
+ order: number; // Build sequence (lower = earlier)
272
+ dependencies: string[]; // Dependencies to include from monorepo
273
+ registries: string[]; // Target registries ("url:accessLevel", "useBase", or "extendBase")
274
+ bin: string[]; // CLI binary names
368
275
  }
369
276
  ```
370
277
 
371
- ## 🐛 Troubleshooting
278
+ ### GiteaAssets
279
+
280
+ Utility class for fetching files from Gitea repositories (used internally for CLI template retrieval):
372
281
 
373
- ### Common Issues
282
+ ```typescript
283
+ class GiteaAssets {
284
+ constructor(options: { giteaBaseUrl: string; token?: string });
374
285
 
375
- **Package already exists with version X.X.X**
376
- - TSPublish detected a version collision
377
- - Update your monorepo's package.json version
378
- - Or unpublish the existing version if appropriate
286
+ /** Fetch files from a Gitea repository directory */
287
+ async getFiles(owner: string, repo: string, directory: string, branch?: string): Promise<IRepoFile[]>;
379
288
 
380
- **No publish modules found**
381
- - Ensure your packages follow the `ts-*` naming convention
382
- - Check that each package has a valid `tspublish.json`
289
+ /** Get the standard cli.js entry file template */
290
+ async getBinCliEntryFile(): Promise<IRepoFile>;
291
+ }
292
+ ```
383
293
 
384
- **Build failures**
385
- - Verify TypeScript configuration
386
- - Check that all dependencies are installed
387
- - Review the build output for specific errors
294
+ ## 🐛 Troubleshooting
388
295
 
389
- **useBase/extendBase error**
390
- - Ensure your `npmextra.json` has registries configured at `@git.zone/cli.release.registries`
391
- - Use `gitzone config add <registry-url>` to configure base registries
296
+ | Problem | Solution |
297
+ |---------|----------|
298
+ | **"Package X already exists with version Y"** | Bump the version in your monorepo's `package.json` |
299
+ | **No publish modules found** | Ensure directories start with `ts` and contain a valid `tspublish.json` |
300
+ | **Build failures** | Check TypeScript errors — tspublish runs `tsbuild tsfolders` in the generated directory |
301
+ | **useBase/extendBase error** | Ensure `.smartconfig.json` has registries at `@git.zone/cli.release.registries` |
302
+ | **Missing dependency versions** | Add the dependency to your monorepo's `package.json` `dependencies` field |
392
303
 
393
304
  ## License and Legal Information
394
305
 
395
- This repository contains open-source code licensed under the MIT License. A copy of the license can be found in the [LICENSE](./LICENSE) file.
306
+ This repository contains open-source code licensed under the MIT License. A copy of the license can be found in the [license](./license) file.
396
307
 
397
308
  **Please note:** The MIT License does not grant permission to use the trade names, trademarks, service marks, or product names of the project, except as required for reasonable and customary use in describing the origin of the work and reproducing the content of the NOTICE file.
398
309
 
@@ -409,4 +320,4 @@ Registered at District Court Bremen HRB 35230 HB, Germany
409
320
 
410
321
  For any legal inquiries or further information, please contact us via email at hello@task.vc.
411
322
 
412
- By using this repository, you acknowledge that you have read this section, agree to comply with its terms, and understand that the licensing of the code does not imply endorsement by Task Venture Capital GmbH of any derivative works.
323
+ By using this repository, you acknowledge that you have read this section, agree to comply with its terms, and understand that the licensing of the code does not imply endorsement by Task Venture Capital GmbH of any derivative works.
@@ -3,6 +3,6 @@
3
3
  */
4
4
  export const commitinfo = {
5
5
  name: '@git.zone/tspublish',
6
- version: '1.11.3',
6
+ version: '1.11.5',
7
7
  description: 'A tool to publish multiple, concise, and small packages from monorepos, specifically for TypeScript projects within a git environment.'
8
8
  }
@@ -52,7 +52,7 @@ export class PublishModule {
52
52
  ...this.options.dependencies,
53
53
  ...(() => {
54
54
  const resultDependencies = {};
55
- for (const dependency of this.options.tsPublishJson.dependencies) {
55
+ for (const dependency of this.options.tsPublishJson!.dependencies) {
56
56
  if (monoRepoPackageJson.dependencies[dependency]) {
57
57
  resultDependencies[dependency] = monoRepoPackageJson.dependencies[dependency];
58
58
  } else {
@@ -62,14 +62,14 @@ export class PublishModule {
62
62
  return resultDependencies;
63
63
  })(),
64
64
  };
65
- this.options.name = this.options.name || this.options.tsPublishJson.name;
65
+ this.options.name = this.options.name || this.options.tsPublishJson!.name;
66
66
  this.options.version = monoRepoPackageJson.version;
67
67
 
68
68
  // now that we have a name and version, lets check if there is already a package under the same name and version.
69
69
  const smartnpmInstance = new plugins.smartnpm.NpmRegistry({}); // TODO: pass in options
70
- let packageInfo: plugins.smartnpm.NpmPackage;
70
+ let packageInfo: plugins.smartnpm.NpmPackage | undefined;
71
71
  try {
72
- packageInfo = await smartnpmInstance.getPackageInfo(this.options.name);
72
+ packageInfo = await smartnpmInstance.getPackageInfo(this.options.name!);
73
73
  } catch (error) {
74
74
  logWarn(`Package ${this.options.name} does not yet seem to exist. Proceeding in 10 seconds...`);
75
75
  await plugins.smartdelay.delayFor(10000);
@@ -77,7 +77,7 @@ export class PublishModule {
77
77
  if (packageInfo) {
78
78
  const availableVersions = packageInfo.allVersions.map((versionArg) => versionArg.version);
79
79
  logInfo(`Available versions for ${this.options.name}: ${availableVersions.join(', ')}`);
80
- if (availableVersions.includes(this.options.version)) {
80
+ if (availableVersions.includes(this.options.version!)) {
81
81
  logError(
82
82
  `Package ${this.options.name} already exists with version ${this.options.version}`
83
83
  );
@@ -152,13 +152,13 @@ export class PublishModule {
152
152
  'dist_ts_web/**/*',
153
153
  'assets/**/*',
154
154
  'cli.js',
155
- 'smartconfig.json',
155
+ '.smartconfig.json',
156
156
  'readme.md',
157
157
  ],
158
- ...this.options.tsPublishJson.bin ? {
158
+ ...this.options.tsPublishJson?.bin ? {
159
159
  bin: (() => {
160
160
  const binObject: {[key: string]: string} = {};
161
- for (const bin of this.options.tsPublishJson.bin) {
161
+ for (const bin of this.options.tsPublishJson!.bin) {
162
162
  binObject[bin] = `./cli.js`;
163
163
  }
164
164
  return binObject;
@@ -192,10 +192,10 @@ export class PublishModule {
192
192
 
193
193
  // ts subfolder, the folder that contains the source code and is being transpiled
194
194
  const destSubFolder = plugins.path.join(this.options.publishModDirFullPath, this.options.packageSubFolder);
195
- await plugins.smartfs.directory(this.options.packageSubFolderFullPath).recursive().copy(destSubFolder);
195
+ await plugins.smartfs.directory(this.options.packageSubFolderFullPath!).recursive().copy(destSubFolder);
196
196
 
197
197
  // readme
198
- const readmeSrc = plugins.path.join(this.options.packageSubFolderFullPath, 'readme.md');
198
+ const readmeSrc = plugins.path.join(this.options.packageSubFolderFullPath!, 'readme.md');
199
199
  const readmeDest = plugins.path.join(this.options.publishModDirFullPath, 'readme.md');
200
200
  await plugins.smartfs.file(readmeSrc).copy(readmeDest);
201
201
 
@@ -219,17 +219,17 @@ export class PublishModule {
219
219
 
220
220
  public async createBinCliSetup() {
221
221
  const binSetupApplies: boolean =
222
- this.options.tsPublishJson.bin &&
223
- Array.isArray(this.options.tsPublishJson.bin) &&
224
- this.options.tsPublishJson.bin.length > 0;
222
+ !!this.options.tsPublishJson?.bin &&
223
+ Array.isArray(this.options.tsPublishJson!.bin) &&
224
+ this.options.tsPublishJson!.bin.length > 0;
225
225
  const files = await this.tsPublishRef.giteaAssetsInstance.getFiles(
226
226
  'git.zone',
227
227
  'cli',
228
228
  'assets/templates/cli/cli.js'
229
229
  );
230
230
  const indexPath = `./dist_${this.options.packageSubFolder}/index.js`;
231
- const fileContent = atob(files[0].base64Content).replace('./dist_ts/index.js', indexPath);
232
- const cliJsPath = plugins.path.join(this.options.publishModDirFullPath, 'cli.js');
231
+ const fileContent = atob(files[0].base64Content!).replace('./dist_ts/index.js', indexPath);
232
+ const cliJsPath = plugins.path.join(this.options.publishModDirFullPath!, 'cli.js');
233
233
  await plugins.smartfs.file(cliJsPath).encoding('utf8').write(fileContent);
234
234
  }
235
235
 
File without changes