@build-script/package-tools 0.0.26 → 0.0.28
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/bins/load.devel.js +15 -0
- package/{load.js → bins/load.js} +1 -1
- package/lib/commands/detect-package-change.d.ts.map +1 -1
- package/lib/commands/detect-package-change.js +1 -1
- package/lib/commands/detect-package-change.js.map +1 -1
- package/lib/commands/monorepo-publish.d.ts.map +1 -1
- package/lib/commands/monorepo-publish.js +31 -15
- package/lib/commands/monorepo-publish.js.map +1 -1
- package/lib/commands/run-if-version-mismatch.d.ts.map +1 -1
- package/lib/commands/run-if-version-mismatch.js +1 -1
- package/lib/commands/run-if-version-mismatch.js.map +1 -1
- package/lib/common/cache/native.npm.d.ts +4 -1
- package/lib/common/cache/native.npm.d.ts.map +1 -1
- package/lib/common/cache/native.npm.js +13 -10
- package/lib/common/cache/native.npm.js.map +1 -1
- package/lib/common/git/git.d.ts +3 -1
- package/lib/common/git/git.d.ts.map +1 -1
- package/lib/common/git/git.js +12 -10
- package/lib/common/git/git.js.map +1 -1
- package/lib/common/package-manager/driver.abstract.d.ts +3 -1
- package/lib/common/package-manager/driver.abstract.d.ts.map +1 -1
- package/lib/common/package-manager/driver.abstract.js +16 -14
- package/lib/common/package-manager/driver.abstract.js.map +1 -1
- package/lib/common/package-manager/package-manager.d.ts +2 -1
- package/lib/common/package-manager/package-manager.d.ts.map +1 -1
- package/lib/common/package-manager/package-manager.js +4 -3
- package/lib/common/package-manager/package-manager.js.map +1 -1
- package/lib/common/package-manager/proxy.d.ts +3 -2
- package/lib/common/package-manager/proxy.d.ts.map +1 -1
- package/lib/common/package-manager/proxy.js +6 -6
- package/lib/common/package-manager/proxy.js.map +1 -1
- package/lib/common/shared-jobs/detect-change-job.d.ts.map +1 -1
- package/lib/common/shared-jobs/detect-change-job.js +12 -13
- package/lib/common/shared-jobs/detect-change-job.js.map +1 -1
- package/lib/common/taball/decompress.d.ts +2 -1
- package/lib/common/taball/decompress.d.ts.map +1 -1
- package/lib/common/taball/decompress.js +2 -2
- package/lib/common/taball/decompress.js.map +1 -1
- package/lib/common/taball/file-download.d.ts +8 -1
- package/lib/common/taball/file-download.d.ts.map +1 -1
- package/lib/common/taball/file-download.js +107 -97
- package/lib/common/taball/file-download.js.map +1 -1
- package/lib/common/temp-work-folder.d.ts +3 -1
- package/lib/common/temp-work-folder.d.ts.map +1 -1
- package/lib/common/temp-work-folder.js +9 -7
- package/lib/common/temp-work-folder.js.map +1 -1
- package/lib/common/version.generated.d.ts +1 -1
- package/lib/common/version.generated.js +1 -1
- package/package.json +16 -17
- package/src/commands/detect-package-change.ts +1 -2
- package/src/commands/monorepo-publish.ts +33 -15
- package/src/commands/run-if-version-mismatch.ts +1 -2
- package/src/common/cache/native.npm.ts +13 -10
- package/src/common/git/git.ts +13 -10
- package/src/common/package-manager/driver.abstract.ts +14 -13
- package/src/common/package-manager/package-manager.ts +10 -4
- package/src/common/package-manager/proxy.ts +6 -6
- package/src/common/shared-jobs/detect-change-job.ts +13 -13
- package/src/common/taball/decompress.ts +2 -2
- package/src/common/taball/file-download.ts +113 -105
- package/src/common/temp-work-folder.ts +7 -6
- package/src/common/version.generated.ts +1 -1
- package/src/tsconfig.json +0 -1
- package/src/command-file-map.generator.ts +0 -10
- package/src/common/version.generator.ts +0 -19
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"file-download.js","sourceRoot":"","sources":["../../../src/common/taball/file-download.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"file-download.js","sourceRoot":"","sources":["../../../src/common/taball/file-download.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
import type { WorkspaceBase } from '@build-script/monorepo-lib';
|
|
2
|
+
import { type IMyLogger } from '@idlebox/cli';
|
|
2
3
|
export declare class TempWorkingFolder {
|
|
3
4
|
private readonly workspace;
|
|
5
|
+
readonly logger: IMyLogger;
|
|
4
6
|
readonly path: string;
|
|
5
7
|
private _exists;
|
|
6
|
-
constructor(workspace: WorkspaceBase, name: string, __internal_isChild?: boolean);
|
|
8
|
+
constructor(workspace: WorkspaceBase, name: string, logger?: IMyLogger, __internal_isChild?: boolean);
|
|
7
9
|
resolve(p0: string, ...paths: string[]): TempWorkingFolder;
|
|
8
10
|
joinpath(p0: string, ...paths: string[]): string;
|
|
9
11
|
mkdir(): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"temp-work-folder.d.ts","sourceRoot":"","sources":["../../src/common/temp-work-folder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"temp-work-folder.d.ts","sourceRoot":"","sources":["../../src/common/temp-work-folder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,EAA2B,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AAWvE,qBAAa,iBAAiB;IAK5B,OAAO,CAAC,QAAQ,CAAC,SAAS;aAEV,MAAM,EAAE,SAAS;IANlC,SAAgB,IAAI,EAAE,MAAM,CAAC;IAC7B,OAAO,CAAC,OAAO,CAAS;gBAGN,SAAS,EAAE,aAAa,EACzC,IAAI,EAAE,MAAM,EACI,MAAM,GAAE,SAAyB,EACjD,kBAAkB,UAAQ;IAS3B,OAAO,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,KAAK,EAAE,MAAM,EAAE;IAItC,QAAQ,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,KAAK,EAAE,MAAM,EAAE;IAQjC,KAAK;IAMX,IAAI,MAAM,YAET;IAEK,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,GAAG,UAAU,EAAE,OAAO,SAAU;;;;;;IAiBhF,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,SAAM;IAIlC,OAAO;CAQP"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
+
import { logger as defaultLogger } from '@idlebox/cli';
|
|
1
2
|
import { registerGlobalLifecycle } from '@idlebox/common';
|
|
2
3
|
import { writeJsonFile } from '@idlebox/json-edit';
|
|
3
|
-
import { logger } from '@idlebox/cli';
|
|
4
4
|
import { emptyDir } from '@idlebox/node';
|
|
5
5
|
import { randomBytes } from 'node:crypto';
|
|
6
6
|
import { rmSync } from 'node:fs';
|
|
@@ -10,10 +10,12 @@ import { isDebugMode } from './functions/cli.js';
|
|
|
10
10
|
import { decompressPack } from './taball/decompress.js';
|
|
11
11
|
export class TempWorkingFolder {
|
|
12
12
|
workspace;
|
|
13
|
+
logger;
|
|
13
14
|
path;
|
|
14
15
|
_exists = false;
|
|
15
|
-
constructor(workspace, name, __internal_isChild = false) {
|
|
16
|
+
constructor(workspace, name, logger = defaultLogger, __internal_isChild = false) {
|
|
16
17
|
this.workspace = workspace;
|
|
18
|
+
this.logger = logger;
|
|
17
19
|
if (!__internal_isChild) {
|
|
18
20
|
registerGlobalLifecycle(this);
|
|
19
21
|
name += `-${randomBytes(6).toString('hex')}`;
|
|
@@ -21,7 +23,7 @@ export class TempWorkingFolder {
|
|
|
21
23
|
this.path = resolve(workspace.temp, name);
|
|
22
24
|
}
|
|
23
25
|
resolve(p0, ...paths) {
|
|
24
|
-
return new TempWorkingFolder(this.workspace, this.joinpath(p0, ...paths), true);
|
|
26
|
+
return new TempWorkingFolder(this.workspace, this.joinpath(p0, ...paths), this.logger, true);
|
|
25
27
|
}
|
|
26
28
|
joinpath(p0, ...paths) {
|
|
27
29
|
const r = resolve(this.path, p0, ...paths);
|
|
@@ -31,7 +33,7 @@ export class TempWorkingFolder {
|
|
|
31
33
|
throw new Error(`路径不在临时目录内: ${r}`);
|
|
32
34
|
}
|
|
33
35
|
async mkdir() {
|
|
34
|
-
logger.debug
|
|
36
|
+
this.logger.debug `临时工作目录: long<${this.path}>`;
|
|
35
37
|
await mkdir(this.path, { recursive: true });
|
|
36
38
|
this._exists = true;
|
|
37
39
|
}
|
|
@@ -53,15 +55,15 @@ export class TempWorkingFolder {
|
|
|
53
55
|
return packageJson;
|
|
54
56
|
}
|
|
55
57
|
unpack(tarball, dest = '.') {
|
|
56
|
-
return decompressPack(tarball, resolve(this.path, dest));
|
|
58
|
+
return decompressPack(tarball, resolve(this.path, dest), this.logger);
|
|
57
59
|
}
|
|
58
60
|
dispose() {
|
|
59
61
|
if (!isDebugMode) {
|
|
60
|
-
logger.debug
|
|
62
|
+
this.logger.debug ` * 删除临时目录: long<${this.path}>`;
|
|
61
63
|
rmSync(this.path, { force: true, recursive: true });
|
|
62
64
|
}
|
|
63
65
|
else {
|
|
64
|
-
logger.debug
|
|
66
|
+
this.logger.debug ` * 由于是调试模式,不删除临时文件夹: long<${this.path}>`;
|
|
65
67
|
}
|
|
66
68
|
}
|
|
67
69
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"temp-work-folder.js","sourceRoot":"","sources":["../../src/common/temp-work-folder.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"temp-work-folder.js","sourceRoot":"","sources":["../../src/common/temp-work-folder.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
* https://github.com/GongT/baobao
|
|
7
7
|
*
|
|
8
8
|
******************************************************************************/
|
|
9
|
-
export declare const self_package_version = "0.0.
|
|
9
|
+
export declare const self_package_version = "0.0.28";
|
|
10
10
|
export declare const self_package_name = "@build-script/package-tools";
|
|
11
11
|
export declare const self_package_repository = "https://github.com/GongT/baobao";
|
|
12
12
|
//# sourceMappingURL=version.generated.d.ts.map
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
* https://github.com/GongT/baobao
|
|
11
11
|
*
|
|
12
12
|
******************************************************************************/
|
|
13
|
-
export const self_package_version = "0.0.
|
|
13
|
+
export const self_package_version = "0.0.28";
|
|
14
14
|
export const self_package_name = "@build-script/package-tools";
|
|
15
15
|
export const self_package_repository = "https://github.com/GongT/baobao";
|
|
16
16
|
//# sourceMappingURL=version.generated.js.map
|
package/package.json
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@build-script/package-tools",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "0.0.
|
|
4
|
+
"version": "0.0.28",
|
|
5
5
|
"description": "A Node.js package managing tool",
|
|
6
6
|
"bin": {
|
|
7
|
-
"package-tools": "./load.js",
|
|
8
|
-
"njspkg": "./load.js"
|
|
7
|
+
"package-tools": "./bins/load.devel.js",
|
|
8
|
+
"njspkg": "./bins/load.devel.js"
|
|
9
9
|
},
|
|
10
10
|
"exports": {
|
|
11
11
|
"./package.json": "./package.json"
|
|
@@ -22,16 +22,16 @@
|
|
|
22
22
|
"targz": "^1.0.1",
|
|
23
23
|
"tiny-async-pool": "^2.1.0",
|
|
24
24
|
"yaml": "^2.8.2",
|
|
25
|
-
"@build-script/monorepo-lib": "^0.0.
|
|
26
|
-
"@idlebox/
|
|
27
|
-
"@idlebox/
|
|
28
|
-
"@idlebox/ensure-symlink": "^1.0.
|
|
29
|
-
"@idlebox/json-edit": "^0.0.
|
|
30
|
-
"@idlebox/node": "^1.4.
|
|
31
|
-
"@idlebox/
|
|
32
|
-
"@idlebox/source-map-support": "^0.0.
|
|
33
|
-
"@idlebox/
|
|
34
|
-
"@idlebox/
|
|
25
|
+
"@build-script/monorepo-lib": "^0.0.26",
|
|
26
|
+
"@idlebox/common": "^1.5.24",
|
|
27
|
+
"@idlebox/dependency-graph": "^0.0.23",
|
|
28
|
+
"@idlebox/ensure-symlink": "^1.0.41",
|
|
29
|
+
"@idlebox/json-edit": "^0.0.15",
|
|
30
|
+
"@idlebox/node": "^1.4.32",
|
|
31
|
+
"@idlebox/cli": "^0.0.16",
|
|
32
|
+
"@idlebox/source-map-support": "^0.0.21",
|
|
33
|
+
"@idlebox/terminal-control": "^0.0.5",
|
|
34
|
+
"@idlebox/unshare": "^0.0.13"
|
|
35
35
|
},
|
|
36
36
|
"devDependencies": {
|
|
37
37
|
"@types/cacache": "^20.0.1",
|
|
@@ -43,10 +43,9 @@
|
|
|
43
43
|
"@types/targz": "^1.0.5",
|
|
44
44
|
"@types/tiny-async-pool": "^2.0.3",
|
|
45
45
|
"@types/tinycolor2": "^1.4.6",
|
|
46
|
-
"@
|
|
47
|
-
"@build-script/codegen": "^1.0.
|
|
48
|
-
"@
|
|
49
|
-
"@mpis/run": "^0.0.25"
|
|
46
|
+
"@idlebox/cli-static-generator": "^0.0.16",
|
|
47
|
+
"@build-script/codegen": "^1.0.24",
|
|
48
|
+
"@build-script/baseline-rig": "latest"
|
|
50
49
|
},
|
|
51
50
|
"sideEffects": false,
|
|
52
51
|
"license": "MIT",
|
|
@@ -9,8 +9,6 @@ import { increaseVersion } from '../common/package-manager/package-json.js';
|
|
|
9
9
|
import { createPackageManager } from '../common/package-manager/package-manager.js';
|
|
10
10
|
import { executeChangeDetect } from '../common/shared-jobs/detect-change-job.js';
|
|
11
11
|
|
|
12
|
-
process.env.COREPACK_ENABLE_STRICT = '0';
|
|
13
|
-
|
|
14
12
|
export class Command extends CommandDefine {
|
|
15
13
|
protected override readonly _usage = '';
|
|
16
14
|
protected override readonly _description = '本地运行npm pack并与npm上的最新版本对比差异';
|
|
@@ -23,6 +21,7 @@ export class Command extends CommandDefine {
|
|
|
23
21
|
}
|
|
24
22
|
|
|
25
23
|
export async function main() {
|
|
24
|
+
process.env.COREPACK_ENABLE_STRICT = '0';
|
|
26
25
|
const unshareFrom = argv.single(['--unshare']);
|
|
27
26
|
const autoInc = argv.flag(['--bump']) > 0;
|
|
28
27
|
const jsonOutput = argv.flag(['--json']) > 0 || !process.stdout.isTTY;
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { applyPublishWorkspace, createWorkspace, normalizePackageName, type IPackageInfo, type MonorepoWorkspace } from '@build-script/monorepo-lib';
|
|
2
|
-
import { app, argv, CommandDefine, logger } from '@idlebox/cli';
|
|
2
|
+
import { app, argv, CommandDefine, createLogger, logger, NodejsOutput, type IMyLogger } from '@idlebox/cli';
|
|
3
3
|
import { prettyPrintError } from '@idlebox/common';
|
|
4
4
|
import { Job, JobGraphBuilder, JobState } from '@idlebox/dependency-graph';
|
|
5
5
|
import { loadJsonFile, writeJsonFileBack } from '@idlebox/json-edit';
|
|
6
|
-
import { commandInPath, emptyDir, setExitCodeIfNot, shutdown, workingDirectory, writeFileIfChange } from '@idlebox/node';
|
|
6
|
+
import { CollectingStream, commandInPath, emptyDir, setExitCodeIfNot, shutdown, workingDirectory, writeFileIfChange } from '@idlebox/node';
|
|
7
7
|
import { CSI } from '@idlebox/terminal-control/constants';
|
|
8
8
|
import { FsNodeType, spawnReadonlyFileSystemWithCommand } from '@idlebox/unshare';
|
|
9
9
|
import { execaNode } from 'execa';
|
|
@@ -35,6 +35,8 @@ export class Command extends CommandDefine {
|
|
|
35
35
|
class BuildPackageJob extends Job<void> {
|
|
36
36
|
private shouldPublish = '';
|
|
37
37
|
public initialVersion = true;
|
|
38
|
+
public override readonly logger: IMyLogger;
|
|
39
|
+
private readonly collector;
|
|
38
40
|
|
|
39
41
|
constructor(
|
|
40
42
|
name: string,
|
|
@@ -45,17 +47,28 @@ class BuildPackageJob extends Job<void> {
|
|
|
45
47
|
) {
|
|
46
48
|
super(name, deps);
|
|
47
49
|
|
|
50
|
+
const collector = new CollectingStream();
|
|
51
|
+
const stream = new NodejsOutput({
|
|
52
|
+
stream: collector,
|
|
53
|
+
colorEnabled: logger.colorEnabled,
|
|
54
|
+
});
|
|
55
|
+
|
|
56
|
+
this.collector = collector;
|
|
57
|
+
this.logger = createLogger('pub', { colors: false, console: stream });
|
|
58
|
+
|
|
48
59
|
this.detect = unshareExecuter ? this.unsharedDetect : this.sharedDetect;
|
|
49
60
|
this.pack = unshareExecuter ? this.unsharedPack : this.sharedPack;
|
|
50
61
|
}
|
|
51
62
|
|
|
52
|
-
private readonly logText: string[] = [];
|
|
53
|
-
log(text: string) {
|
|
54
|
-
this.logText.push(text);
|
|
55
|
-
}
|
|
56
63
|
flushLog() {
|
|
57
|
-
|
|
58
|
-
this.
|
|
64
|
+
const output = this.collector.getOutput();
|
|
65
|
+
this.collector.clear();
|
|
66
|
+
return output;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
log(message: string) {
|
|
70
|
+
// biome-ignore lint/style/useTemplate: too simple
|
|
71
|
+
this.collector.write(message + '\n');
|
|
59
72
|
}
|
|
60
73
|
|
|
61
74
|
getPackagePath() {
|
|
@@ -167,7 +180,7 @@ class BuildPackageJob extends Job<void> {
|
|
|
167
180
|
try {
|
|
168
181
|
this.log(` 🔍 ${CSI}38;5;14m检查包${CSI}0m`);
|
|
169
182
|
|
|
170
|
-
const pm = await createPackageManager(PackageManagerUsageKind.Write, this.workspace, this.project.absolute);
|
|
183
|
+
const pm = await createPackageManager(PackageManagerUsageKind.Write, this.workspace, this.project.absolute, this.logger);
|
|
171
184
|
const { changedFiles, hasChange, remoteVersion, packageJsonDiff } = await this.detect(pm);
|
|
172
185
|
const shouldPublish = hasChange || changedFiles.length > 0;
|
|
173
186
|
let localVersion = this.project.packageJson.version;
|
|
@@ -259,10 +272,15 @@ export async function main() {
|
|
|
259
272
|
|
|
260
273
|
const projects = await workspace.listPackages();
|
|
261
274
|
|
|
262
|
-
let concurrency = Number.parseInt(argv.single(['--concurrency']) || '
|
|
263
|
-
if (
|
|
264
|
-
|
|
265
|
-
|
|
275
|
+
let concurrency = Number.parseInt(argv.single(['--concurrency']) || '-1', 10);
|
|
276
|
+
if (concurrency <= 0) {
|
|
277
|
+
if (app.debug) {
|
|
278
|
+
concurrency = 1;
|
|
279
|
+
logger.warn`由于设置了--debug参数,运行模式默认为单线程,设置 --concurrency 参数可改变此设置`;
|
|
280
|
+
} else {
|
|
281
|
+
concurrency = process.env.CI ? 10 : 3;
|
|
282
|
+
logger.info`使用默认并发数 ${concurrency}`;
|
|
283
|
+
}
|
|
266
284
|
}
|
|
267
285
|
const builder = new JobGraphBuilder(concurrency, logger);
|
|
268
286
|
|
|
@@ -290,8 +308,8 @@ export async function main() {
|
|
|
290
308
|
job.onStateChange(() => {
|
|
291
309
|
if (job.isStopped()) {
|
|
292
310
|
indexDisplay++;
|
|
293
|
-
|
|
294
|
-
|
|
311
|
+
const output = job.flushLog();
|
|
312
|
+
process.stderr.write(`\n${CSI}K📦 [${indexDisplay.toFixed(0).padStart(width)}/${shouldPublishProjects.length}] ${project.name}\n${output}\n`);
|
|
295
313
|
|
|
296
314
|
const e = job.getLastError();
|
|
297
315
|
if (e) {
|
|
@@ -9,8 +9,6 @@ import { distTagInput } from '../common/functions/cli.js';
|
|
|
9
9
|
import { PackageManagerUsageKind } from '../common/package-manager/driver.abstract.js';
|
|
10
10
|
import { createPackageManager } from '../common/package-manager/package-manager.js';
|
|
11
11
|
|
|
12
|
-
process.env.COREPACK_ENABLE_STRICT = '0';
|
|
13
|
-
|
|
14
12
|
export class Command extends CommandDefine {
|
|
15
13
|
protected override readonly _usage = `\x1B[38;5;9m--\x1B[0m command to run`;
|
|
16
14
|
protected override readonly _description = '如果版本号改变,则运行命令';
|
|
@@ -35,6 +33,7 @@ export class Command extends CommandDefine {
|
|
|
35
33
|
};
|
|
36
34
|
}
|
|
37
35
|
export async function main(argv: IArgsReaderApi) {
|
|
36
|
+
process.env.COREPACK_ENABLE_STRICT = '0';
|
|
38
37
|
const noCache = argv.flag(['--no-cache']) > 0;
|
|
39
38
|
const flushCache = argv.flag(['--flush']) > 0;
|
|
40
39
|
const onlyNewer = argv.flag(['--newer']) > 0;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { logger } from '@idlebox/cli';
|
|
1
|
+
import { logger as defaultLogger, type IMyLogger } from '@idlebox/cli';
|
|
2
2
|
import { sleep, type IPackageJson } from '@idlebox/common';
|
|
3
3
|
import { get as cacheGet, rm as cacheRm } from 'cacache';
|
|
4
4
|
import { rm } from 'node:fs/promises';
|
|
@@ -8,7 +8,7 @@ import { json as npmFetchJson } from 'npm-registry-fetch';
|
|
|
8
8
|
import { DEFAULT_NPM_REGISTRY } from '../package-manager/constant.js';
|
|
9
9
|
import type { IPackageManager } from '../package-manager/package-manager.js';
|
|
10
10
|
import { getProxyValue } from '../package-manager/proxy.js';
|
|
11
|
-
import {
|
|
11
|
+
import { FileDownloader } from '../taball/file-download.js';
|
|
12
12
|
import { self_package_name, self_package_repository, self_package_version } from '../version.generated.js';
|
|
13
13
|
import { escapePackageNameToFilename } from './escape-package-path.js';
|
|
14
14
|
|
|
@@ -44,17 +44,18 @@ export class NpmCacheHandler {
|
|
|
44
44
|
private readonly pm: IPackageManager,
|
|
45
45
|
private readonly registry: string,
|
|
46
46
|
public readonly path: string,
|
|
47
|
+
public readonly logger = defaultLogger,
|
|
47
48
|
) {
|
|
48
49
|
this.cache_path = resolve(path, '_cacache');
|
|
49
50
|
}
|
|
50
51
|
|
|
51
52
|
deleteMetadata(name: string) {
|
|
52
|
-
return deleteNpmCache(this.cache_path, name, this.registry);
|
|
53
|
+
return deleteNpmCache(this.cache_path, name, this.registry, this.logger);
|
|
53
54
|
}
|
|
54
55
|
|
|
55
56
|
async fetchMetadata(name: string, cacheMode = CacheMode.Normal) {
|
|
56
57
|
const registry = await this.pm.getNpmRegistry();
|
|
57
|
-
return fetchNpmWithCache(this.cache_path, name, registry, { mode: cacheMode });
|
|
58
|
+
return fetchNpmWithCache(this.cache_path, name, registry, { mode: cacheMode, logger: this.logger });
|
|
58
59
|
}
|
|
59
60
|
|
|
60
61
|
async fetchVersion(name: string, distTag = 'latest', cacheMode = CacheMode.Normal) {
|
|
@@ -64,7 +65,7 @@ export class NpmCacheHandler {
|
|
|
64
65
|
}
|
|
65
66
|
const version = getVersion(json, distTag);
|
|
66
67
|
if (!version) {
|
|
67
|
-
logger.warn(` ! 找不到版本信息(${name}@${distTag})`);
|
|
68
|
+
this.logger.warn(` ! 找不到版本信息(${name}@${distTag})`);
|
|
68
69
|
return;
|
|
69
70
|
}
|
|
70
71
|
return version;
|
|
@@ -80,7 +81,7 @@ export class NpmCacheHandler {
|
|
|
80
81
|
if (!r) {
|
|
81
82
|
throw new Error(`无此版本: ${name} = ${distTag}`);
|
|
82
83
|
}
|
|
83
|
-
return await
|
|
84
|
+
return await new FileDownloader(this.logger).download(r.dist.tarball, this.getTarballFile(name, distTag));
|
|
84
85
|
}
|
|
85
86
|
|
|
86
87
|
public deleteTarball(name: string, distTag: string) {
|
|
@@ -110,16 +111,18 @@ export enum CacheMode {
|
|
|
110
111
|
interface IMyOpts {
|
|
111
112
|
mode?: CacheMode;
|
|
112
113
|
maxRetry?: number;
|
|
114
|
+
logger?: IMyLogger;
|
|
113
115
|
}
|
|
114
116
|
const defOpt: Required<IMyOpts> = {
|
|
115
117
|
mode: CacheMode.Normal,
|
|
116
118
|
maxRetry: 3,
|
|
119
|
+
logger: defaultLogger,
|
|
117
120
|
};
|
|
118
121
|
|
|
119
122
|
export async function fetchNpmWithCache(path: string, name: string, registry: string, _options?: IMyOpts) {
|
|
120
|
-
logger
|
|
123
|
+
const { logger, ...options }: Required<IMyOpts> = Object.assign({}, defOpt, _options);
|
|
121
124
|
|
|
122
|
-
|
|
125
|
+
logger.debug(` * npm-registry-fetch: ${registry} :: ${name}`);
|
|
123
126
|
|
|
124
127
|
let _try_cnt = 0;
|
|
125
128
|
let retry = options.maxRetry;
|
|
@@ -130,7 +133,7 @@ export async function fetchNpmWithCache(path: string, name: string, registry: st
|
|
|
130
133
|
_try_cnt++;
|
|
131
134
|
retry--;
|
|
132
135
|
try {
|
|
133
|
-
const proxy = getProxyValue(registry);
|
|
136
|
+
const proxy = getProxyValue(registry, logger);
|
|
134
137
|
json = (await npmFetchJson(name, {
|
|
135
138
|
cache: path,
|
|
136
139
|
registry: registry,
|
|
@@ -172,7 +175,7 @@ export async function fetchNpmWithCache(path: string, name: string, registry: st
|
|
|
172
175
|
return json;
|
|
173
176
|
}
|
|
174
177
|
|
|
175
|
-
async function deleteNpmCache(path: string, name: string, registry?: string) {
|
|
178
|
+
async function deleteNpmCache(path: string, name: string, registry?: string, logger: IMyLogger = defaultLogger) {
|
|
176
179
|
const require = createRequire(import.meta.url);
|
|
177
180
|
const cacheKey = require('make-fetch-happen/lib/cache/key.js');
|
|
178
181
|
const registries = new Set([DEFAULT_NPM_REGISTRY, 'https://registry.npmmirror.com/']);
|
package/src/common/git/git.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { logger } from '@idlebox/cli';
|
|
1
|
+
import { logger as defaultLogger, type IMyLogger } from '@idlebox/cli';
|
|
2
2
|
import { commandInPath, execLazyError, exists } from '@idlebox/node';
|
|
3
3
|
import { rm } from 'node:fs/promises';
|
|
4
4
|
import { resolve } from 'node:path';
|
|
@@ -12,38 +12,41 @@ export async function requireGitInPath() {
|
|
|
12
12
|
}
|
|
13
13
|
|
|
14
14
|
export class GitWorkingTree {
|
|
15
|
-
constructor(
|
|
15
|
+
constructor(
|
|
16
|
+
public readonly path: string,
|
|
17
|
+
public readonly logger: IMyLogger = defaultLogger,
|
|
18
|
+
) {}
|
|
16
19
|
|
|
17
20
|
protected _exec(cmds: string[]) {
|
|
18
21
|
return execLazyError('git', cmds, { cwd: this.path, verbose: isVerbose });
|
|
19
22
|
}
|
|
20
23
|
|
|
21
24
|
async init() {
|
|
22
|
-
logger.debug('初始化git工作区: %s', this.path);
|
|
25
|
+
this.logger.debug('初始化git工作区: %s', this.path);
|
|
23
26
|
const gitDir = resolve(this.path, '.git');
|
|
24
27
|
if (await exists(gitDir)) {
|
|
25
|
-
logger.debug(' - 删除已有.git文件夹');
|
|
28
|
+
this.logger.debug(' - 删除已有.git文件夹');
|
|
26
29
|
await rm(gitDir, { recursive: true, force: true });
|
|
27
30
|
}
|
|
28
31
|
await this._exec(['init']);
|
|
29
32
|
await this._exec(['add', '.']);
|
|
30
33
|
await this._exec(['commit', '-m', 'Init']);
|
|
31
|
-
logger.debug('(初始化完成)');
|
|
34
|
+
this.logger.debug('(初始化完成)');
|
|
32
35
|
}
|
|
33
36
|
|
|
34
37
|
async commitChanges() {
|
|
35
|
-
logger.debug('检测文件更改:');
|
|
38
|
+
this.logger.debug('检测文件更改:');
|
|
36
39
|
|
|
37
40
|
const { stdout: testOut } = await this._exec(['status']);
|
|
38
41
|
const statusOut = testOut.toString().trim();
|
|
39
42
|
if (statusOut.includes('nothing to commit, working tree clean')) {
|
|
40
|
-
logger.debug(' git工作区状态: 干净');
|
|
43
|
+
this.logger.debug(' git工作区状态: 干净');
|
|
41
44
|
return [];
|
|
42
45
|
}
|
|
43
46
|
// if (isDebugMode) {
|
|
44
47
|
// await execa('git', ['diff'], { cwd: this.path, stdio: ['ignore', 2, 2] });
|
|
45
48
|
// }
|
|
46
|
-
logger.debug(' git工作区状态: 有修改');
|
|
49
|
+
this.logger.debug(' git工作区状态: 有修改');
|
|
47
50
|
|
|
48
51
|
await this._exec(['add', '.']);
|
|
49
52
|
await this._exec(['commit', '-m', 'DetectChangedFiles']);
|
|
@@ -61,7 +64,7 @@ export class GitWorkingTree {
|
|
|
61
64
|
}
|
|
62
65
|
const files = lines.slice(titleLine + 1);
|
|
63
66
|
|
|
64
|
-
logger.debug(' 文件更改: %d 个 (%s%s)', files.length, files.slice(0, 5).join(', '), files.length > 5 ? ' ...' : '');
|
|
67
|
+
this.logger.debug(' 文件更改: %d 个 (%s%s)', files.length, files.slice(0, 5).join(', '), files.length > 5 ? ' ...' : '');
|
|
65
68
|
|
|
66
69
|
return files.map((item) => {
|
|
67
70
|
return item.replace('Would remove ', '');
|
|
@@ -70,7 +73,7 @@ export class GitWorkingTree {
|
|
|
70
73
|
|
|
71
74
|
async fileDiff(file: string) {
|
|
72
75
|
const { stdout } = await this._exec(['diff', '--color=never', '-U0', `HEAD~1`, file]);
|
|
73
|
-
logger.verbose(stdout.trimEnd());
|
|
76
|
+
this.logger.verbose(stdout.trimEnd());
|
|
74
77
|
const lines = stdout.toString().trim().split('\n').slice(4);
|
|
75
78
|
|
|
76
79
|
let diff = formatChangeSideBySide('Published', 'Local');
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { WorkspaceBase } from '@build-script/monorepo-lib';
|
|
2
|
-
import { logger } from '@idlebox/cli';
|
|
2
|
+
import { logger as defaultLogger, type IMyLogger } from '@idlebox/cli';
|
|
3
3
|
import { ensureLinkTarget } from '@idlebox/ensure-symlink';
|
|
4
4
|
import { execLazyError, exists, writeFileIfChange } from '@idlebox/node';
|
|
5
5
|
import { execa } from 'execa';
|
|
@@ -31,8 +31,9 @@ export abstract class PackageManager {
|
|
|
31
31
|
public readonly usageKind: PackageManagerUsageKind,
|
|
32
32
|
public readonly workspace: WorkspaceBase,
|
|
33
33
|
subdir = process.cwd(),
|
|
34
|
+
public readonly logger: IMyLogger = defaultLogger,
|
|
34
35
|
) {
|
|
35
|
-
this.configTemp = new TempWorkingFolder(this.workspace, 'package-manager', true);
|
|
36
|
+
this.configTemp = new TempWorkingFolder(this.workspace, 'package-manager', logger, true);
|
|
36
37
|
this.projectPath = resolve(workspace.root, subdir);
|
|
37
38
|
if (!this.projectPath.startsWith(workspace.root)) {
|
|
38
39
|
throw new Error(`project "${this.projectPath}" is outside the workspace root`);
|
|
@@ -45,15 +46,15 @@ export abstract class PackageManager {
|
|
|
45
46
|
|
|
46
47
|
public async pack(saveAs: string) {
|
|
47
48
|
const pkg = await this.loadPackageJson();
|
|
48
|
-
logger.log`打包项目 (${pkg.publishConfig?.['packCommand'] ? 'custom' : 'default'}): relative<${this.projectPath}> -> relative<${saveAs}>`;
|
|
49
|
+
this.logger.log`打包项目 (${pkg.publishConfig?.['packCommand'] ? 'custom' : 'default'}): relative<${this.projectPath}> -> relative<${saveAs}>`;
|
|
49
50
|
if (pkg.publishConfig?.['packCommand']) {
|
|
50
51
|
const cmds = typeof pkg.publishConfig['packCommand'] === 'string' ? splitCmd(pkg.publishConfig['packCommand']) : pkg.publishConfig['packCommand'];
|
|
51
52
|
|
|
52
53
|
if (!Array.isArray(cmds)) {
|
|
53
|
-
logger.fatal`publishConfig.packCommand必须是字符串或字符串数组, 但实际是: ${typeof pkg.publishConfig['packCommand']}`;
|
|
54
|
+
this.logger.fatal`publishConfig.packCommand必须是字符串或字符串数组, 但实际是: ${typeof pkg.publishConfig['packCommand']}`;
|
|
54
55
|
}
|
|
55
56
|
|
|
56
|
-
logger.verbose` - 自定义打包命令: ${Array.from(cmds)}`;
|
|
57
|
+
this.logger.verbose` - 自定义打包命令: ${Array.from(cmds)}`;
|
|
57
58
|
|
|
58
59
|
const [cmd, ...args] = cmds;
|
|
59
60
|
await execLazyError(cmd, [...args, '--out', saveAs], {
|
|
@@ -110,25 +111,25 @@ export abstract class PackageManager {
|
|
|
110
111
|
const scope = await this.getScope();
|
|
111
112
|
if (scope) {
|
|
112
113
|
const { stdout } = await this._execGetOut(cwd, ['config', 'get', `${scope}:${key}`], true, binary);
|
|
113
|
-
logger.debug('$ %s config get %s:%s -> %s (cwd: %s)', binary, scope, key, stdout, cwd);
|
|
114
|
+
this.logger.debug('$ %s config get %s:%s -> %s (cwd: %s)', binary, scope, key, stdout, cwd);
|
|
114
115
|
if (`${stdout}` !== 'undefined') {
|
|
115
116
|
return stdout;
|
|
116
117
|
}
|
|
117
118
|
}
|
|
118
119
|
const { stdout } = await this._execGetOut(cwd, ['config', 'get', key], true, binary);
|
|
119
|
-
logger.debug('$ %s config get %s -> %s (cwd: %s)', binary, key, stdout, cwd);
|
|
120
|
+
this.logger.debug('$ %s config get %s -> %s (cwd: %s)', binary, key, stdout, cwd);
|
|
120
121
|
return stdout === 'undefined' ? undefined : stdout;
|
|
121
122
|
}
|
|
122
123
|
|
|
123
124
|
protected abstract _uploadTarball(pack: string, cwd: string): Promise<IUploadResult>;
|
|
124
125
|
public async uploadTarball(pack: string, cwd: string = this.projectPath) {
|
|
125
|
-
logger.debug(`上传压缩包: ${pack}`);
|
|
126
|
+
this.logger.debug(`上传压缩包: ${pack}`);
|
|
126
127
|
try {
|
|
127
128
|
const r = await this._uploadTarball(pack, cwd);
|
|
128
|
-
logger.debug` 发布成功: ${r.name} @ ${r.version} [${r.published}]`;
|
|
129
|
+
this.logger.debug` 发布成功: ${r.name} @ ${r.version} [${r.published}]`;
|
|
129
130
|
return r;
|
|
130
131
|
} catch (e: any) {
|
|
131
|
-
logger.debug` tarball发布失败`;
|
|
132
|
+
this.logger.debug` tarball发布失败`;
|
|
132
133
|
throw e;
|
|
133
134
|
}
|
|
134
135
|
}
|
|
@@ -161,14 +162,14 @@ export abstract class PackageManager {
|
|
|
161
162
|
if (!this._cachedReg) {
|
|
162
163
|
switch (registryInput) {
|
|
163
164
|
case 'detect':
|
|
164
|
-
logger.debug(`检测registry地址: ${registryInput}`);
|
|
165
|
+
this.logger.debug(`检测registry地址: ${registryInput}`);
|
|
165
166
|
this._cachedReg = await this.getConfig('registry');
|
|
166
167
|
break;
|
|
167
168
|
default:
|
|
168
169
|
if (!registryInput.startsWith('https://')) {
|
|
169
170
|
throw new Error(`不支持的--registry协议: ${registryInput}`);
|
|
170
171
|
}
|
|
171
|
-
logger.debug('使用命令行提供的registry地址 (%s)', registryInput);
|
|
172
|
+
this.logger.debug('使用命令行提供的registry地址 (%s)', registryInput);
|
|
172
173
|
this._cachedReg = registryInput;
|
|
173
174
|
}
|
|
174
175
|
}
|
|
@@ -183,7 +184,7 @@ export abstract class PackageManager {
|
|
|
183
184
|
const path = await this.getConfig('cache');
|
|
184
185
|
if (!path) throw new Error('npm config get cache返回为空');
|
|
185
186
|
|
|
186
|
-
this._cache_handler = new NpmCacheHandler(this, registry, path);
|
|
187
|
+
this._cache_handler = new NpmCacheHandler(this, registry, path, this.logger);
|
|
187
188
|
}
|
|
188
189
|
return this._cache_handler;
|
|
189
190
|
}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { WorkspaceBase } from '@build-script/monorepo-lib';
|
|
2
|
+
import { logger as defaultLogger, type IMyLogger } from '@idlebox/cli';
|
|
2
3
|
import { commandInPath, PathEnvironment } from '@idlebox/node';
|
|
3
4
|
import type { PackageManager, PackageManagerUsageKind } from './driver.abstract.js';
|
|
4
5
|
import { NPM } from './driver.npm.js';
|
|
@@ -7,13 +8,18 @@ import { reconfigureProxyWithNpmrc } from './proxy.js';
|
|
|
7
8
|
|
|
8
9
|
export type IPackageManager = PackageManager;
|
|
9
10
|
|
|
10
|
-
type PackageManagerConstructor = new (usage: PackageManagerUsageKind, workspace: WorkspaceBase, subdir?: string) => IPackageManager;
|
|
11
|
+
type PackageManagerConstructor = new (usage: PackageManagerUsageKind, workspace: WorkspaceBase, subdir?: string, logger?: IMyLogger) => IPackageManager;
|
|
11
12
|
|
|
12
13
|
let pmCls: PackageManagerConstructor | undefined;
|
|
13
14
|
|
|
14
|
-
export async function createPackageManager(
|
|
15
|
+
export async function createPackageManager(
|
|
16
|
+
usage: PackageManagerUsageKind,
|
|
17
|
+
workspace: WorkspaceBase,
|
|
18
|
+
subdir?: string,
|
|
19
|
+
logger: IMyLogger = defaultLogger,
|
|
20
|
+
): Promise<IPackageManager> {
|
|
15
21
|
if (pmCls) {
|
|
16
|
-
return new pmCls(usage, workspace, subdir);
|
|
22
|
+
return new pmCls(usage, workspace, subdir, logger);
|
|
17
23
|
}
|
|
18
24
|
|
|
19
25
|
const supports: Record<string, PackageManagerConstructor> = { pnpm: PNPM, npm: NPM };
|
|
@@ -22,7 +28,7 @@ export async function createPackageManager(usage: PackageManagerUsageKind, works
|
|
|
22
28
|
continue;
|
|
23
29
|
}
|
|
24
30
|
|
|
25
|
-
const pm = new Cls(usage, workspace, subdir);
|
|
31
|
+
const pm = new Cls(usage, workspace, subdir, logger);
|
|
26
32
|
|
|
27
33
|
await reconfigureProxyWithNpmrc(pm);
|
|
28
34
|
|