@git.zone/tspublish 1.11.3 → 1.11.4

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.4',
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.4",
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.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 |
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) |
100
91
 
101
- ### 3️⃣ Run the Publisher
102
-
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`.
173
121
 
174
- Inherit registries from your project's `npmextra.json` configuration (managed by `gitzone config`):
122
+ #### 2. Use Base Configuration (`useBase`)
123
+
124
+ Inherit registries from your project's `.smartconfig.json` (managed by `@git.zone/cli`):
175
125
 
176
126
  ```json
177
127
  {
@@ -179,220 +129,207 @@ 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
158
  ```json
209
- // ts-core/tspublish.json
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`
196
+
197
+ ### Programmatic Usage
237
198
 
238
- ## 🎨 Beautiful Output
199
+ ```typescript
200
+ import { TsPublish } from '@git.zone/tspublish';
239
201
 
240
- TSPublish provides rich, colored console output with:
202
+ const publisher = new TsPublish();
203
+ await publisher.publish(process.cwd());
204
+ ```
241
205
 
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
206
+ #### Custom Publishing Pipeline
246
207
 
247
- ## 🔧 How It Works
208
+ ```typescript
209
+ import { TsPublish, PublishModule } from '@git.zone/tspublish';
210
+
211
+ const publisher = new TsPublish();
212
+ const modules = await publisher.getModuleSubDirs('./my-monorepo');
213
+
214
+ for (const [name, config] of Object.entries(modules)) {
215
+ const mod = new PublishModule(publisher, {
216
+ monoRepoDir: './my-monorepo',
217
+ packageSubFolder: name,
218
+ });
248
219
 
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 }}
220
+ await mod.init(); // Resolve deps, validate version
221
+ await mod.createPublishModuleDir(); // Scaffold dist_publish_* directory
222
+ await mod.build(); // Compile TypeScript
223
+ await mod.publish(); // Publish to registries
224
+ }
309
225
  ```
310
226
 
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
227
+ ## 🔧 How It Works
228
+
325
229
  ```
230
+ ┌──────────────────────────────────────────────────────────┐
231
+ │ tspublish pipeline │
232
+ ├──────────────────────────────────────────────────────────┤
233
+ │ │
234
+ │ 1. 🔍 Discovery │
235
+ │ Scan for ts* directories containing tspublish.json │
236
+ │ │
237
+ │ 2. 📋 Preparation │
238
+ │ Create dist_publish_* with generated package.json, │
239
+ │ tsconfig.json, source files, readme, and license │
240
+ │ │
241
+ │ 3. 🔨 Build │
242
+ │ Run `tsbuild tsfolders` in the publish directory │
243
+ │ │
244
+ │ 4. ✅ Validation │
245
+ │ Check npm registry — abort if version already exists │
246
+ │ │
247
+ │ 5. 🚀 Publish │
248
+ │ pnpm publish to each configured registry │
249
+ │ │
250
+ └──────────────────────────────────────────────────────────┘
251
+ ```
252
+
253
+ For each discovered module, tspublish:
254
+
255
+ 1. **Discovers** all directories starting with `ts` that contain a `tspublish.json`
256
+ 2. **Resolves dependencies** from the monorepo's `package.json`, using the monorepo version for packages not found in `dependencies`
257
+ 3. **Creates an isolated publish directory** (`dist_publish_<folder>`) with a generated `package.json`, `tsconfig.json`, source code copy, readme, and license
258
+ 4. **Builds** the package using `pnpm run build` (which calls `tsbuild tsfolders`)
259
+ 5. **Validates** against the target registry — if the name+version already exists, it exits with an error
260
+ 6. **Publishes** to each configured registry via `pnpm publish`
326
261
 
327
262
  ## 📚 API Reference
328
263
 
329
- ### TsPublish Class
264
+ ### TsPublish
330
265
 
331
266
  ```typescript
332
267
  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}>
268
+ /** Publish all discovered modules in a monorepo directory */
269
+ async publish(monorepoDirPath: string): Promise<void>;
270
+
271
+ /** Discover and return all publishable modules with their tspublish.json configs */
272
+ async getModuleSubDirs(dirPath: string): Promise<Record<string, ITsPublishJson>>;
338
273
  }
339
274
  ```
340
275
 
341
- ### PublishModule Class
276
+ ### PublishModule
342
277
 
343
278
  ```typescript
344
279
  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>
280
+ /** Initialize: resolve dependencies, validate version against registry */
281
+ async init(): Promise<void>;
282
+
283
+ /** Create the dist_publish_* directory with all necessary files */
284
+ async createPublishModuleDir(): Promise<void>;
285
+
286
+ /** Build the TypeScript package */
287
+ async build(): Promise<void>;
288
+
289
+ /** Publish to all configured registries */
290
+ async publish(): Promise<void>;
356
291
  }
357
292
  ```
358
293
 
359
- ### ITsPublishJson Interface
294
+ ### ITsPublishJson
360
295
 
361
296
  ```typescript
362
297
  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
298
+ name: string; // Published package name
299
+ order: number; // Build sequence (lower = earlier)
300
+ dependencies: string[]; // Dependencies to include from monorepo
301
+ registries: string[]; // Target registries ("url:accessLevel", "useBase", or "extendBase")
302
+ bin: string[]; // CLI binary names
368
303
  }
369
304
  ```
370
305
 
371
- ## 🐛 Troubleshooting
306
+ ### GiteaAssets
372
307
 
373
- ### Common Issues
308
+ ```typescript
309
+ class GiteaAssets {
310
+ constructor(options: { giteaBaseUrl: string; token?: string });
374
311
 
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
312
+ /** Fetch files from a Gitea repository directory */
313
+ async getFiles(owner: string, repo: string, directory: string, branch?: string): Promise<IRepoFile[]>;
379
314
 
380
- **No publish modules found**
381
- - Ensure your packages follow the `ts-*` naming convention
382
- - Check that each package has a valid `tspublish.json`
315
+ /** Get the standard cli.js entry file template */
316
+ async getBinCliEntryFile(): Promise<IRepoFile>;
317
+ }
318
+ ```
383
319
 
384
- **Build failures**
385
- - Verify TypeScript configuration
386
- - Check that all dependencies are installed
387
- - Review the build output for specific errors
320
+ ## 🐛 Troubleshooting
388
321
 
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
322
+ | Problem | Solution |
323
+ |---------|----------|
324
+ | **"Package X already exists with version Y"** | Bump the version in your monorepo's `package.json` |
325
+ | **No publish modules found** | Ensure directories start with `ts` and contain a valid `tspublish.json` |
326
+ | **Build failures** | Check TypeScript errors — tspublish runs `tsbuild tsfolders` in the generated directory |
327
+ | **useBase/extendBase error** | Ensure `.smartconfig.json` has registries at `@git.zone/cli.release.registries` |
328
+ | **Missing dependency versions** | Add the dependency to your monorepo's `package.json` `dependencies` field |
392
329
 
393
330
  ## License and Legal Information
394
331
 
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.
332
+ 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
333
 
397
334
  **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
335
 
@@ -409,4 +346,4 @@ Registered at District Court Bremen HRB 35230 HB, Germany
409
346
 
410
347
  For any legal inquiries or further information, please contact us via email at hello@task.vc.
411
348
 
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.
349
+ 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.4',
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