@eggjs/bin 7.0.0-beta.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 +227 -0
- package/dist/esm/bin/cli.d.ts +2 -0
- package/dist/esm/bin/cli.js +30 -0
- package/dist/esm/cmd/base.d.ts +12 -0
- package/dist/esm/cmd/base.js +135 -0
- package/dist/esm/cmd/cov.d.ts +8 -0
- package/dist/esm/cmd/cov.js +103 -0
- package/dist/esm/cmd/debug.d.ts +5 -0
- package/dist/esm/cmd/debug.js +28 -0
- package/dist/esm/cmd/dev.d.ts +17 -0
- package/dist/esm/cmd/dev.js +118 -0
- package/dist/esm/cmd/test.d.ts +15 -0
- package/dist/esm/cmd/test.js +237 -0
- package/dist/esm/config/framework.d.ts +4 -0
- package/dist/esm/config/framework.js +4 -0
- package/dist/esm/config/plugin.d.ts +11 -0
- package/dist/esm/config/plugin.js +11 -0
- package/dist/esm/index.d.ts +5 -0
- package/dist/esm/index.js +6 -0
- package/dist/esm/middleware/global_options.d.ts +5 -0
- package/dist/esm/middleware/global_options.js +182 -0
- package/dist/esm/middleware/handle_error.d.ts +5 -0
- package/dist/esm/middleware/handle_error.js +47 -0
- package/dist/esm/middleware/inspect.d.ts +5 -0
- package/dist/esm/middleware/inspect.js +69 -0
- package/dist/esm/package.json +3 -0
- package/dist/esm/utils.d.ts +5 -0
- package/dist/esm/utils.js +46 -0
- package/dist/package.json +4 -0
- package/dist/scripts/postinstall.mjs +59 -0
- package/dist/scripts/start-cluster.mjs +14 -0
- package/package.json +123 -0
- package/scripts/postinstall.mjs +59 -0
- package/scripts/start-cluster.mjs +14 -0
- package/src/bin/cli.ts +33 -0
- package/src/cmd/base.ts +133 -0
- package/src/cmd/cov.ts +89 -0
- package/src/cmd/debug.ts +14 -0
- package/src/cmd/dev.ts +102 -0
- package/src/cmd/test.ts +219 -0
- package/src/config/framework.ts +3 -0
- package/src/config/plugin.ts +10 -0
- package/src/index.ts +5 -0
- package/src/middleware/global_options.ts +169 -0
- package/src/middleware/handle_error.ts +30 -0
- package/src/middleware/inspect.ts +54 -0
- package/src/utils.ts +47 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2017-present Alibaba Group Holding Limited and other contributors.
|
|
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,227 @@
|
|
|
1
|
+
# egg-bin
|
|
2
|
+
|
|
3
|
+
[![NPM version][npm-image]][npm-url]
|
|
4
|
+
[![build status][ci-image]][ci-url]
|
|
5
|
+
[![Test coverage][codecov-image]][codecov-url]
|
|
6
|
+
[![Known Vulnerabilities][snyk-image]][snyk-url]
|
|
7
|
+
[![npm download][download-image]][download-url]
|
|
8
|
+
[![Node.js Version][node-version-image]][node-version-url]
|
|
9
|
+
[](https://makeapullrequest.com)
|
|
10
|
+
|
|
11
|
+
[npm-image]: https://img.shields.io/npm/v/@eggjs/bin.svg?style=flat-square
|
|
12
|
+
[npm-url]: https://npmjs.org/package/@eggjs/bin
|
|
13
|
+
[ci-image]: https://github.com/eggjs/bin/actions/workflows/nodejs.yml/badge.svg
|
|
14
|
+
[ci-url]: https://github.com/eggjs/bin/actions/workflows/nodejs.yml
|
|
15
|
+
[codecov-image]: https://codecov.io/gh/eggjs/bin/branch/master/graph/badge.svg
|
|
16
|
+
[codecov-url]: https://codecov.io/gh/eggjs/bin
|
|
17
|
+
[snyk-image]: https://snyk.io/test/npm/@eggjs/bin/badge.svg?style=flat-square
|
|
18
|
+
[snyk-url]: https://snyk.io/test/npm/@eggjs/bin
|
|
19
|
+
[download-image]: https://img.shields.io/npm/dm/@eggjs/bin.svg?style=flat-square
|
|
20
|
+
[download-url]: https://npmjs.org/package/@eggjs/bin
|
|
21
|
+
[node-version-image]: https://img.shields.io/node/v/@eggjs/bin.svg?style=flat-square
|
|
22
|
+
[node-version-url]: https://nodejs.org/en/download/
|
|
23
|
+
|
|
24
|
+
egg developer tool, extends [@artus-cli/artus-cli].
|
|
25
|
+
|
|
26
|
+
---
|
|
27
|
+
|
|
28
|
+
## Install
|
|
29
|
+
|
|
30
|
+
```bash
|
|
31
|
+
npm i egg-bin --save-dev
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
## Usage
|
|
35
|
+
|
|
36
|
+
Add `egg-bin` to `package.json` scripts:
|
|
37
|
+
|
|
38
|
+
```json
|
|
39
|
+
{
|
|
40
|
+
"scripts": {
|
|
41
|
+
"dev": "egg-bin dev",
|
|
42
|
+
"test-local": "egg-bin test",
|
|
43
|
+
"test": "npm run lint -- --fix && npm run test-local",
|
|
44
|
+
"cov": "egg-bin cov",
|
|
45
|
+
"lint": "eslint .",
|
|
46
|
+
"ci": "npm run lint && npm run cov"
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
## Command
|
|
52
|
+
|
|
53
|
+
All the commands support these specific options:
|
|
54
|
+
|
|
55
|
+
- `--inspect`
|
|
56
|
+
- `--inspect-brk`
|
|
57
|
+
- `--typescript` / `--ts` enable typescript support. Auto detect from `package.json`'s `pkg.egg.typescript`,
|
|
58
|
+
or `pkg.dependencies.typescript`/`pkg.devDependencies.typescript`.
|
|
59
|
+
- `--base` / `--baseDir` application's root path, default to `process.cwd()`.
|
|
60
|
+
- `--require` will add to `execArgv`, support multiple. Also support read from `package.json`'s `pkg.egg.require`
|
|
61
|
+
- `--dry-run` / `-d` whether dry-run the test command, just show the command
|
|
62
|
+
|
|
63
|
+
```bash
|
|
64
|
+
egg-bin [command] --inspect
|
|
65
|
+
egg-bin [command] --inspect-brk
|
|
66
|
+
egg-bin [command] --typescript
|
|
67
|
+
egg-bin [command] --base /foo/bar
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
### dev
|
|
71
|
+
|
|
72
|
+
Start dev cluster on `local` env, it will start a master, an agent and a worker.
|
|
73
|
+
|
|
74
|
+
```bash
|
|
75
|
+
egg-bin dev
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
#### dev options
|
|
79
|
+
|
|
80
|
+
- `--framework` egg web framework root path.
|
|
81
|
+
- `--port` server port. If not specified, the port is obtained in the following order: [_egg.js_ configuration](https://www.eggjs.org/basics/config) `config/config.*.js` > `process.env.EGG_BIN_DEFAULT_PORT` > 7001 > other available ports.
|
|
82
|
+
- `--workers` worker process number, default to `1` worker at local mode.
|
|
83
|
+
- `--sticky` start a sticky cluster server, default to `false`.
|
|
84
|
+
|
|
85
|
+
#### debug/inspect on VSCode
|
|
86
|
+
|
|
87
|
+
Create `.vscode/launch.json` file:
|
|
88
|
+
|
|
89
|
+
```json
|
|
90
|
+
{
|
|
91
|
+
"version": "0.2.0",
|
|
92
|
+
"configurations": [
|
|
93
|
+
{
|
|
94
|
+
"type": "node",
|
|
95
|
+
"request": "launch",
|
|
96
|
+
"name": "Egg Debug",
|
|
97
|
+
"runtimeExecutable": "npm",
|
|
98
|
+
"runtimeArgs": [
|
|
99
|
+
"run",
|
|
100
|
+
"dev",
|
|
101
|
+
"--",
|
|
102
|
+
"--inspect-brk"
|
|
103
|
+
],
|
|
104
|
+
"console": "integratedTerminal",
|
|
105
|
+
"restart": true,
|
|
106
|
+
"protocol": "auto",
|
|
107
|
+
"port": 9229,
|
|
108
|
+
"autoAttachChildProcesses": true
|
|
109
|
+
},
|
|
110
|
+
{
|
|
111
|
+
"type": "node",
|
|
112
|
+
"request": "launch",
|
|
113
|
+
"name": "Egg Test",
|
|
114
|
+
"runtimeExecutable": "npm",
|
|
115
|
+
"runtimeArgs": [
|
|
116
|
+
"run",
|
|
117
|
+
"test-local",
|
|
118
|
+
"--",
|
|
119
|
+
"--inspect-brk"
|
|
120
|
+
],
|
|
121
|
+
"protocol": "auto",
|
|
122
|
+
"port": 9229,
|
|
123
|
+
"autoAttachChildProcesses": true
|
|
124
|
+
}
|
|
125
|
+
]
|
|
126
|
+
}
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
### test
|
|
130
|
+
|
|
131
|
+
Using [mocha] to run test.
|
|
132
|
+
|
|
133
|
+
```bash
|
|
134
|
+
egg-bin test [...files] [options]
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
- `files` is optional, default to `test/**/*.test.ts`
|
|
138
|
+
- `test/fixtures`, `test/node_modules` is always exclude.
|
|
139
|
+
|
|
140
|
+
#### auto require `test/.setup.ts`
|
|
141
|
+
|
|
142
|
+
If `test/.setup.ts` file exists, it will be auto require as the first test file.
|
|
143
|
+
|
|
144
|
+
```bash
|
|
145
|
+
test
|
|
146
|
+
├── .setup.ts
|
|
147
|
+
└── foo.test.ts
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
#### test options
|
|
151
|
+
|
|
152
|
+
You can pass any mocha argv.
|
|
153
|
+
|
|
154
|
+
- `--timeout` milliseconds, default to 60000
|
|
155
|
+
- `--changed` / `-c` only test changed test files(test files means files that match `${pwd}/test/**/*.test.(js|ts)`)
|
|
156
|
+
- `--parallel` enable mocha parallel mode, default to `false`.
|
|
157
|
+
- `--auto-agent` auto start agent in mocha master agent.
|
|
158
|
+
- `--jobs` number of jobs to run in parallel, default to `os.cpus().length - 1`.
|
|
159
|
+
- `--mochawesome` enable [mochawesome](https://github.com/adamgruber/mochawesome) reporter, default to `true`.
|
|
160
|
+
|
|
161
|
+
#### test environment
|
|
162
|
+
|
|
163
|
+
Environment is also support, will use it if options not provide.
|
|
164
|
+
|
|
165
|
+
You can set `TESTS` env to set the tests directory, it support [glob] grammar.
|
|
166
|
+
|
|
167
|
+
```bash
|
|
168
|
+
TESTS=test/a.test.ts egg-bin test
|
|
169
|
+
```
|
|
170
|
+
|
|
171
|
+
And the reporter can set by the `TEST_REPORTER` env, default is `spec`.
|
|
172
|
+
|
|
173
|
+
```bash
|
|
174
|
+
TEST_REPORTER=doc egg-bin test
|
|
175
|
+
```
|
|
176
|
+
|
|
177
|
+
The test timeout can set by `TEST_TIMEOUT` env, default is `60000` ms.
|
|
178
|
+
|
|
179
|
+
```bash
|
|
180
|
+
TEST_TIMEOUT=2000 egg-bin test
|
|
181
|
+
```
|
|
182
|
+
|
|
183
|
+
### cov
|
|
184
|
+
|
|
185
|
+
Using [mocha] and [c8] to run code coverage, it support all test params above.
|
|
186
|
+
|
|
187
|
+
Coverage reporter will output text-summary, json and lcov.
|
|
188
|
+
|
|
189
|
+
#### cov options
|
|
190
|
+
|
|
191
|
+
You can pass any mocha argv.
|
|
192
|
+
|
|
193
|
+
- `-x` add dir ignore coverage, support multiple argv
|
|
194
|
+
- `--prerequire` prerequire files for coverage instrument, you can use this options if load files slowly when call `mm.app` or `mm.cluster`
|
|
195
|
+
- `--typescript` / `--ts` enable typescript support. If true, will auto add `.ts` extension and ignore `typings` and `d.ts`.
|
|
196
|
+
- `--c8` c8 instruments passthrough. you can use this to overwrite egg-bin's default c8 instruments and add additional ones.
|
|
197
|
+
>
|
|
198
|
+
> - egg-bin have some default instruments passed to c8 like `-r` and `--temp-directory`
|
|
199
|
+
> - `egg-bin cov --c8="-r teamcity -r text" --c8-report=true`
|
|
200
|
+
>
|
|
201
|
+
- also support all test params above.
|
|
202
|
+
|
|
203
|
+
#### cov environment
|
|
204
|
+
|
|
205
|
+
You can set `COV_EXCLUDES` env to add dir ignore coverage.
|
|
206
|
+
|
|
207
|
+
```bash
|
|
208
|
+
COV_EXCLUDES="app/plugins/c*,app/autocreate/**" egg-bin cov
|
|
209
|
+
```
|
|
210
|
+
|
|
211
|
+
## Custom egg-bin for your team
|
|
212
|
+
|
|
213
|
+
See <https://artus-cli.github.io>
|
|
214
|
+
|
|
215
|
+
## License
|
|
216
|
+
|
|
217
|
+
[MIT](LICENSE)
|
|
218
|
+
|
|
219
|
+
## Contributors
|
|
220
|
+
|
|
221
|
+
[](https://github.com/eggjs/bin/graphs/contributors)
|
|
222
|
+
|
|
223
|
+
Made with [contributors-img](https://contrib.rocks).
|
|
224
|
+
|
|
225
|
+
[mocha]: https://mochajs.org
|
|
226
|
+
[glob]: https://github.com/isaacs/node-glob
|
|
227
|
+
[@artus-cli/artus-cli]: https://github.com/artus-cli/artus-cli
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import path from 'node:path';
|
|
3
|
+
import { fileURLToPath } from 'node:url';
|
|
4
|
+
import { start } from '@artus-cli/artus-cli';
|
|
5
|
+
function getCurrentFilename() {
|
|
6
|
+
if (typeof __filename === 'string') {
|
|
7
|
+
return __filename;
|
|
8
|
+
}
|
|
9
|
+
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
10
|
+
// @ts-ignore
|
|
11
|
+
return fileURLToPath(import.meta.url);
|
|
12
|
+
}
|
|
13
|
+
function main() {
|
|
14
|
+
const currentFilename = getCurrentFilename();
|
|
15
|
+
// src/bin/cli.ts => src/
|
|
16
|
+
let baseDir = path.dirname(path.dirname(currentFilename));
|
|
17
|
+
const isBuildJavascriptFile = getCurrentFilename().endsWith('.js');
|
|
18
|
+
const exclude = ['scripts', 'bin', 'test', 'coverage'];
|
|
19
|
+
if (isBuildJavascriptFile) {
|
|
20
|
+
// dist/esm/bin/cli.js => dist/
|
|
21
|
+
baseDir = path.dirname(baseDir);
|
|
22
|
+
exclude.push('*.ts');
|
|
23
|
+
}
|
|
24
|
+
else {
|
|
25
|
+
exclude.push('dist');
|
|
26
|
+
}
|
|
27
|
+
start({ exclude, baseDir });
|
|
28
|
+
}
|
|
29
|
+
main();
|
|
30
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2Jpbi9jbGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUVBLE9BQU8sSUFBSSxNQUFNLFdBQVcsQ0FBQztBQUM3QixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUU3QyxTQUFTLGtCQUFrQjtJQUN6QixJQUFJLE9BQU8sVUFBVSxLQUFLLFFBQVEsRUFBRSxDQUFDO1FBQ25DLE9BQU8sVUFBVSxDQUFDO0lBQ3BCLENBQUM7SUFDRCw2REFBNkQ7SUFDN0QsYUFBYTtJQUNiLE9BQU8sYUFBYSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDeEMsQ0FBQztBQUVELFNBQVMsSUFBSTtJQUNYLE1BQU0sZUFBZSxHQUFHLGtCQUFrQixFQUFFLENBQUM7SUFDN0MseUJBQXlCO0lBQ3pCLElBQUksT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDO0lBQzFELE1BQU0scUJBQXFCLEdBQUcsa0JBQWtCLEVBQUUsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDbkUsTUFBTSxPQUFPLEdBQUcsQ0FBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxVQUFVLENBQUUsQ0FBQztJQUN6RCxJQUFJLHFCQUFxQixFQUFFLENBQUM7UUFDMUIsK0JBQStCO1FBQy9CLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2hDLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDdkIsQ0FBQztTQUFNLENBQUM7UUFDTixPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxLQUFLLENBQUMsRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQztBQUM5QixDQUFDO0FBRUQsSUFBSSxFQUFFLENBQUMifQ==
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { ForkOptions } from 'node:child_process';
|
|
2
|
+
import { Command, CommandContext, Utils } from '@artus-cli/artus-cli';
|
|
3
|
+
export declare abstract class BaseCommand extends Command {
|
|
4
|
+
dryRun: boolean;
|
|
5
|
+
require: string[];
|
|
6
|
+
ctx: CommandContext;
|
|
7
|
+
utils: Utils;
|
|
8
|
+
protected get base(): any;
|
|
9
|
+
run(): Promise<void>;
|
|
10
|
+
protected formatRequires(): Promise<string[]>;
|
|
11
|
+
protected forkNode(modulePath: string, args: string[], options?: ForkOptions): Promise<void>;
|
|
12
|
+
}
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
8
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
9
|
+
};
|
|
10
|
+
import { debuglog } from 'node:util';
|
|
11
|
+
import { fork } from 'node:child_process';
|
|
12
|
+
import { DefineCommand, Option, Command, CommandContext, Inject, Utils, } from '@artus-cli/artus-cli';
|
|
13
|
+
const debug = debuglog('@eggjs/bin/base');
|
|
14
|
+
// only hook once and only when ever start any child.
|
|
15
|
+
const children = new Set();
|
|
16
|
+
let hadHook = false;
|
|
17
|
+
function graceful(proc) {
|
|
18
|
+
// save child ref
|
|
19
|
+
children.add(proc);
|
|
20
|
+
// only hook once
|
|
21
|
+
/* c8 ignore else */
|
|
22
|
+
if (!hadHook) {
|
|
23
|
+
hadHook = true;
|
|
24
|
+
let signal;
|
|
25
|
+
['SIGINT', 'SIGQUIT', 'SIGTERM'].forEach(event => {
|
|
26
|
+
process.once(event, () => {
|
|
27
|
+
signal = event;
|
|
28
|
+
process.exit(0);
|
|
29
|
+
});
|
|
30
|
+
});
|
|
31
|
+
process.once('exit', (code) => {
|
|
32
|
+
for (const child of children) {
|
|
33
|
+
debug('process exit code: %o, kill child %o with %o', code, child.pid, signal);
|
|
34
|
+
child.kill(signal);
|
|
35
|
+
}
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
class ForkError extends Error {
|
|
40
|
+
code;
|
|
41
|
+
constructor(message, code) {
|
|
42
|
+
super(message);
|
|
43
|
+
this.code = code;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
let BaseCommand = class BaseCommand extends Command {
|
|
47
|
+
dryRun;
|
|
48
|
+
require;
|
|
49
|
+
ctx;
|
|
50
|
+
utils;
|
|
51
|
+
// FIXME: should has a better way to init global args default value
|
|
52
|
+
get base() {
|
|
53
|
+
return this.ctx.args.base;
|
|
54
|
+
}
|
|
55
|
+
async run() {
|
|
56
|
+
await this.utils.redirect(['--help']);
|
|
57
|
+
}
|
|
58
|
+
async formatRequires() {
|
|
59
|
+
const requires = this.require ?? [];
|
|
60
|
+
const eggRequire = this.ctx.args.pkgEgg.require;
|
|
61
|
+
if (Array.isArray(eggRequire)) {
|
|
62
|
+
for (const r of eggRequire) {
|
|
63
|
+
requires.push(r);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
else if (typeof eggRequire === 'string' && eggRequire) {
|
|
67
|
+
requires.push(eggRequire);
|
|
68
|
+
}
|
|
69
|
+
return requires;
|
|
70
|
+
}
|
|
71
|
+
async forkNode(modulePath, args, options = {}) {
|
|
72
|
+
if (this.dryRun) {
|
|
73
|
+
console.log('dry run: $ %o', `${process.execPath} ${modulePath} ${args.join(' ')}`);
|
|
74
|
+
return;
|
|
75
|
+
}
|
|
76
|
+
const forkExecArgv = [
|
|
77
|
+
...this.ctx.args.execArgv || [],
|
|
78
|
+
...options.execArgv || [],
|
|
79
|
+
];
|
|
80
|
+
options = {
|
|
81
|
+
stdio: 'inherit',
|
|
82
|
+
env: this.ctx.env,
|
|
83
|
+
cwd: this.base,
|
|
84
|
+
...options,
|
|
85
|
+
execArgv: forkExecArgv,
|
|
86
|
+
};
|
|
87
|
+
const proc = fork(modulePath, args, options);
|
|
88
|
+
debug('Run fork pid: %o\n\n$ %s%s %s %s\n\n', proc.pid, options.env?.NODE_OPTIONS ? `NODE_OPTIONS='${options.env.NODE_OPTIONS}' ` : '', process.execPath, modulePath, args.map(a => `'${a}'`).join(' '));
|
|
89
|
+
graceful(proc);
|
|
90
|
+
return new Promise((resolve, reject) => {
|
|
91
|
+
proc.once('exit', code => {
|
|
92
|
+
debug('fork pid: %o exit code %o', proc.pid, code);
|
|
93
|
+
children.delete(proc);
|
|
94
|
+
if (code !== 0) {
|
|
95
|
+
const err = new ForkError(modulePath + ' ' + args.join(' ') + ' exit with code ' + code, code);
|
|
96
|
+
reject(err);
|
|
97
|
+
}
|
|
98
|
+
else {
|
|
99
|
+
resolve();
|
|
100
|
+
}
|
|
101
|
+
});
|
|
102
|
+
});
|
|
103
|
+
}
|
|
104
|
+
};
|
|
105
|
+
__decorate([
|
|
106
|
+
Option({
|
|
107
|
+
description: 'whether show full command script only, default is false',
|
|
108
|
+
alias: 'd',
|
|
109
|
+
type: 'boolean',
|
|
110
|
+
default: false,
|
|
111
|
+
}),
|
|
112
|
+
__metadata("design:type", Boolean)
|
|
113
|
+
], BaseCommand.prototype, "dryRun", void 0);
|
|
114
|
+
__decorate([
|
|
115
|
+
Option({
|
|
116
|
+
description: 'require the given module',
|
|
117
|
+
alias: 'r',
|
|
118
|
+
array: true,
|
|
119
|
+
default: [],
|
|
120
|
+
}),
|
|
121
|
+
__metadata("design:type", Array)
|
|
122
|
+
], BaseCommand.prototype, "require", void 0);
|
|
123
|
+
__decorate([
|
|
124
|
+
Inject(),
|
|
125
|
+
__metadata("design:type", CommandContext)
|
|
126
|
+
], BaseCommand.prototype, "ctx", void 0);
|
|
127
|
+
__decorate([
|
|
128
|
+
Inject(),
|
|
129
|
+
__metadata("design:type", Utils)
|
|
130
|
+
], BaseCommand.prototype, "utils", void 0);
|
|
131
|
+
BaseCommand = __decorate([
|
|
132
|
+
DefineCommand()
|
|
133
|
+
], BaseCommand);
|
|
134
|
+
export { BaseCommand };
|
|
135
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jbWQvYmFzZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3JDLE9BQU8sRUFBRSxJQUFJLEVBQTZCLE1BQU0sb0JBQW9CLENBQUM7QUFDckUsT0FBTyxFQUNMLGFBQWEsRUFDYixNQUFNLEVBQUUsT0FBTyxFQUNmLGNBQWMsRUFDZCxNQUFNLEVBQ04sS0FBSyxHQUNOLE1BQU0sc0JBQXNCLENBQUM7QUFFOUIsTUFBTSxLQUFLLEdBQUcsUUFBUSxDQUFDLGlCQUFpQixDQUFDLENBQUM7QUFFMUMscURBQXFEO0FBQ3JELE1BQU0sUUFBUSxHQUFHLElBQUksR0FBRyxFQUFnQixDQUFDO0FBQ3pDLElBQUksT0FBTyxHQUFHLEtBQUssQ0FBQztBQUNwQixTQUFTLFFBQVEsQ0FBQyxJQUFrQjtJQUNsQyxpQkFBaUI7SUFDakIsUUFBUSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUVuQixpQkFBaUI7SUFDakIsb0JBQW9CO0lBQ3BCLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNiLE9BQU8sR0FBRyxJQUFJLENBQUM7UUFDZixJQUFJLE1BQXNCLENBQUM7UUFDM0IsQ0FBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLFNBQVMsQ0FBRSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUNqRCxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxHQUFHLEVBQUU7Z0JBQ3ZCLE1BQU0sR0FBRyxLQUF1QixDQUFDO2dCQUNqQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ2xCLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7UUFFSCxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLElBQVksRUFBRSxFQUFFO1lBQ3BD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
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
8
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
9
|
+
};
|
|
10
|
+
import path from 'node:path';
|
|
11
|
+
import fs from 'node:fs/promises';
|
|
12
|
+
import { DefineCommand, Option } from '@artus-cli/artus-cli';
|
|
13
|
+
import { importResolve } from '@eggjs/utils';
|
|
14
|
+
import { TestCommand } from './test.js';
|
|
15
|
+
let CovCommand = class CovCommand extends TestCommand {
|
|
16
|
+
// will use on egg-mock https://github.com/eggjs/egg-mock/blob/84a64bd19d0569ec94664c898fb1b28367b95d60/index.js#L7
|
|
17
|
+
prerequire;
|
|
18
|
+
x;
|
|
19
|
+
c8;
|
|
20
|
+
get defaultExcludes() {
|
|
21
|
+
return [
|
|
22
|
+
'example/',
|
|
23
|
+
'examples/',
|
|
24
|
+
'mocks**/',
|
|
25
|
+
'docs/',
|
|
26
|
+
// https://github.com/JaKXz/test-exclude/blob/620a7be412d4fc2070d50f0f63e3228314066fc9/index.js#L73
|
|
27
|
+
'test/**',
|
|
28
|
+
'test{,-*}.js',
|
|
29
|
+
'**/*.test.js',
|
|
30
|
+
'**/__tests__/**',
|
|
31
|
+
'**/node_modules/**',
|
|
32
|
+
'typings',
|
|
33
|
+
'**/*.d.ts',
|
|
34
|
+
];
|
|
35
|
+
}
|
|
36
|
+
async forkNode(modulePath, args) {
|
|
37
|
+
if (this.prerequire) {
|
|
38
|
+
this.ctx.env.EGG_BIN_PREREQUIRE = 'true';
|
|
39
|
+
}
|
|
40
|
+
// append cobertura
|
|
41
|
+
if (this.c8) {
|
|
42
|
+
this.c8 += ' -r cobertura';
|
|
43
|
+
}
|
|
44
|
+
// add c8 args
|
|
45
|
+
// https://github.com/eggjs/egg/issues/3930
|
|
46
|
+
const c8Args = [
|
|
47
|
+
// '--show-process-tree',
|
|
48
|
+
...this.c8.split(' ').filter(a => a.trim()),
|
|
49
|
+
];
|
|
50
|
+
if (this.ctx.args.typescript) {
|
|
51
|
+
this.ctx.env.SPAWN_WRAP_SHIM_ROOT = path.join(this.base, 'node_modules');
|
|
52
|
+
c8Args.push('--extension');
|
|
53
|
+
c8Args.push('.ts');
|
|
54
|
+
}
|
|
55
|
+
const excludes = new Set([
|
|
56
|
+
...process.env.COV_EXCLUDES?.split(',') ?? [],
|
|
57
|
+
...this.defaultExcludes,
|
|
58
|
+
...this.x,
|
|
59
|
+
]);
|
|
60
|
+
for (const exclude of excludes) {
|
|
61
|
+
c8Args.push('-x');
|
|
62
|
+
c8Args.push(exclude);
|
|
63
|
+
}
|
|
64
|
+
const c8File = importResolve('c8/bin/c8.js');
|
|
65
|
+
const outputDir = path.join(this.base, 'node_modules/.c8_output');
|
|
66
|
+
await fs.rm(outputDir, { force: true, recursive: true });
|
|
67
|
+
const coverageDir = path.join(this.base, 'coverage');
|
|
68
|
+
await fs.rm(coverageDir, { force: true, recursive: true });
|
|
69
|
+
await super.forkNode(c8File, [...c8Args, process.execPath, ...this.ctx.args.execArgv || [], modulePath, ...args]);
|
|
70
|
+
}
|
|
71
|
+
};
|
|
72
|
+
__decorate([
|
|
73
|
+
Option({
|
|
74
|
+
description: 'prerequire files for coverage instrument',
|
|
75
|
+
type: 'boolean',
|
|
76
|
+
default: false,
|
|
77
|
+
}),
|
|
78
|
+
__metadata("design:type", Boolean)
|
|
79
|
+
], CovCommand.prototype, "prerequire", void 0);
|
|
80
|
+
__decorate([
|
|
81
|
+
Option({
|
|
82
|
+
description: 'coverage ignore, one or more files patterns`',
|
|
83
|
+
array: true,
|
|
84
|
+
default: [],
|
|
85
|
+
}),
|
|
86
|
+
__metadata("design:type", Array)
|
|
87
|
+
], CovCommand.prototype, "x", void 0);
|
|
88
|
+
__decorate([
|
|
89
|
+
Option({
|
|
90
|
+
description: 'c8 instruments passthrough`',
|
|
91
|
+
default: '--temp-directory node_modules/.c8_output -r text-summary -r json-summary -r json -r lcov -r cobertura',
|
|
92
|
+
}),
|
|
93
|
+
__metadata("design:type", String)
|
|
94
|
+
], CovCommand.prototype, "c8", void 0);
|
|
95
|
+
CovCommand = __decorate([
|
|
96
|
+
DefineCommand({
|
|
97
|
+
command: 'cov [files...]',
|
|
98
|
+
description: 'Run the test with coverage',
|
|
99
|
+
alias: ['c'],
|
|
100
|
+
})
|
|
101
|
+
], CovCommand);
|
|
102
|
+
export { CovCommand };
|
|
103
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY292LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NtZC9jb3YudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUEsT0FBTyxJQUFJLE1BQU0sV0FBVyxDQUFDO0FBQzdCLE9BQU8sRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ2xDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDN0QsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUM3QyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBT2pDLElBQU0sVUFBVSxHQUFoQixNQUFNLFVBQVcsU0FBUSxXQUFXO0lBQ3pDLG1IQUFtSDtJQU1uSCxVQUFVLENBQVU7SUFPcEIsQ0FBQyxDQUFXO0lBTVosRUFBRSxDQUFTO0lBRVgsSUFBSSxlQUFlO1FBQ2pCLE9BQU87WUFDTCxVQUFVO1lBQ1YsV0FBVztZQUNYLFVBQVU7WUFDVixPQUFPO1lBQ1AsbUdBQW1HO1lBQ25HLFNBQVM7WUFDVCxjQUFjO1lBQ2QsY0FBYztZQUNkLGlCQUFpQjtZQUNqQixvQkFBb0I7WUFDcEIsU0FBUztZQUNULFdBQVc7U0FDWixDQUFDO0lBQ0osQ0FBQztJQUVTLEtBQUssQ0FBQyxRQUFRLENBQUMsVUFBa0IsRUFBRSxJQUFjO1FBQ3pELElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ3BCLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLGtCQUFrQixHQUFHLE1BQU0sQ0FBQztRQUMzQyxDQUFDO1FBQ0QsbUJBQW1CO1FBQ25CLElBQUksSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQ1osSUFBSSxDQUFDLEVBQUUsSUFBSSxlQUFlLENBQUM7UUFDN0IsQ0FBQztRQUVELGNBQWM7UUFDZCwyQ0FBMkM7UUFDM0MsTUFBTSxNQUFNLEdBQUc7WUFDYix5QkFBeUI7WUFDekIsR0FBRyxJQUFJ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
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
8
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
9
|
+
};
|
|
10
|
+
import { DefineCommand, Command, Utils, Inject } from '@artus-cli/artus-cli';
|
|
11
|
+
let DebugCommand = class DebugCommand extends Command {
|
|
12
|
+
utils;
|
|
13
|
+
async run() {
|
|
14
|
+
await this.utils.redirect(['dev', '--inspect']);
|
|
15
|
+
}
|
|
16
|
+
};
|
|
17
|
+
__decorate([
|
|
18
|
+
Inject(),
|
|
19
|
+
__metadata("design:type", Utils)
|
|
20
|
+
], DebugCommand.prototype, "utils", void 0);
|
|
21
|
+
DebugCommand = __decorate([
|
|
22
|
+
DefineCommand({
|
|
23
|
+
command: 'debug',
|
|
24
|
+
description: 'Alias to `egg-bin dev --inspect`',
|
|
25
|
+
})
|
|
26
|
+
], DebugCommand);
|
|
27
|
+
export { DebugCommand };
|
|
28
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVidWcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY21kL2RlYnVnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBLE9BQU8sRUFBRSxhQUFhLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQU10RSxJQUFNLFlBQVksR0FBbEIsTUFBTSxZQUFhLFNBQVEsT0FBTztJQUV2QyxLQUFLLENBQVE7SUFFYixLQUFLLENBQUMsR0FBRztRQUNQLE1BQU0sSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBRSxLQUFLLEVBQUUsV0FBVyxDQUFFLENBQUMsQ0FBQztJQUNwRCxDQUFDO0NBQ0YsQ0FBQTtBQUxDO0lBREMsTUFBTSxFQUFFOzhCQUNGLEtBQUs7MkNBQUM7QUFGRixZQUFZO0lBSnhCLGFBQWEsQ0FBQztRQUNiLE9BQU8sRUFBRSxPQUFPO1FBQ2hCLFdBQVcsRUFBRSxrQ0FBa0M7S0FDaEQsQ0FBQztHQUNXLFlBQVksQ0FPeEIifQ==
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { BaseCommand } from './base.js';
|
|
2
|
+
export declare class DevCommand extends BaseCommand {
|
|
3
|
+
port: number;
|
|
4
|
+
workers: number;
|
|
5
|
+
framework: string;
|
|
6
|
+
sticky: boolean;
|
|
7
|
+
run(): Promise<void>;
|
|
8
|
+
protected formatEggStartOptions(): Promise<{
|
|
9
|
+
baseDir: any;
|
|
10
|
+
workers: number;
|
|
11
|
+
port: number;
|
|
12
|
+
framework: string;
|
|
13
|
+
typescript: any;
|
|
14
|
+
tscompiler: any;
|
|
15
|
+
sticky: boolean;
|
|
16
|
+
}>;
|
|
17
|
+
}
|