@mpis/monorepo 0.0.17 → 0.0.19
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/lib/actions/cmd.analyze.d.ts +3 -0
- package/lib/actions/cmd.analyze.d.ts.map +1 -0
- package/lib/actions/cmd.analyze.js +125 -0
- package/lib/actions/cmd.analyze.js.map +1 -0
- package/lib/actions/cmd.build.d.ts.map +1 -0
- package/lib/{common → actions}/cmd.build.js +2 -2
- package/lib/actions/cmd.build.js.map +1 -0
- package/lib/actions/cmd.dot.d.ts +2 -0
- package/lib/actions/cmd.dot.d.ts.map +1 -0
- package/lib/actions/cmd.dot.js +101 -0
- package/lib/actions/cmd.dot.js.map +1 -0
- package/lib/actions/cmd.list.d.ts.map +1 -0
- package/lib/actions/cmd.list.js +38 -0
- package/lib/actions/cmd.list.js.map +1 -0
- package/lib/actions/cmd.watch.d.ts.map +1 -0
- package/lib/{common → actions}/cmd.watch.js +15 -10
- package/lib/actions/cmd.watch.js.map +1 -0
- package/lib/bin.d.ts +1 -1
- package/lib/bin.d.ts.map +1 -1
- package/lib/bin.js +28 -6
- package/lib/bin.js.map +1 -1
- package/lib/common/args.d.ts +0 -1
- package/lib/common/args.d.ts.map +1 -1
- package/lib/common/args.js +3 -9
- package/lib/common/args.js.map +1 -1
- package/lib/common/string-collect.d.ts +7 -0
- package/lib/common/string-collect.d.ts.map +1 -0
- package/lib/common/string-collect.js +19 -0
- package/lib/common/string-collect.js.map +1 -0
- package/lib/common/user-interactive.d.ts +11 -1
- package/lib/common/user-interactive.d.ts.map +1 -1
- package/lib/common/user-interactive.js +143 -4
- package/lib/common/user-interactive.js.map +1 -1
- package/lib/common/workspace.d.ts +26 -6
- package/lib/common/workspace.d.ts.map +1 -1
- package/lib/common/workspace.js +46 -14
- package/lib/common/workspace.js.map +1 -1
- package/package.json +15 -14
- package/src/actions/cmd.analyze.ts +151 -0
- package/src/{common → actions}/cmd.build.ts +2 -2
- package/src/actions/cmd.dot.ts +106 -0
- package/src/actions/cmd.list.ts +41 -0
- package/src/{common → actions}/cmd.watch.ts +17 -11
- package/src/bin.ts +29 -6
- package/src/common/args.ts +3 -10
- package/src/common/string-collect.ts +20 -0
- package/src/common/user-interactive.ts +160 -4
- package/src/common/workspace.ts +63 -16
- package/lib/common/cmd.build.d.ts.map +0 -1
- package/lib/common/cmd.build.js.map +0 -1
- package/lib/common/cmd.list.d.ts.map +0 -1
- package/lib/common/cmd.list.js +0 -16
- package/lib/common/cmd.list.js.map +0 -1
- package/lib/common/cmd.watch.d.ts.map +0 -1
- package/lib/common/cmd.watch.js.map +0 -1
- package/src/common/cmd.list.ts +0 -19
- /package/lib/{common → actions}/cmd.build.d.ts +0 -0
- /package/lib/{common → actions}/cmd.list.d.ts +0 -0
- /package/lib/{common → actions}/cmd.watch.d.ts +0 -0
|
@@ -1,8 +1,147 @@
|
|
|
1
|
-
import { registerGlobalLifecycle, toDisposable } from '@idlebox/common';
|
|
2
|
-
import {
|
|
3
|
-
|
|
1
|
+
import { convertCaughtError, InterruptError, prettyPrintError, registerGlobalLifecycle, toDisposable } from '@idlebox/common';
|
|
2
|
+
import { createLogger, EnableLogLevel } from '@idlebox/logger';
|
|
3
|
+
import { createInterface } from 'node:readline/promises';
|
|
4
|
+
import { inspect } from 'node:util';
|
|
5
|
+
const logger = createLogger('user', true);
|
|
6
|
+
logger.enable(EnableLogLevel.verbose);
|
|
7
|
+
class UserControl {
|
|
8
|
+
_pause = false;
|
|
9
|
+
_quit = false;
|
|
10
|
+
setPause(pause) {
|
|
11
|
+
this._pause = pause;
|
|
12
|
+
}
|
|
13
|
+
togglePause() {
|
|
14
|
+
this._pause = !this._pause;
|
|
15
|
+
logger.info `${this._pause ? '暂停' : '恢复'}状态输出`;
|
|
16
|
+
}
|
|
17
|
+
get pause() {
|
|
18
|
+
return this._pause;
|
|
19
|
+
}
|
|
20
|
+
get quit() {
|
|
21
|
+
return this._quit;
|
|
22
|
+
}
|
|
23
|
+
setQuit() {
|
|
24
|
+
this._quit = true;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
export function startUi(repo) {
|
|
28
|
+
const controller = new UserControl();
|
|
29
|
+
if (!process.stdin.isTTY) {
|
|
30
|
+
logger.info `非交互式环境,跳过用户界面`;
|
|
31
|
+
return controller;
|
|
32
|
+
}
|
|
33
|
+
const rl = createInterface(process.stdin, process.stderr);
|
|
4
34
|
registerGlobalLifecycle(toDisposable(async () => {
|
|
5
|
-
|
|
35
|
+
controller.setQuit();
|
|
36
|
+
rl.close();
|
|
6
37
|
}));
|
|
38
|
+
messageLoop(repo, controller, rl).catch((e) => {
|
|
39
|
+
if (controller.quit)
|
|
40
|
+
return;
|
|
41
|
+
if (e.code === 'ABORT_ERR') {
|
|
42
|
+
throw new InterruptError('SIGINT');
|
|
43
|
+
}
|
|
44
|
+
prettyPrintError('命令接口错误', e);
|
|
45
|
+
});
|
|
46
|
+
return controller;
|
|
47
|
+
}
|
|
48
|
+
async function messageLoop(repo, controller, rl) {
|
|
49
|
+
rl.setPrompt('> ');
|
|
50
|
+
while (!controller.quit) {
|
|
51
|
+
const line = await rl.question(`${helpText()}\n> `);
|
|
52
|
+
const [cmd, ...args] = line.trim().split(/\s+/g);
|
|
53
|
+
let found = false;
|
|
54
|
+
for (const [name, fn] of Object.entries(commands)) {
|
|
55
|
+
if (name.startsWith(cmd)) {
|
|
56
|
+
try {
|
|
57
|
+
await fn(repo, controller, args);
|
|
58
|
+
}
|
|
59
|
+
catch (e) {
|
|
60
|
+
prettyPrintError(`命令执行错误: ${name}`, convertCaughtError(e));
|
|
61
|
+
}
|
|
62
|
+
found = true;
|
|
63
|
+
break;
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
if (!found) {
|
|
67
|
+
console.error(`未知命令: ${cmd}`);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
function helpText() {
|
|
72
|
+
return '*** 帮助信息';
|
|
73
|
+
}
|
|
74
|
+
const commands = {
|
|
75
|
+
help() {
|
|
76
|
+
console.error(helpText());
|
|
77
|
+
},
|
|
78
|
+
status(repo) {
|
|
79
|
+
repo.printScreen();
|
|
80
|
+
},
|
|
81
|
+
pause(_repo, controller) {
|
|
82
|
+
controller.togglePause();
|
|
83
|
+
},
|
|
84
|
+
async dump(repo, controller, [what]) {
|
|
85
|
+
const pkg = await singleProject(repo, what);
|
|
86
|
+
if (!pkg)
|
|
87
|
+
return;
|
|
88
|
+
const worker = repo._debugWorker(pkg);
|
|
89
|
+
Object.assign(globalThis, { dumpWorker: worker });
|
|
90
|
+
console.error(inspect(worker, { customInspect: false, colors: true }));
|
|
91
|
+
logger.info `已将项目 ${pkg.name} 的 worker 对象暴露为全局变量 dumpWorker`;
|
|
92
|
+
controller.setPause(true);
|
|
93
|
+
// biome-ignore lint/suspicious/noDebugger: it's for debugging
|
|
94
|
+
debugger;
|
|
95
|
+
},
|
|
96
|
+
async print(repo, _controller, [what]) {
|
|
97
|
+
const pkg = await singleProject(repo, what);
|
|
98
|
+
if (!pkg)
|
|
99
|
+
return;
|
|
100
|
+
const output = repo._debugGetOutput(pkg);
|
|
101
|
+
if (output) {
|
|
102
|
+
console.error('\n\n');
|
|
103
|
+
console.error(output);
|
|
104
|
+
console.error('\n\n');
|
|
105
|
+
}
|
|
106
|
+
else {
|
|
107
|
+
logger.error `项目 ${pkg.name} 没有输出`;
|
|
108
|
+
}
|
|
109
|
+
},
|
|
110
|
+
async errors(repo, _controller, [what]) {
|
|
111
|
+
const errMap = repo.getErrors();
|
|
112
|
+
const pkg = await singleProject(repo, what);
|
|
113
|
+
if (!pkg)
|
|
114
|
+
return;
|
|
115
|
+
const err = errMap.get(pkg);
|
|
116
|
+
if (err) {
|
|
117
|
+
console.error('\n\n');
|
|
118
|
+
console.error(err);
|
|
119
|
+
console.error('\n\n');
|
|
120
|
+
}
|
|
121
|
+
else {
|
|
122
|
+
logger.success `项目 ${pkg.name} 没有错误`;
|
|
123
|
+
}
|
|
124
|
+
},
|
|
125
|
+
};
|
|
126
|
+
async function singleProject(repo, name) {
|
|
127
|
+
if (!name) {
|
|
128
|
+
logger.error `需要指定项目`;
|
|
129
|
+
return null;
|
|
130
|
+
}
|
|
131
|
+
const exactMatch = await repo.workspace.getPackage(name);
|
|
132
|
+
if (exactMatch) {
|
|
133
|
+
return exactMatch;
|
|
134
|
+
}
|
|
135
|
+
const packages = await repo.workspace.listPackages();
|
|
136
|
+
const pkgs = packages.filter((p) => p.name?.includes(name));
|
|
137
|
+
if (pkgs.length === 0) {
|
|
138
|
+
logger.error `没有找到匹配的项目: ${name}`;
|
|
139
|
+
return null;
|
|
140
|
+
}
|
|
141
|
+
else if (pkgs.length > 1) {
|
|
142
|
+
logger.error `找到多个匹配的项目list<${pkgs.map((e) => e.name)}>`;
|
|
143
|
+
return null;
|
|
144
|
+
}
|
|
145
|
+
return pkgs[0];
|
|
7
146
|
}
|
|
8
147
|
//# sourceMappingURL=user-interactive.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"user-interactive.js","sourceRoot":"","sources":["../../src/common/user-interactive.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"user-interactive.js","sourceRoot":"","sources":["../../src/common/user-interactive.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,31 +1,51 @@
|
|
|
1
|
-
import { type MonorepoWorkspace } from '@build-script/monorepo-lib';
|
|
1
|
+
import { type IPackageInfo, type MonorepoWorkspace } from '@build-script/monorepo-lib';
|
|
2
2
|
import { EnhancedAsyncDisposable } from '@idlebox/common';
|
|
3
3
|
import { type IMyLogger } from '@idlebox/logger';
|
|
4
|
-
|
|
4
|
+
import { ProcessIPCClient, WorkersManager } from '@mpis/server';
|
|
5
|
+
interface IOptions {
|
|
6
|
+
readonly debugChildren?: boolean;
|
|
7
|
+
}
|
|
8
|
+
export declare function createMonorepoObject(options?: IOptions): Promise<PnpmMonoRepo>;
|
|
5
9
|
export type IPnpmMonoRepo = PnpmMonoRepo;
|
|
10
|
+
interface IDumpOptions {
|
|
11
|
+
readonly depth?: number;
|
|
12
|
+
readonly summary?: boolean;
|
|
13
|
+
readonly short?: boolean;
|
|
14
|
+
readonly reverse?: boolean;
|
|
15
|
+
}
|
|
6
16
|
declare class PnpmMonoRepo extends EnhancedAsyncDisposable {
|
|
7
17
|
readonly logger: IMyLogger;
|
|
8
|
-
|
|
9
|
-
|
|
18
|
+
readonly workspace: MonorepoWorkspace;
|
|
19
|
+
readonly workersManager: WorkersManager;
|
|
10
20
|
private readonly pathvar;
|
|
11
21
|
private readonly errorMessages;
|
|
22
|
+
private readonly debugOutputs;
|
|
12
23
|
private readonly rigConfig;
|
|
13
24
|
private readonly _onStateChange;
|
|
14
25
|
readonly onStateChange: import("@idlebox/common").EventRegister<void>;
|
|
15
26
|
private readonly mode;
|
|
16
27
|
private readonly packageToWorker;
|
|
17
28
|
constructor(logger: IMyLogger, workspace: MonorepoWorkspace);
|
|
18
|
-
initialize(): Promise<void>;
|
|
29
|
+
initialize({ debugChildren }?: IOptions): Promise<void>;
|
|
19
30
|
_finalize(): Promise<void>;
|
|
20
31
|
startup(): Promise<void>;
|
|
21
32
|
private makeExecuter;
|
|
22
33
|
hasWorkerFailed(): boolean;
|
|
23
34
|
hasWorkerNotComplete(): boolean;
|
|
35
|
+
/**
|
|
36
|
+
* @internal
|
|
37
|
+
*/
|
|
38
|
+
_debugWorker(project: IPackageInfo): ProcessIPCClient | undefined;
|
|
39
|
+
/**
|
|
40
|
+
* @internal
|
|
41
|
+
*/
|
|
42
|
+
_debugGetOutput(project: IPackageInfo): string | undefined;
|
|
43
|
+
getErrors(): ReadonlyMap<IPackageInfo, string>;
|
|
24
44
|
formatErrors(): string;
|
|
25
45
|
private getRig;
|
|
26
46
|
private forkPath;
|
|
27
47
|
getProgress(includeFailed?: boolean): number;
|
|
28
|
-
dump(depth
|
|
48
|
+
dump({ depth, short, summary, reverse }?: IDumpOptions): string;
|
|
29
49
|
printScreen(short?: boolean, listAbove?: boolean): void;
|
|
30
50
|
}
|
|
31
51
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workspace.d.ts","sourceRoot":"","sources":["../../src/common/workspace.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"workspace.d.ts","sourceRoot":"","sources":["../../src/common/workspace.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmB,KAAK,YAAY,EAAE,KAAK,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AACxG,OAAO,EAA0B,uBAAuB,EAAwB,MAAM,iBAAiB,CAAC;AACxG,OAAO,EAAe,KAAK,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE9D,OAAO,EAA0B,gBAAgB,EAAqB,cAAc,EAAE,MAAM,cAAc,CAAC;AAO3G,UAAU,QAAQ;IACjB,QAAQ,CAAC,aAAa,CAAC,EAAE,OAAO,CAAC;CACjC;AAED,wBAAsB,oBAAoB,CAAC,OAAO,CAAC,EAAE,QAAQ,yBAM5D;AAED,MAAM,MAAM,aAAa,GAAG,YAAY,CAAC;AAIzC,UAAU,YAAY;IACrB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;CAC3B;AAGD,cAAM,YAAa,SAAQ,uBAAuB;aAchC,MAAM,EAAE,SAAS;aACjB,SAAS,EAAE,iBAAiB;IAd7C,SAAgB,cAAc,EAAE,cAAc,CAAC;IAC/C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAY;IACpC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAmC;IACjE,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAqC;IAClE,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAuC;IAEjE,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAuC;IACtE,SAAgB,aAAa,gDAA6B;IAE1D,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAW;IAChC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAA6C;gBAG5D,MAAM,EAAE,SAAS,EACjB,SAAS,EAAE,iBAAiB;IAevC,UAAU,CAAC,EAAE,aAAqB,EAAE,GAAE,QAAa;IAuBnD,SAAS;IAIT,OAAO;IAOb,OAAO,CAAC,YAAY;IAoEpB,eAAe;IAIf,oBAAoB;IAOpB;;OAEG;IACH,YAAY,CAAC,OAAO,EAAE,YAAY;IAIlC;;OAEG;IACH,eAAe,CAAC,OAAO,EAAE,YAAY,GAAG,MAAM,GAAG,SAAS;IAK1D,SAAS,IAAI,WAAW,CAAC,YAAY,EAAE,MAAM,CAAC;IAI9C,YAAY;IAiCZ,OAAO,CAAC,MAAM;IAWd,OAAO,CAAC,QAAQ;IAiBhB,WAAW,CAAC,aAAa,UAAO;IAYhC,IAAI,CAAC,EAAE,KAAS,EAAE,KAAa,EAAE,OAAc,EAAE,OAAe,EAAE,GAAE,YAAiB;IAyBrF,WAAW,CAAC,KAAK,UAAQ,EAAE,SAAS,UAAQ;CAS5C"}
|
package/lib/common/workspace.js
CHANGED
|
@@ -6,12 +6,13 @@ import { CompileError, ModeKind, ProcessIPCClient, WorkerClientState, WorkersMan
|
|
|
6
6
|
import { RigConfig } from '@rushstack/rig-package';
|
|
7
7
|
import { dirname, resolve } from 'node:path';
|
|
8
8
|
import { split as splitCmd } from 'split-cmd';
|
|
9
|
-
import { currentCommand } from '
|
|
10
|
-
|
|
9
|
+
import { currentCommand } from '../bin.js';
|
|
10
|
+
import { StringCollect } from './string-collect.js';
|
|
11
|
+
export async function createMonorepoObject(options) {
|
|
11
12
|
const workspace = await createWorkspace();
|
|
12
13
|
logger.debug `workspace: long<${workspace.root}>`;
|
|
13
14
|
const repo = new PnpmMonoRepo(logger, workspace);
|
|
14
|
-
await repo.initialize();
|
|
15
|
+
await repo.initialize(options);
|
|
15
16
|
return repo;
|
|
16
17
|
}
|
|
17
18
|
const colorReg = /\x1B\[[0-9;]+?m/g;
|
|
@@ -23,6 +24,7 @@ class PnpmMonoRepo extends EnhancedAsyncDisposable {
|
|
|
23
24
|
workersManager;
|
|
24
25
|
pathvar;
|
|
25
26
|
errorMessages = new Map();
|
|
27
|
+
debugOutputs = new StringCollect();
|
|
26
28
|
rigConfig = new Map(); // TODO: 太重了
|
|
27
29
|
_onStateChange = this._register(new Emitter());
|
|
28
30
|
onStateChange = this._onStateChange.event;
|
|
@@ -41,14 +43,19 @@ class PnpmMonoRepo extends EnhancedAsyncDisposable {
|
|
|
41
43
|
this.mode = currentCommand === 'watch' ? ModeKind.Watch : ModeKind.Build;
|
|
42
44
|
this.workersManager = new WorkersManager(this.mode, logger);
|
|
43
45
|
}
|
|
44
|
-
async initialize() {
|
|
46
|
+
async initialize({ debugChildren = false } = {}) {
|
|
45
47
|
await this.workspace.decoupleDependencies();
|
|
46
48
|
const projects = await this.workspace.listPackages();
|
|
47
49
|
logger.debug `workspace: ${projects.length} packages.`;
|
|
48
50
|
for (const project of projects) {
|
|
49
51
|
if (!project.packageJson.name)
|
|
50
52
|
continue;
|
|
51
|
-
const
|
|
53
|
+
const addEnvs = {};
|
|
54
|
+
if (debugChildren) {
|
|
55
|
+
addEnvs['DEBUG_LEVEL'] = 'verbose';
|
|
56
|
+
addEnvs['DEBUG'] = '* -executer:* -dispose:*';
|
|
57
|
+
}
|
|
58
|
+
const exec = this.makeExecuter(this.mode === ModeKind.Watch, project, addEnvs);
|
|
52
59
|
if (exec) {
|
|
53
60
|
const all_deps = new Set([...project.devDependencies, ...project.dependencies]);
|
|
54
61
|
this.workersManager.addWorker(exec, Array.from(all_deps));
|
|
@@ -67,7 +74,7 @@ class PnpmMonoRepo extends EnhancedAsyncDisposable {
|
|
|
67
74
|
this._register(graph);
|
|
68
75
|
await graph.startup();
|
|
69
76
|
}
|
|
70
|
-
makeExecuter(watchMode, project) {
|
|
77
|
+
makeExecuter(watchMode, project, addEnvs = {}) {
|
|
71
78
|
if (project.packageJson.scripts?.watch === undefined) {
|
|
72
79
|
this.logger.fatal `project ${project.packageJson.name} does not have a "watch" script. If it doesn't need, specify a empty string.`;
|
|
73
80
|
}
|
|
@@ -84,30 +91,36 @@ class PnpmMonoRepo extends EnhancedAsyncDisposable {
|
|
|
84
91
|
this.logger.fatal `project ${project.packageJson.name} script "${script}" is invalid.`;
|
|
85
92
|
}
|
|
86
93
|
const logger = this.logger.extend(project.name);
|
|
87
|
-
const env = {};
|
|
94
|
+
const env = { ...addEnvs };
|
|
88
95
|
env[isWindows ? 'Path' : 'PATH'] = this.forkPath(project).toString();
|
|
89
96
|
const exec = new ProcessIPCClient(project.packageJson.name, cmds, project.absolute, env, logger); // TODO: env add Path
|
|
90
97
|
if (cmds[0] !== 'mpis-run') {
|
|
91
98
|
exec.displayTitle += `[${cmds[0]}]`;
|
|
92
99
|
}
|
|
93
100
|
exec.onFailure((e) => {
|
|
101
|
+
const output = e.output ?? '## onFailure: no output from process ##';
|
|
102
|
+
this.debugOutputs.append(project, output);
|
|
94
103
|
if (e instanceof CompileError) {
|
|
95
|
-
this.errorMessages.set(project, `${e.message}\n${
|
|
104
|
+
this.errorMessages.set(project, `${e.message}\n${output}`);
|
|
96
105
|
}
|
|
97
106
|
else {
|
|
98
107
|
this.errorMessages.set(project, e.stack || e.message);
|
|
99
108
|
}
|
|
100
109
|
this._onStateChange.fireNoError();
|
|
101
110
|
});
|
|
102
|
-
exec.onSuccess(() => {
|
|
111
|
+
exec.onSuccess((e) => {
|
|
112
|
+
const output = e.output ?? '## onSuccess: no output from process ##';
|
|
113
|
+
this.debugOutputs.append(project, output);
|
|
103
114
|
this.errorMessages.delete(project);
|
|
104
115
|
this._onStateChange.fireNoError();
|
|
105
116
|
});
|
|
106
117
|
exec.onStart(() => {
|
|
118
|
+
this.debugOutputs.clear(project);
|
|
107
119
|
this.errorMessages.delete(project);
|
|
108
120
|
this._onStateChange.fireNoError();
|
|
109
121
|
});
|
|
110
122
|
exec.onTerminate(() => {
|
|
123
|
+
this.debugOutputs.append(project, '## onTerminate: process terminated ##');
|
|
111
124
|
try {
|
|
112
125
|
this._onStateChange.fireNoError();
|
|
113
126
|
}
|
|
@@ -131,6 +144,22 @@ class PnpmMonoRepo extends EnhancedAsyncDisposable {
|
|
|
131
144
|
return state !== WorkerClientState.COMPILE_SUCCEED && state !== WorkerClientState.COMPILE_FAILED;
|
|
132
145
|
});
|
|
133
146
|
}
|
|
147
|
+
/**
|
|
148
|
+
* @internal
|
|
149
|
+
*/
|
|
150
|
+
_debugWorker(project) {
|
|
151
|
+
return this.packageToWorker.get(project);
|
|
152
|
+
}
|
|
153
|
+
/**
|
|
154
|
+
* @internal
|
|
155
|
+
*/
|
|
156
|
+
_debugGetOutput(project) {
|
|
157
|
+
const worker = this.packageToWorker.get(project);
|
|
158
|
+
return worker?.outputStream.toString();
|
|
159
|
+
}
|
|
160
|
+
getErrors() {
|
|
161
|
+
return this.errorMessages;
|
|
162
|
+
}
|
|
134
163
|
formatErrors() {
|
|
135
164
|
if (this.errorMessages.size === 0)
|
|
136
165
|
return '';
|
|
@@ -194,7 +223,7 @@ class PnpmMonoRepo extends EnhancedAsyncDisposable {
|
|
|
194
223
|
.toArray().length;
|
|
195
224
|
return Math.floor((100 * completed) / count);
|
|
196
225
|
}
|
|
197
|
-
dump(depth = 0, short = false) {
|
|
226
|
+
dump({ depth = 0, short = false, summary = true, reverse = false } = {}) {
|
|
198
227
|
const graph = this.workersManager.finalize();
|
|
199
228
|
let graphTxt;
|
|
200
229
|
if (depth <= 0) {
|
|
@@ -206,7 +235,8 @@ class PnpmMonoRepo extends EnhancedAsyncDisposable {
|
|
|
206
235
|
result.push(node.customInspect());
|
|
207
236
|
}
|
|
208
237
|
}
|
|
209
|
-
|
|
238
|
+
if (summary)
|
|
239
|
+
result.push(graph.debugFormatSummary());
|
|
210
240
|
return result.join('\n');
|
|
211
241
|
}
|
|
212
242
|
else {
|
|
@@ -214,17 +244,19 @@ class PnpmMonoRepo extends EnhancedAsyncDisposable {
|
|
|
214
244
|
}
|
|
215
245
|
}
|
|
216
246
|
else {
|
|
217
|
-
graphTxt = graph.debugFormatGraph(depth);
|
|
247
|
+
graphTxt = graph.debugFormatGraph(depth, reverse);
|
|
218
248
|
}
|
|
249
|
+
if (!summary)
|
|
250
|
+
return graphTxt;
|
|
219
251
|
return `${graphTxt}\n${graph.debugFormatSummary()}`;
|
|
220
252
|
}
|
|
221
253
|
printScreen(short = false, listAbove = false) {
|
|
222
254
|
let r = this.formatErrors();
|
|
223
255
|
if (listAbove) {
|
|
224
|
-
r = this.dump(
|
|
256
|
+
r = this.dump({ short }) + r;
|
|
225
257
|
}
|
|
226
258
|
else {
|
|
227
|
-
r += this.dump(
|
|
259
|
+
r += this.dump({ short });
|
|
228
260
|
}
|
|
229
261
|
console.error(r);
|
|
230
262
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workspace.js","sourceRoot":"","sources":["../../src/common/workspace.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"workspace.js","sourceRoot":"","sources":["../../src/common/workspace.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mpis/monorepo",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "0.0.
|
|
4
|
+
"version": "0.0.19",
|
|
5
5
|
"keywords": [],
|
|
6
6
|
"bin": {
|
|
7
|
-
"build-manager": "./loader/bin.js"
|
|
7
|
+
"build-manager": "./loader/bin.js",
|
|
8
|
+
"mpis-build": "./loader/bin.js"
|
|
8
9
|
},
|
|
9
10
|
"exports": {
|
|
10
11
|
"./package.json": "./package.json"
|
|
@@ -12,28 +13,28 @@
|
|
|
12
13
|
"dependencies": {
|
|
13
14
|
"@rushstack/rig-package": "^0.6.0",
|
|
14
15
|
"split-cmd": "^1.1.0",
|
|
15
|
-
"@build-script/monorepo-lib": "^0.0.
|
|
16
|
-
"@idlebox/
|
|
17
|
-
"@idlebox/
|
|
18
|
-
"@idlebox/
|
|
19
|
-
"@idlebox/
|
|
20
|
-
"@mpis/server": "^0.0.
|
|
21
|
-
"@idlebox/source-map-support": "^0.0.
|
|
16
|
+
"@build-script/monorepo-lib": "^0.0.22",
|
|
17
|
+
"@idlebox/common": "^1.5.17",
|
|
18
|
+
"@idlebox/logger": "^0.0.21",
|
|
19
|
+
"@idlebox/node": "^1.4.27",
|
|
20
|
+
"@idlebox/args": "^0.0.26",
|
|
21
|
+
"@mpis/server": "^0.0.18",
|
|
22
|
+
"@idlebox/source-map-support": "^0.0.19",
|
|
22
23
|
"@idlebox/terminal-control": "^0.0.2"
|
|
23
24
|
},
|
|
24
25
|
"devDependencies": {
|
|
25
|
-
"@types/node": "^25.0
|
|
26
|
+
"@types/node": "^25.5.0",
|
|
26
27
|
"@build-script/baseline-rig": "latest",
|
|
27
|
-
"@idlebox/esbuild-executer": "^0.0.
|
|
28
|
-
"@mpis/
|
|
29
|
-
"@mpis/
|
|
28
|
+
"@idlebox/esbuild-executer": "^0.0.15",
|
|
29
|
+
"@mpis/run": "^0.0.22",
|
|
30
|
+
"@mpis/typescript": "^0.0.21"
|
|
30
31
|
},
|
|
31
32
|
"sideEffects": false,
|
|
32
33
|
"license": "MIT",
|
|
33
34
|
"author": "GongT <admin@gongt.me>",
|
|
34
35
|
"repository": {
|
|
35
36
|
"type": "git",
|
|
36
|
-
"url": "https://github.com/GongT/baobao",
|
|
37
|
+
"url": "git+https://github.com/GongT/baobao.git",
|
|
37
38
|
"directory": "@mpis/monorepo"
|
|
38
39
|
},
|
|
39
40
|
"scripts": {
|
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
import { type IPackageInfo, type MonorepoWorkspace } from '@build-script/monorepo-lib';
|
|
2
|
+
import type { ISubArgsReaderApi } from '@idlebox/args';
|
|
3
|
+
import { argv } from '@idlebox/args/default';
|
|
4
|
+
import type { DeepReadonly, IPackageJson } from '@idlebox/common';
|
|
5
|
+
import { logger } from '@idlebox/logger';
|
|
6
|
+
import { shutdown } from '@idlebox/node';
|
|
7
|
+
import { createMonorepoObject } from '../common/workspace.js';
|
|
8
|
+
|
|
9
|
+
type NamePair = readonly [string, string];
|
|
10
|
+
const outerScope: string[] = [];
|
|
11
|
+
const scopes = new Map<string, string[]>();
|
|
12
|
+
|
|
13
|
+
export async function runAnalyze(cmd: ISubArgsReaderApi) {
|
|
14
|
+
const packageName = cmd.at(0);
|
|
15
|
+
if (argv.unused().length) {
|
|
16
|
+
logger.error`Unknown arguments: ${argv.unused().join(', ')}`;
|
|
17
|
+
return shutdown(1);
|
|
18
|
+
}
|
|
19
|
+
if (!packageName) {
|
|
20
|
+
logger.error`包名参数必须指定。`;
|
|
21
|
+
return shutdown(1);
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
const repo = await createMonorepoObject();
|
|
25
|
+
await repo._finalize();
|
|
26
|
+
|
|
27
|
+
const pkg = await repo.workspace.getPackage(packageName);
|
|
28
|
+
if (!pkg) {
|
|
29
|
+
logger.error`项目中没有找到 "${packageName}"。`;
|
|
30
|
+
return shutdown(1);
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
const { node } = makeNode(pkg.packageJson, '');
|
|
34
|
+
await walk(repo.workspace, pkg, node);
|
|
35
|
+
|
|
36
|
+
const scopesOut: string[] = [];
|
|
37
|
+
for (const [scopeName, lines] of scopes.entries()) {
|
|
38
|
+
scopesOut.push(
|
|
39
|
+
`// scope ---- ${scopeName}`,
|
|
40
|
+
`subgraph "cluster_${scopeName}" {`,
|
|
41
|
+
`\tfillcolor=cornsilk;`,
|
|
42
|
+
`\tstyle=filled;`,
|
|
43
|
+
`\tlabel = "Scope @${scopeName}";`,
|
|
44
|
+
...lines.map((e) => `\t${e}`),
|
|
45
|
+
`}`,
|
|
46
|
+
`// end ---- ${scopeName}`,
|
|
47
|
+
'',
|
|
48
|
+
);
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
console.log(`digraph Tree {
|
|
52
|
+
splines=ortho;
|
|
53
|
+
node [shape=rect,style=filled,fillcolor=darkolivegreen3];
|
|
54
|
+
${scopesOut.join('\n\t')}
|
|
55
|
+
|
|
56
|
+
// outer scope ----
|
|
57
|
+
${outerScope.join('\n\t')}
|
|
58
|
+
}`);
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
let guid = 1;
|
|
62
|
+
const nodesRegistry = new Map<string, NamePair>();
|
|
63
|
+
function makeNode(packageJson: DeepReadonly<IPackageJson>, scopeName: string) {
|
|
64
|
+
const registryKey = `${scopeName}:${packageJson.name}`;
|
|
65
|
+
const exist = nodesRegistry.get(registryKey);
|
|
66
|
+
if (exist)
|
|
67
|
+
return {
|
|
68
|
+
exists: true,
|
|
69
|
+
node: exist,
|
|
70
|
+
};
|
|
71
|
+
|
|
72
|
+
const deps = getDeps(packageJson);
|
|
73
|
+
const localNum = deps.filter((d) => d.local).length;
|
|
74
|
+
const devNum = deps.filter((d) => d.dev).length;
|
|
75
|
+
const prodNum = deps.filter((d) => !d.dev).length;
|
|
76
|
+
const name = `node_${guid++}`;
|
|
77
|
+
const node = `"${name}" [label="${packageJson.name}\\n依赖: ${devNum}+${prodNum} (${localNum})",style=filled,fillcolor=ghostwhite];`;
|
|
78
|
+
|
|
79
|
+
if (scopeName) {
|
|
80
|
+
scope(scopeName).unshift(node);
|
|
81
|
+
} else {
|
|
82
|
+
outerScope.push(node);
|
|
83
|
+
}
|
|
84
|
+
const r: NamePair = [scopeName, name];
|
|
85
|
+
nodesRegistry.set(registryKey, r);
|
|
86
|
+
return { exists: false, node: r };
|
|
87
|
+
}
|
|
88
|
+
function getDeps(packageJson: DeepReadonly<IPackageJson>) {
|
|
89
|
+
type Dep = { name: string; local: boolean; dev: boolean };
|
|
90
|
+
const r: Dep[] = [];
|
|
91
|
+
for (const [dep, version] of Object.entries(packageJson.dependencies ?? {})) {
|
|
92
|
+
const local = version.startsWith('workspace:');
|
|
93
|
+
r.push({ name: dep, local, dev: false });
|
|
94
|
+
}
|
|
95
|
+
for (const [dep, version] of Object.entries(packageJson.devDependencies ?? {})) {
|
|
96
|
+
const local = version.startsWith('workspace:');
|
|
97
|
+
r.push({ name: dep, local, dev: true });
|
|
98
|
+
}
|
|
99
|
+
return r;
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
async function walk(context: MonorepoWorkspace, pkg: IPackageInfo, parent: NamePair, level = 1) {
|
|
103
|
+
const tabs = ' '.repeat(level);
|
|
104
|
+
|
|
105
|
+
logger.info`${tabs}Analyzing ${pkg.name}...`;
|
|
106
|
+
for (const dep of pkg.dependencies) {
|
|
107
|
+
const isDev = Object.hasOwn(pkg.packageJson.devDependencies ?? {}, dep);
|
|
108
|
+
logger.verbose`${tabs} * ${dep} (${isDev ? ', dev' : ''})`;
|
|
109
|
+
|
|
110
|
+
const styles = [];
|
|
111
|
+
if (isDev) {
|
|
112
|
+
styles.push('style=dashed', 'color=darkorange3');
|
|
113
|
+
} else {
|
|
114
|
+
styles.push('color=darkorchid3');
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
const depPkg = await context.getPackage(dep);
|
|
118
|
+
if (!depPkg) {
|
|
119
|
+
throw new Error(`${pkg.name} 中有未找到的依赖 ${dep}`);
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
const { node: child, exists } = makeNode(depPkg.packageJson, `level_${level}`);
|
|
123
|
+
connect(parent, child, styles);
|
|
124
|
+
|
|
125
|
+
if (!exists) {
|
|
126
|
+
await walk(context, depPkg, child, level + 1);
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
function scope(scopeName: string) {
|
|
132
|
+
if (!scopeName) throw new Error('scopeName is empty');
|
|
133
|
+
const arr = scopes.get(scopeName);
|
|
134
|
+
if (arr) return arr;
|
|
135
|
+
const newArr: string[] = [];
|
|
136
|
+
scopes.set(scopeName, newArr);
|
|
137
|
+
return newArr;
|
|
138
|
+
}
|
|
139
|
+
function connect(from: NamePair, to: NamePair, styles: string[] = []) {
|
|
140
|
+
if (from[0] && from[0] === to[0]) {
|
|
141
|
+
scope(from[0]).push(`\t"${from[1]}" -> "${to[1]}" [${styles.join(',')}];`);
|
|
142
|
+
} else {
|
|
143
|
+
if (from[0]) {
|
|
144
|
+
styles.push(`ltail="cluster_${from[0]}"`);
|
|
145
|
+
}
|
|
146
|
+
if (to[0]) {
|
|
147
|
+
styles.push(`lhead="cluster_${to[0]}"`);
|
|
148
|
+
}
|
|
149
|
+
outerScope.push(`"${from[1]}" -> "${to[1]}" [${styles.join(',')}];`);
|
|
150
|
+
}
|
|
151
|
+
}
|
|
@@ -5,8 +5,8 @@ import { isShuttingDown, setExitCodeIfNot, shutdown } from '@idlebox/node';
|
|
|
5
5
|
import { terminal } from '@idlebox/terminal-control';
|
|
6
6
|
import { CompileError } from '@mpis/server';
|
|
7
7
|
import { url } from 'node:inspector';
|
|
8
|
-
import { debugMode } from '
|
|
9
|
-
import { createMonorepoObject } from '
|
|
8
|
+
import { debugMode } from '../common/args.js';
|
|
9
|
+
import { createMonorepoObject } from '../common/workspace.js';
|
|
10
10
|
|
|
11
11
|
export async function runBuild() {
|
|
12
12
|
if (argv.unused().length) {
|