@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.
- package/dist_ts/00_commitinfo_data.js +1 -1
- package/dist_ts/classes.publishmodule.js +4 -4
- package/license +21 -0
- package/package.json +11 -11
- package/readme.hints.md +20 -1
- package/readme.md +149 -238
- package/ts/00_commitinfo_data.ts +1 -1
- package/ts/classes.publishmodule.ts +15 -15
- /package/{npmextra.json → .smartconfig.json} +0 -0
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
*/
|
|
4
4
|
export const commitinfo = {
|
|
5
5
|
name: '@git.zone/tspublish',
|
|
6
|
-
version: '1.11.
|
|
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
|
|
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
|
|
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
|
+
"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
|
|
21
|
-
"@git.zone/tsbundle": "^2.
|
|
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
|
|
24
|
-
"@types/node": "^25.0
|
|
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
|
-
"
|
|
46
|
+
".smartconfig.json",
|
|
47
47
|
"readme.md"
|
|
48
48
|
],
|
|
49
49
|
"dependencies": {
|
|
50
50
|
"@push.rocks/consolecolor": "^2.0.3",
|
|
51
|
-
"@push.rocks/
|
|
52
|
-
"@push.rocks/
|
|
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.
|
|
56
|
-
"@push.rocks/smartlog": "^3.1
|
|
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.
|
|
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
|
-
|
|
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
|
|
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**
|
|
19
|
-
- 🎨 **Beautiful CLI Output**
|
|
20
|
-
- 🔍 **Version Collision Detection**
|
|
21
|
-
- 🏗️ **Build Integration**
|
|
22
|
-
- 🎯 **Smart Dependency Management**
|
|
23
|
-
- 🌐 **Multi-Registry Support**
|
|
24
|
-
-
|
|
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
|
-
#
|
|
35
|
-
|
|
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
|
|
42
|
+
Organize your packages using directories that start with `ts`:
|
|
52
43
|
|
|
53
44
|
```
|
|
54
45
|
my-awesome-monorepo/
|
|
55
|
-
├── package.json
|
|
56
|
-
├── tsconfig.json
|
|
57
|
-
├──
|
|
58
|
-
|
|
59
|
-
│ ├──
|
|
60
|
-
│
|
|
61
|
-
|
|
62
|
-
|
|
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
|
-
└──
|
|
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
|
|
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": [
|
|
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 |
|
|
96
|
-
| `order` | number | Build order for interdependent packages |
|
|
97
|
-
| `dependencies` | string[] | Dependencies from the monorepo
|
|
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
|
-
|
|
92
|
+
### 3️⃣ Publish
|
|
104
93
|
|
|
105
94
|
```bash
|
|
106
95
|
# From your monorepo root
|
|
107
96
|
npx tspublish
|
|
108
97
|
```
|
|
109
98
|
|
|
110
|
-
|
|
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
|
|
105
|
+
TSPublish offers three approaches for configuring target registries:
|
|
157
106
|
|
|
158
|
-
#### 1
|
|
107
|
+
#### 1. Explicit Registries
|
|
159
108
|
|
|
160
|
-
Define specific registries directly in
|
|
109
|
+
Define specific registries directly in `tspublish.json`:
|
|
161
110
|
|
|
162
111
|
```json
|
|
163
112
|
{
|
|
164
113
|
"registries": [
|
|
165
|
-
"registry.npmjs.org:public",
|
|
166
|
-
"npm.pkg.github.com:private"
|
|
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
|
-
|
|
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
|
|
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
|
|
132
|
+
This reads from `.smartconfig.json` at the key `@git.zone/cli.release.registries`.
|
|
183
133
|
|
|
184
|
-
#### 3
|
|
134
|
+
#### 3. Extend Base Configuration (`extendBase`)
|
|
185
135
|
|
|
186
|
-
Start with base registries and add
|
|
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"
|
|
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
|
|
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
|
|
156
|
+
When packages depend on each other, use the `order` field to control build sequence:
|
|
207
157
|
|
|
208
|
-
```
|
|
209
|
-
//
|
|
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
|
-
//
|
|
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
|
|
178
|
+
### CLI Binary Packages
|
|
225
179
|
|
|
226
|
-
For packages that
|
|
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
|
-
"
|
|
232
|
-
"dependencies": ["commander", "
|
|
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
|
-
|
|
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
|
-
|
|
197
|
+
### Programmatic Usage
|
|
239
198
|
|
|
240
|
-
|
|
199
|
+
```typescript
|
|
200
|
+
import { TsPublish } from '@git.zone/tspublish';
|
|
241
201
|
|
|
242
|
-
|
|
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
|
-
|
|
204
|
+
// Publish all discovered modules in the current directory
|
|
205
|
+
await publisher.publish(process.cwd());
|
|
248
206
|
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
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
|
-
|
|
312
|
-
|
|
313
|
-
```
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
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
|
|
250
|
+
### TsPublish
|
|
251
|
+
|
|
252
|
+
The main class that orchestrates the entire publishing pipeline.
|
|
330
253
|
|
|
331
254
|
```typescript
|
|
332
255
|
class TsPublish {
|
|
333
|
-
|
|
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
|
-
|
|
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
|
|
264
|
+
### ITsPublishJson
|
|
265
|
+
|
|
266
|
+
The configuration interface for each `tspublish.json` file:
|
|
360
267
|
|
|
361
268
|
```typescript
|
|
362
269
|
interface ITsPublishJson {
|
|
363
|
-
name: string //
|
|
364
|
-
order: number // Build
|
|
365
|
-
dependencies: string[] // Dependencies to include
|
|
366
|
-
registries: string[] // Target registries
|
|
367
|
-
bin: string[]
|
|
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
|
-
|
|
278
|
+
### GiteaAssets
|
|
279
|
+
|
|
280
|
+
Utility class for fetching files from Gitea repositories (used internally for CLI template retrieval):
|
|
372
281
|
|
|
373
|
-
|
|
282
|
+
```typescript
|
|
283
|
+
class GiteaAssets {
|
|
284
|
+
constructor(options: { giteaBaseUrl: string; token?: string });
|
|
374
285
|
|
|
375
|
-
|
|
376
|
-
|
|
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
|
-
|
|
381
|
-
|
|
382
|
-
|
|
289
|
+
/** Get the standard cli.js entry file template */
|
|
290
|
+
async getBinCliEntryFile(): Promise<IRepoFile>;
|
|
291
|
+
}
|
|
292
|
+
```
|
|
383
293
|
|
|
384
|
-
|
|
385
|
-
- Verify TypeScript configuration
|
|
386
|
-
- Check that all dependencies are installed
|
|
387
|
-
- Review the build output for specific errors
|
|
294
|
+
## 🐛 Troubleshooting
|
|
388
295
|
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
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 [
|
|
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.
|
package/ts/00_commitinfo_data.ts
CHANGED
|
@@ -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
|
|
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
|
|
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
|
|
158
|
+
...this.options.tsPublishJson?.bin ? {
|
|
159
159
|
bin: (() => {
|
|
160
160
|
const binObject: {[key: string]: string} = {};
|
|
161
|
-
for (const bin of this.options.tsPublishJson
|
|
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
|
|
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
|
|
223
|
-
Array.isArray(this.options.tsPublishJson
|
|
224
|
-
this.options.tsPublishJson
|
|
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
|
|
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
|