reelout 0.0.0 → 0.2.0
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/LICENSE +21 -0
- package/README.md +89 -0
- package/dist/cli.js +85 -0
- package/dist/cli.js.map +1 -0
- package/dist/index.js +5 -0
- package/package.json +96 -3
- package/src/cli.ts +22 -0
- package/src/index.ts +7 -0
- package/index.js +0 -1
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Fai
|
|
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/README.md
ADDED
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
# ReelOut
|
|
2
|
+
|
|
3
|
+
[](https://www.npmjs.com/package/reelout)
|
|
4
|
+
[](https://app.codecov.io/github/aicest/reelout)
|
|
5
|
+
|
|
6
|
+
ReelOut is a plugin-driven release automation tool engineered specifically for monorepos. By analyzing [Conventional Commits](https://conventionalcommits.org), it autonomously calculates version bumps, updates package manifests, generates changelogs, creates tags, and publishes packages to your registry.
|
|
7
|
+
|
|
8
|
+
## Features
|
|
9
|
+
|
|
10
|
+
| Feature | Semantic Release | Changesets | Release Please | ReelOut |
|
|
11
|
+
| :-------------------------------- | :----------------: | :--------: | :------------: | :----------------: |
|
|
12
|
+
| Monorepo support | ❌ | ✅ | ✅ | ✅ |
|
|
13
|
+
| No extra log files required | ✅ | ❌ | ✅ | ✅ |
|
|
14
|
+
| No release pull requests required | ✅ | ✅ | ❌ | ✅ |
|
|
15
|
+
| Prerelease mode | ✅ | ✅ | ✅ | ✅ |
|
|
16
|
+
| Multi-ecosystem compatibility | ✅ (plugin-driven) | ❌ | ✅ (built-in) | ✅ (plugin-driven) |
|
|
17
|
+
|
|
18
|
+
## Installation
|
|
19
|
+
|
|
20
|
+
Install with your preferred package manager:
|
|
21
|
+
|
|
22
|
+
```sh
|
|
23
|
+
npm install -D reelout
|
|
24
|
+
# or
|
|
25
|
+
pnpm add -D reelout
|
|
26
|
+
# or
|
|
27
|
+
yarn add -D reelout
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
## Usage
|
|
31
|
+
|
|
32
|
+
### View available options
|
|
33
|
+
|
|
34
|
+
```sh
|
|
35
|
+
npx reelout --help
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
```text
|
|
39
|
+
Usage: reelout [options]
|
|
40
|
+
|
|
41
|
+
Monorepo release CLI and toolkit.
|
|
42
|
+
|
|
43
|
+
Options:
|
|
44
|
+
--cwd <string> Working directory in which to run the release process.
|
|
45
|
+
--dry-run Preview the planned release without updating files, creating commits, or publishing packages.
|
|
46
|
+
--prerelease [boolean or string] Enable prerelease mode and optionally provide a label (for example, "alpha" or "beta").
|
|
47
|
+
--promote [boolean] Promote development versions to stable production releases.
|
|
48
|
+
--channel [boolean or string] Publish packages to the specified release channel.
|
|
49
|
+
--version Display the version number.
|
|
50
|
+
--help Display help for this command.
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
### Preview a release
|
|
54
|
+
|
|
55
|
+
Preview version bumps without modifying files, staging tags, or publishing:
|
|
56
|
+
|
|
57
|
+
```sh
|
|
58
|
+
npx reelout --dry-run
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
### Execute a release
|
|
62
|
+
|
|
63
|
+
Run a production release to parse commits, bump versions, update manifests, generate changelogs, tag, and publish:
|
|
64
|
+
|
|
65
|
+
```sh
|
|
66
|
+
npx reelout
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
### Prereleases and promotions
|
|
70
|
+
|
|
71
|
+
Ship pre-production builds with a custom prerelease identifier:
|
|
72
|
+
|
|
73
|
+
```sh
|
|
74
|
+
npx reelout --prerelease beta
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
Once a prerelease version is validated, upgrade it to a stable production release without requiring new commits:
|
|
78
|
+
|
|
79
|
+
```sh
|
|
80
|
+
npx reelout --promote
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
## Documentation
|
|
84
|
+
|
|
85
|
+
View the full documentation at https://reelout.overview.vercel.app/.
|
|
86
|
+
|
|
87
|
+
## License
|
|
88
|
+
|
|
89
|
+
This project is licensed under the [MIT License](./LICENSE).
|
package/dist/cli.js
ADDED
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { createProcessAbortSignal, createProgram } from "@reelout/cli";
|
|
3
|
+
//#region package.json
|
|
4
|
+
var version = "0.1.0";
|
|
5
|
+
var description = "Monorepo release CLI and toolkit.";
|
|
6
|
+
//#endregion
|
|
7
|
+
//#region \0@oxc-project+runtime@0.152.0/helpers/esm/usingCtx.js
|
|
8
|
+
function _usingCtx$1() {
|
|
9
|
+
var r = "function" == typeof SuppressedError ? SuppressedError : function(r, e) {
|
|
10
|
+
var n = Error();
|
|
11
|
+
return n.name = "SuppressedError", n.error = r, n.suppressed = e, n;
|
|
12
|
+
}, e = {}, n = [];
|
|
13
|
+
function using(r, e) {
|
|
14
|
+
if (null != e) {
|
|
15
|
+
if (Object(e) !== e) throw new TypeError("using declarations can only be used with objects, functions, null, or undefined.");
|
|
16
|
+
if (r) var o = e[Symbol.asyncDispose || Symbol["for"]("Symbol.asyncDispose")];
|
|
17
|
+
if (void 0 === o && (o = e[Symbol.dispose || Symbol["for"]("Symbol.dispose")], r)) var t = o;
|
|
18
|
+
if ("function" != typeof o) throw new TypeError("Object is not disposable.");
|
|
19
|
+
t && (o = function o() {
|
|
20
|
+
try {
|
|
21
|
+
t.call(e);
|
|
22
|
+
} catch (r) {
|
|
23
|
+
return Promise.reject(r);
|
|
24
|
+
}
|
|
25
|
+
}), n.push({
|
|
26
|
+
v: e,
|
|
27
|
+
d: o,
|
|
28
|
+
a: r
|
|
29
|
+
});
|
|
30
|
+
} else r && n.push({
|
|
31
|
+
d: e,
|
|
32
|
+
a: r
|
|
33
|
+
});
|
|
34
|
+
return e;
|
|
35
|
+
}
|
|
36
|
+
return {
|
|
37
|
+
e,
|
|
38
|
+
u: using.bind(null, !1),
|
|
39
|
+
a: using.bind(null, !0),
|
|
40
|
+
d: function d() {
|
|
41
|
+
var o, t = this.e, s = 0;
|
|
42
|
+
function next() {
|
|
43
|
+
for (; o = n.pop();) try {
|
|
44
|
+
if (!o.a && 1 === s) return s = 0, n.push(o), Promise.resolve().then(next);
|
|
45
|
+
if (o.d) {
|
|
46
|
+
var r = o.d.call(o.v);
|
|
47
|
+
if (o.a) return s |= 2, Promise.resolve(r).then(next, err);
|
|
48
|
+
} else s |= 1;
|
|
49
|
+
} catch (r) {
|
|
50
|
+
return err(r);
|
|
51
|
+
}
|
|
52
|
+
if (1 === s) return t !== e ? Promise.reject(t) : Promise.resolve();
|
|
53
|
+
if (t !== e) throw t;
|
|
54
|
+
}
|
|
55
|
+
function err(n) {
|
|
56
|
+
return t = t !== e ? new r(n, t) : n, next();
|
|
57
|
+
}
|
|
58
|
+
return next();
|
|
59
|
+
}
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
//#endregion
|
|
63
|
+
//#region src/cli.ts
|
|
64
|
+
try {
|
|
65
|
+
var _usingCtx = _usingCtx$1();
|
|
66
|
+
var signal = _usingCtx.u(createProcessAbortSignal());
|
|
67
|
+
await (await createProgram({
|
|
68
|
+
name: "reelout",
|
|
69
|
+
version,
|
|
70
|
+
description,
|
|
71
|
+
cwd: process.cwd(),
|
|
72
|
+
env: process.env,
|
|
73
|
+
stdout: process.stdout,
|
|
74
|
+
stderr: process.stderr,
|
|
75
|
+
signal
|
|
76
|
+
})).parseAsync(process.argv);
|
|
77
|
+
} catch (_) {
|
|
78
|
+
_usingCtx.e = _;
|
|
79
|
+
} finally {
|
|
80
|
+
_usingCtx.d();
|
|
81
|
+
}
|
|
82
|
+
//#endregion
|
|
83
|
+
export {};
|
|
84
|
+
|
|
85
|
+
//# sourceMappingURL=cli.js.map
|
package/dist/cli.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.js","names":[],"sources":["../package.json","../src/cli.ts"],"sourcesContent":["{\n \"name\": \"reelout\",\n \"version\": \"0.1.0\",\n \"description\": \"Monorepo release CLI and toolkit.\",\n \"keywords\": [\n \"release\",\n \"monorepo\",\n \"versioning\",\n \"changelog\",\n \"npm\",\n \"git\",\n \"github\",\n \"cli\"\n ],\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"git+https://github.com/aicest/reelout.git\"\n },\n \"license\": \"MIT\",\n \"type\": \"module\",\n \"imports\": {},\n \"exports\": {\n \"./package.json\": {\n \"default\": \"./package.json\"\n },\n \".\": {\n \"module\": \"./src/index.ts\",\n \"development\": \"./src/index.ts\",\n \"types\": \"./src/index.ts\",\n \"default\": \"./dist/index.js\"\n },\n \"./*\": {\n \"module\": \"./src/*.ts\",\n \"development\": \"./src/*.ts\",\n \"types\": \"./src/*.ts\",\n \"default\": \"./dist/*.js\"\n }\n },\n \"bin\": \"dist/cli.js\",\n \"files\": [\n \"./dist\",\n \"./src\"\n ],\n \"scripts\": {\n \"build\": \"pnpm -r build && vite build --ssr --sourcemap\",\n \"clean\": \"rimraf -g **/{*.tsbuildinfo,coverage,dist,generated,storybook-static,test-results}\",\n \"dev\": \"concurrently 'pnpm -r --parallel dev' 'vite build --ssr --watch'\",\n \"format\": \"eslint --fix . && prettier --write .\",\n \"lint\": \"eslint . && prettier --check . && tsx scripts/check.ts .\",\n \"prepare\": \"husky\",\n \"test\": \"vitest\",\n \"validate\": \"pnpm i && pnpm clean && pnpm lint && typedoc --out generated && pnpm build && pnpm test run --coverage\"\n },\n \"dependencies\": {\n \"@reelout/cli\": \"workspace:^\",\n \"@reelout/config\": \"workspace:^\",\n \"@reelout/context\": \"workspace:^\",\n \"@reelout/core\": \"workspace:^\"\n },\n \"devDependencies\": {\n \"@commitlint/cli\": \"catalog:\",\n \"@commitlint/config-conventional\": \"catalog:\",\n \"@commitlint/types\": \"catalog:\",\n \"@eslint/js\": \"catalog:\",\n \"@reelout/github\": \"workspace:^\",\n \"@reelout/npm\": \"workspace:^\",\n \"@testing-library/jest-dom\": \"catalog:\",\n \"@types/node\": \"catalog:\",\n \"@vitest/coverage-istanbul\": \"catalog:\",\n \"concurrently\": \"catalog:\",\n \"consola\": \"catalog:\",\n \"eslint\": \"catalog:\",\n \"eslint-plugin-import\": \"catalog:\",\n \"from-async\": \"catalog:\",\n \"glob\": \"catalog:\",\n \"globals\": \"catalog:\",\n \"husky\": \"catalog:\",\n \"ignore\": \"catalog:\",\n \"jsdom\": \"catalog:\",\n \"lint-staged\": \"catalog:\",\n \"memfs\": \"catalog:\",\n \"prettier\": \"catalog:\",\n \"rimraf\": \"catalog:\",\n \"rollup-plugin-node-externals\": \"catalog:\",\n \"sort-package-json\": \"catalog:\",\n \"tempy\": \"catalog:\",\n \"tslib\": \"catalog:\",\n \"tsx\": \"catalog:\",\n \"typedoc\": \"catalog:\",\n \"typescript\": \"catalog:\",\n \"typescript-eslint\": \"catalog:\",\n \"unionfs\": \"catalog:\",\n \"vite\": \"catalog:\",\n \"vitest\": \"catalog:\"\n },\n \"packageManager\": \"pnpm@12.8.2+sha512.a5941679663d952c5f0ecc38ba98af98b4dc01b95780354f6894f2f873973cef2f7e2989d7db3ee5393938ae21f62fe06bcdf685d475ddad829a62095d2b8b11\",\n \"engines\": {\n \"node\": \">=24.15\"\n }\n}\n","#!/usr/bin/env node\n\n// SPDX-License-Identifier: MIT\n// Copyright (c) 2026 Fai\n\nimport { createProcessAbortSignal, createProgram } from '@reelout/cli'\nimport { description, version } from '../package.json'\n\nusing signal = createProcessAbortSignal()\n\nconst program = await createProgram({\n name: 'reelout',\n version,\n description,\n cwd: process.cwd(),\n env: process.env,\n stdout: process.stdout,\n stderr: process.stderr,\n signal,\n})\n\nawait program.parseAsync(process.argv)\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CCQA,IAAM,SAAA,UAAA,EAAS,yBAAyB,CAAA;CAaxC,OAAM,MAXgB,cAAc;EAClC,MAAM;EACN;EACA;EACA,KAAK,QAAQ,IAAI;EACjB,KAAK,QAAQ;EACb,QAAQ,QAAQ;EAChB,QAAQ,QAAQ;EAChB;CACF,CAAC,EAAA,CAEa,WAAW,QAAQ,IAAI"}
|
package/dist/index.js
ADDED
package/package.json
CHANGED
|
@@ -1,7 +1,100 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "reelout",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.2.0",
|
|
4
|
+
"description": "Monorepo release CLI and toolkit.",
|
|
5
|
+
"keywords": [
|
|
6
|
+
"release",
|
|
7
|
+
"monorepo",
|
|
8
|
+
"versioning",
|
|
9
|
+
"changelog",
|
|
10
|
+
"npm",
|
|
11
|
+
"git",
|
|
12
|
+
"github",
|
|
13
|
+
"cli"
|
|
14
|
+
],
|
|
15
|
+
"repository": {
|
|
16
|
+
"type": "git",
|
|
17
|
+
"url": "git+https://github.com/aicest/reelout.git"
|
|
18
|
+
},
|
|
4
19
|
"license": "MIT",
|
|
5
20
|
"type": "module",
|
|
6
|
-
"
|
|
7
|
-
|
|
21
|
+
"imports": {},
|
|
22
|
+
"exports": {
|
|
23
|
+
"./package.json": {
|
|
24
|
+
"default": "./package.json"
|
|
25
|
+
},
|
|
26
|
+
".": {
|
|
27
|
+
"module": "./src/index.ts",
|
|
28
|
+
"development": "./src/index.ts",
|
|
29
|
+
"types": "./src/index.ts",
|
|
30
|
+
"default": "./dist/index.js"
|
|
31
|
+
},
|
|
32
|
+
"./*": {
|
|
33
|
+
"module": "./src/*.ts",
|
|
34
|
+
"development": "./src/*.ts",
|
|
35
|
+
"types": "./src/*.ts",
|
|
36
|
+
"default": "./dist/*.js"
|
|
37
|
+
}
|
|
38
|
+
},
|
|
39
|
+
"bin": {
|
|
40
|
+
"reelout": "dist/cli.js"
|
|
41
|
+
},
|
|
42
|
+
"files": [
|
|
43
|
+
"./dist",
|
|
44
|
+
"./src"
|
|
45
|
+
],
|
|
46
|
+
"dependencies": {
|
|
47
|
+
"@reelout/cli": "^0.4.1",
|
|
48
|
+
"@reelout/config": "^0.4.1",
|
|
49
|
+
"@reelout/context": "^0.4.1",
|
|
50
|
+
"@reelout/core": "^0.5.0"
|
|
51
|
+
},
|
|
52
|
+
"devDependencies": {
|
|
53
|
+
"@commitlint/cli": "^21.2.3",
|
|
54
|
+
"@commitlint/config-conventional": "^21.2.3",
|
|
55
|
+
"@commitlint/types": "^21.2.3",
|
|
56
|
+
"@eslint/js": "^10.0.1",
|
|
57
|
+
"@reelout/github": "^0.4.1",
|
|
58
|
+
"@reelout/npm": "^0.5.0",
|
|
59
|
+
"@testing-library/jest-dom": "^7.0.1",
|
|
60
|
+
"@types/node": "^24.12.4",
|
|
61
|
+
"@vitest/coverage-istanbul": "^5.0.3",
|
|
62
|
+
"concurrently": "^10.0.5",
|
|
63
|
+
"consola": "^3.4.2",
|
|
64
|
+
"eslint": "^10.12.0",
|
|
65
|
+
"eslint-plugin-import": "^2.32.0",
|
|
66
|
+
"from-async": "^1.1.1",
|
|
67
|
+
"glob": "^13.0.6",
|
|
68
|
+
"globals": "^17.13.0",
|
|
69
|
+
"husky": "^9.1.7",
|
|
70
|
+
"ignore": "^7.0.12",
|
|
71
|
+
"jsdom": "^30.1.2",
|
|
72
|
+
"lint-staged": "^17.6.0",
|
|
73
|
+
"memfs": "^4.80.0",
|
|
74
|
+
"prettier": "^3.9.9",
|
|
75
|
+
"rimraf": "^6.1.3",
|
|
76
|
+
"rollup-plugin-node-externals": "^9.0.1",
|
|
77
|
+
"sort-package-json": "^4.0.0",
|
|
78
|
+
"tempy": "^3.2.0",
|
|
79
|
+
"tslib": "^2.8.1",
|
|
80
|
+
"tsx": "^4.23.15",
|
|
81
|
+
"typedoc": "^0.28.20",
|
|
82
|
+
"typescript": "npm:@typescript/typescript6@^6.0.2",
|
|
83
|
+
"typescript-eslint": "^8.71.1",
|
|
84
|
+
"unionfs": "^4.6.0",
|
|
85
|
+
"vite": "^8.3.3",
|
|
86
|
+
"vitest": "^5.0.3"
|
|
87
|
+
},
|
|
88
|
+
"engines": {
|
|
89
|
+
"node": ">=24.15"
|
|
90
|
+
},
|
|
91
|
+
"scripts": {
|
|
92
|
+
"build": "pnpm -r build && vite build --ssr --sourcemap",
|
|
93
|
+
"clean": "rimraf -g **/{*.tsbuildinfo,coverage,dist,generated,storybook-static,test-results}",
|
|
94
|
+
"dev": "concurrently 'pnpm -r --parallel dev' 'vite build --ssr --watch'",
|
|
95
|
+
"format": "eslint --fix . && prettier --write .",
|
|
96
|
+
"lint": "eslint . && prettier --check . && tsx scripts/check.ts .",
|
|
97
|
+
"test": "vitest",
|
|
98
|
+
"validate": "pnpm i && pnpm clean && pnpm lint && typedoc --out generated && pnpm build && pnpm test run --coverage"
|
|
99
|
+
}
|
|
100
|
+
}
|
package/src/cli.ts
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
// SPDX-License-Identifier: MIT
|
|
4
|
+
// Copyright (c) 2026 Fai
|
|
5
|
+
|
|
6
|
+
import { createProcessAbortSignal, createProgram } from '@reelout/cli'
|
|
7
|
+
import { description, version } from '../package.json'
|
|
8
|
+
|
|
9
|
+
using signal = createProcessAbortSignal()
|
|
10
|
+
|
|
11
|
+
const program = await createProgram({
|
|
12
|
+
name: 'reelout',
|
|
13
|
+
version,
|
|
14
|
+
description,
|
|
15
|
+
cwd: process.cwd(),
|
|
16
|
+
env: process.env,
|
|
17
|
+
stdout: process.stdout,
|
|
18
|
+
stderr: process.stderr,
|
|
19
|
+
signal,
|
|
20
|
+
})
|
|
21
|
+
|
|
22
|
+
await program.parseAsync(process.argv)
|
package/src/index.ts
ADDED
package/index.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {}
|