@reliverse/dler 2.1.4 → 2.1.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cmds/build/cmd.js +599 -646
- package/dist/cmds/clean/cmd.js +136 -139
- package/dist/cmds/init/cmd.js +37 -40
- package/dist/cmds/integrate/cmd.js +61 -64
- package/dist/cmds/perf/cmd.js +229 -227
- package/dist/cmds/port/cmd.js +49 -52
- package/dist/cmds/publish/cmd.js +228 -243
- package/dist/cmds/senv/cmd.js +199 -198
- package/dist/cmds/shell/cmd.js +38 -41
- package/dist/cmds/tsc/cmd.js +101 -104
- package/dist/cmds/update/cmd.js +140 -137
- package/package.json +11 -11
package/dist/cmds/clean/cmd.js
CHANGED
|
@@ -1,148 +1,145 @@
|
|
|
1
1
|
import { replaceExportsInPackages } from "@reliverse/dler-helpers";
|
|
2
|
-
import {
|
|
3
|
-
defineCmd,
|
|
4
|
-
defineCmdArgs,
|
|
5
|
-
defineCmdCfg
|
|
6
|
-
} from "@reliverse/dler-launcher";
|
|
2
|
+
import { defineArgs, defineCommand } from "@reliverse/dler-launcher";
|
|
7
3
|
import { logger } from "@reliverse/dler-logger";
|
|
8
4
|
import { runCleanOnAllPackages } from "./impl.js";
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
5
|
+
export default defineCommand({
|
|
6
|
+
meta: {
|
|
7
|
+
name: "clean",
|
|
8
|
+
description: "Clean build artifacts and generated files from workspace packages. Supports presets for different types of files. Works in both monorepo and single-repo modes.",
|
|
9
|
+
examples: [
|
|
10
|
+
"dler clean --presets build",
|
|
11
|
+
"dler clean --custom 'dist/,*.log'",
|
|
12
|
+
"dler clean --presets build --custom '*.tmp'",
|
|
13
|
+
"dler clean --presets all --force",
|
|
14
|
+
"dler clean --presets db,frontend --dry-run",
|
|
15
|
+
"dler clean --presets deps --deleteLockFiles",
|
|
16
|
+
"dler clean --subdirs --presets build-tools",
|
|
17
|
+
"dler clean --ignore '@reliverse/*'",
|
|
18
|
+
"dler clean --presets frontend --verbose",
|
|
19
|
+
"dler clean --presets all --dry-run --verbose",
|
|
20
|
+
"",
|
|
21
|
+
"# Preset Examples:",
|
|
22
|
+
"dler clean --presets build # Clean dist/, dev-dist/, target/",
|
|
23
|
+
"dler clean --presets db # Clean _generated/",
|
|
24
|
+
"dler clean --presets cms # Clean .basehub/",
|
|
25
|
+
"dler clean --presets frontend # Clean .next/, .expo/, routeTree.gen.ts",
|
|
26
|
+
"dler clean --presets docs # Clean .source/",
|
|
27
|
+
"dler clean --presets email # Clean .react-email/",
|
|
28
|
+
"dler clean --presets build-tools # Clean .turbo/, .vercel/, .wrangler/",
|
|
29
|
+
"dler clean --presets deps # Clean node_modules/",
|
|
30
|
+
"dler clean --presets all # Clean everything",
|
|
31
|
+
"",
|
|
32
|
+
"# Custom Pattern Examples:",
|
|
33
|
+
"dler clean --custom 'dist/,*.log' # Clean dist/ and log files",
|
|
34
|
+
"dler clean --custom '*.tmp,*.cache' # Clean temporary and cache files",
|
|
35
|
+
"dler clean --custom 'build/,coverage/' # Clean build and coverage directories",
|
|
36
|
+
"dler clean --presets build --custom '*.log' # Combine presets and custom patterns",
|
|
37
|
+
"",
|
|
38
|
+
"# Monorepo Examples:",
|
|
39
|
+
"dler clean # Clean dist/ in all packages",
|
|
40
|
+
"dler clean --presets frontend # Clean frontend artifacts in all packages",
|
|
41
|
+
"dler clean --ignore '@reliverse/*' # Skip packages matching pattern",
|
|
42
|
+
"dler clean --presets all --force # Clean everything without confirmation",
|
|
43
|
+
"",
|
|
44
|
+
"# Single-repo Examples:",
|
|
45
|
+
"dler clean --subdirs # Search recursively in subdirectories",
|
|
46
|
+
"dler clean --subdirs --presets all # Clean everything recursively",
|
|
47
|
+
"",
|
|
48
|
+
"# Safety Examples:",
|
|
49
|
+
"dler clean --dry-run # Preview what would be deleted",
|
|
50
|
+
"dler clean --presets deps --dry-run # Preview dependency cleanup",
|
|
51
|
+
"dler clean --verbose # Show detailed progress",
|
|
52
|
+
"",
|
|
53
|
+
"# Advanced Examples:",
|
|
54
|
+
"dler clean --presets deps --deleteLockFiles # Include lock files",
|
|
55
|
+
"dler clean --presets all --force --verbose # Clean everything with details",
|
|
56
|
+
"dler clean --cwd /path/to/project --presets build"
|
|
57
|
+
]
|
|
58
|
+
},
|
|
59
|
+
args: defineArgs({
|
|
60
|
+
presets: {
|
|
61
|
+
type: "string",
|
|
62
|
+
description: "Comma-separated presets to clean: build,db,cms,frontend,docs,email,build-tools,deps,all"
|
|
63
|
+
},
|
|
64
|
+
custom: {
|
|
65
|
+
type: "string",
|
|
66
|
+
description: "Comma-separated custom patterns to clean (e.g., 'dist/,*.log,node_modules/')"
|
|
67
|
+
},
|
|
68
|
+
ignore: {
|
|
69
|
+
type: "string",
|
|
70
|
+
description: "Package(s) to ignore (supports wildcards like @reliverse/*)"
|
|
71
|
+
},
|
|
72
|
+
cwd: {
|
|
73
|
+
type: "string",
|
|
74
|
+
description: "Working directory (monorepo root)"
|
|
75
|
+
},
|
|
76
|
+
subdirs: {
|
|
77
|
+
type: "boolean",
|
|
78
|
+
description: "Search recursively in subdirectories (single-repo mode only)"
|
|
79
|
+
},
|
|
80
|
+
dryRun: {
|
|
81
|
+
type: "boolean",
|
|
82
|
+
description: "Preview what would be deleted without actually deleting"
|
|
83
|
+
},
|
|
84
|
+
force: {
|
|
85
|
+
type: "boolean",
|
|
86
|
+
description: "Required flag to proceed with deletion (no prompts, args-only)"
|
|
87
|
+
},
|
|
88
|
+
verbose: {
|
|
89
|
+
type: "boolean",
|
|
90
|
+
description: "Verbose mode with detailed logging"
|
|
91
|
+
},
|
|
92
|
+
deleteLockFiles: {
|
|
93
|
+
type: "boolean",
|
|
94
|
+
description: "Include lock files (bun.lock, package-lock.json, etc.) when using deps preset"
|
|
95
|
+
},
|
|
96
|
+
replaceExports: {
|
|
97
|
+
type: "boolean",
|
|
98
|
+
description: "Replace exports from ./src/*.ts to ./dist/*.js before cleaning (default: true)"
|
|
99
|
+
},
|
|
100
|
+
replaceExportsIgnorePackages: {
|
|
101
|
+
type: "string",
|
|
102
|
+
description: "Packages to ignore when replacing exports (supports glob patterns like @reliverse/*)"
|
|
14
103
|
}
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
);
|
|
104
|
+
}),
|
|
105
|
+
run: async ({ args }) => {
|
|
106
|
+
try {
|
|
107
|
+
if (typeof process.versions.bun === "undefined") {
|
|
108
|
+
logger.error("\u274C This command requires Bun runtime. Sorry.");
|
|
109
|
+
process.exit(1);
|
|
110
|
+
}
|
|
111
|
+
const shouldReplaceExports = args.replaceExports !== false;
|
|
112
|
+
if (shouldReplaceExports) {
|
|
113
|
+
if (args.verbose) {
|
|
114
|
+
logger.info(
|
|
115
|
+
"\u{1F4DD} Replacing exports from ./dist/*.js to ./src/*.ts before cleaning..."
|
|
116
|
+
);
|
|
117
|
+
}
|
|
118
|
+
await replaceExportsInPackages({
|
|
119
|
+
direction: "js-to-ts",
|
|
120
|
+
cwd: args.cwd,
|
|
121
|
+
ignorePackages: args.replaceExportsIgnorePackages,
|
|
122
|
+
verbose: args.verbose
|
|
123
|
+
});
|
|
124
|
+
}
|
|
125
|
+
const results = await runCleanOnAllPackages(args.ignore, args.cwd, args);
|
|
126
|
+
if (results.hasErrors) {
|
|
127
|
+
process.exit(1);
|
|
128
|
+
}
|
|
129
|
+
if (args.dryRun) {
|
|
130
|
+
logger.success("\n\u2705 Clean preview completed!");
|
|
131
|
+
} else {
|
|
132
|
+
logger.success("\n\u2705 Clean completed successfully!");
|
|
133
|
+
}
|
|
134
|
+
process.exit(0);
|
|
135
|
+
} catch (error) {
|
|
136
|
+
logger.error("\n\u274C Clean failed:");
|
|
137
|
+
if (error instanceof Error) {
|
|
138
|
+
logger.error(error.message);
|
|
139
|
+
} else {
|
|
140
|
+
logger.error(String(error));
|
|
21
141
|
}
|
|
22
|
-
await replaceExportsInPackages({
|
|
23
|
-
direction: "js-to-ts",
|
|
24
|
-
cwd: args.cwd,
|
|
25
|
-
ignorePackages: args.replaceExportsIgnorePackages,
|
|
26
|
-
verbose: args.verbose
|
|
27
|
-
});
|
|
28
|
-
}
|
|
29
|
-
const results = await runCleanOnAllPackages(args.ignore, args.cwd, args);
|
|
30
|
-
if (results.hasErrors) {
|
|
31
142
|
process.exit(1);
|
|
32
143
|
}
|
|
33
|
-
if (args.dryRun) {
|
|
34
|
-
logger.success("\n\u2705 Clean preview completed!");
|
|
35
|
-
} else {
|
|
36
|
-
logger.success("\n\u2705 Clean completed successfully!");
|
|
37
|
-
}
|
|
38
|
-
process.exit(0);
|
|
39
|
-
} catch (error) {
|
|
40
|
-
logger.error("\n\u274C Clean failed:");
|
|
41
|
-
if (error instanceof Error) {
|
|
42
|
-
logger.error(error.message);
|
|
43
|
-
} else {
|
|
44
|
-
logger.error(String(error));
|
|
45
|
-
}
|
|
46
|
-
process.exit(1);
|
|
47
144
|
}
|
|
48
|
-
};
|
|
49
|
-
const cleanCmdArgs = defineCmdArgs({
|
|
50
|
-
presets: {
|
|
51
|
-
type: "string",
|
|
52
|
-
description: "Comma-separated presets to clean: build,db,cms,frontend,docs,email,build-tools,deps,all"
|
|
53
|
-
},
|
|
54
|
-
custom: {
|
|
55
|
-
type: "string",
|
|
56
|
-
description: "Comma-separated custom patterns to clean (e.g., 'dist/,*.log,node_modules/')"
|
|
57
|
-
},
|
|
58
|
-
ignore: {
|
|
59
|
-
type: "string",
|
|
60
|
-
description: "Package(s) to ignore (supports wildcards like @reliverse/*)"
|
|
61
|
-
},
|
|
62
|
-
cwd: {
|
|
63
|
-
type: "string",
|
|
64
|
-
description: "Working directory (monorepo root)"
|
|
65
|
-
},
|
|
66
|
-
subdirs: {
|
|
67
|
-
type: "boolean",
|
|
68
|
-
description: "Search recursively in subdirectories (single-repo mode only)"
|
|
69
|
-
},
|
|
70
|
-
dryRun: {
|
|
71
|
-
type: "boolean",
|
|
72
|
-
description: "Preview what would be deleted without actually deleting"
|
|
73
|
-
},
|
|
74
|
-
force: {
|
|
75
|
-
type: "boolean",
|
|
76
|
-
description: "Required flag to proceed with deletion (no prompts, args-only)"
|
|
77
|
-
},
|
|
78
|
-
verbose: {
|
|
79
|
-
type: "boolean",
|
|
80
|
-
description: "Verbose mode with detailed logging"
|
|
81
|
-
},
|
|
82
|
-
deleteLockFiles: {
|
|
83
|
-
type: "boolean",
|
|
84
|
-
description: "Include lock files (bun.lock, package-lock.json, etc.) when using deps preset"
|
|
85
|
-
},
|
|
86
|
-
replaceExports: {
|
|
87
|
-
type: "boolean",
|
|
88
|
-
description: "Replace exports from ./src/*.ts to ./dist/*.js before cleaning (default: true)"
|
|
89
|
-
},
|
|
90
|
-
replaceExportsIgnorePackages: {
|
|
91
|
-
type: "string",
|
|
92
|
-
description: "Packages to ignore when replacing exports (supports glob patterns like @reliverse/*)"
|
|
93
|
-
}
|
|
94
|
-
});
|
|
95
|
-
const cleanCmdCfg = defineCmdCfg({
|
|
96
|
-
name: "clean",
|
|
97
|
-
description: "Clean build artifacts and generated files from workspace packages. Supports presets for different types of files. Works in both monorepo and single-repo modes.",
|
|
98
|
-
examples: [
|
|
99
|
-
"dler clean --presets build",
|
|
100
|
-
"dler clean --custom 'dist/,*.log'",
|
|
101
|
-
"dler clean --presets build --custom '*.tmp'",
|
|
102
|
-
"dler clean --presets all --force",
|
|
103
|
-
"dler clean --presets db,frontend --dry-run",
|
|
104
|
-
"dler clean --presets deps --deleteLockFiles",
|
|
105
|
-
"dler clean --subdirs --presets build-tools",
|
|
106
|
-
"dler clean --ignore '@reliverse/*'",
|
|
107
|
-
"dler clean --presets frontend --verbose",
|
|
108
|
-
"dler clean --presets all --dry-run --verbose",
|
|
109
|
-
"",
|
|
110
|
-
"# Preset Examples:",
|
|
111
|
-
"dler clean --presets build # Clean dist/, dev-dist/, target/",
|
|
112
|
-
"dler clean --presets db # Clean _generated/",
|
|
113
|
-
"dler clean --presets cms # Clean .basehub/",
|
|
114
|
-
"dler clean --presets frontend # Clean .next/, .expo/, routeTree.gen.ts",
|
|
115
|
-
"dler clean --presets docs # Clean .source/",
|
|
116
|
-
"dler clean --presets email # Clean .react-email/",
|
|
117
|
-
"dler clean --presets build-tools # Clean .turbo/, .vercel/, .wrangler/",
|
|
118
|
-
"dler clean --presets deps # Clean node_modules/",
|
|
119
|
-
"dler clean --presets all # Clean everything",
|
|
120
|
-
"",
|
|
121
|
-
"# Custom Pattern Examples:",
|
|
122
|
-
"dler clean --custom 'dist/,*.log' # Clean dist/ and log files",
|
|
123
|
-
"dler clean --custom '*.tmp,*.cache' # Clean temporary and cache files",
|
|
124
|
-
"dler clean --custom 'build/,coverage/' # Clean build and coverage directories",
|
|
125
|
-
"dler clean --presets build --custom '*.log' # Combine presets and custom patterns",
|
|
126
|
-
"",
|
|
127
|
-
"# Monorepo Examples:",
|
|
128
|
-
"dler clean # Clean dist/ in all packages",
|
|
129
|
-
"dler clean --presets frontend # Clean frontend artifacts in all packages",
|
|
130
|
-
"dler clean --ignore '@reliverse/*' # Skip packages matching pattern",
|
|
131
|
-
"dler clean --presets all --force # Clean everything without confirmation",
|
|
132
|
-
"",
|
|
133
|
-
"# Single-repo Examples:",
|
|
134
|
-
"dler clean --subdirs # Search recursively in subdirectories",
|
|
135
|
-
"dler clean --subdirs --presets all # Clean everything recursively",
|
|
136
|
-
"",
|
|
137
|
-
"# Safety Examples:",
|
|
138
|
-
"dler clean --dry-run # Preview what would be deleted",
|
|
139
|
-
"dler clean --presets deps --dry-run # Preview dependency cleanup",
|
|
140
|
-
"dler clean --verbose # Show detailed progress",
|
|
141
|
-
"",
|
|
142
|
-
"# Advanced Examples:",
|
|
143
|
-
"dler clean --presets deps --deleteLockFiles # Include lock files",
|
|
144
|
-
"dler clean --presets all --force --verbose # Clean everything with details",
|
|
145
|
-
"dler clean --cwd /path/to/project --presets build"
|
|
146
|
-
]
|
|
147
145
|
});
|
|
148
|
-
export default defineCmd(cleanCmd, cleanCmdArgs, cleanCmdCfg);
|
package/dist/cmds/init/cmd.js
CHANGED
|
@@ -1,9 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env bun
|
|
2
|
-
import {
|
|
3
|
-
defineCmd,
|
|
4
|
-
defineCmdArgs,
|
|
5
|
-
defineCmdCfg
|
|
6
|
-
} from "@reliverse/dler-launcher";
|
|
2
|
+
import { defineArgs, defineCommand } from "@reliverse/dler-launcher";
|
|
7
3
|
import { logger } from "@reliverse/dler-logger";
|
|
8
4
|
import { $ } from "bun";
|
|
9
5
|
import {
|
|
@@ -12,43 +8,44 @@ import {
|
|
|
12
8
|
generateRootPackageJson
|
|
13
9
|
} from "./impl/generators.js";
|
|
14
10
|
import { promptMonorepoConfig } from "./impl/prompts.js";
|
|
15
|
-
const initCmd = async () => {
|
|
16
|
-
try {
|
|
17
|
-
const config = await promptMonorepoConfig();
|
|
18
|
-
logger.info("\n\u{1F528} Generating monorepo structure...\n");
|
|
19
|
-
await generateRootPackageJson(config);
|
|
20
|
-
await generateRootFiles(config);
|
|
21
|
-
await generateAllPackages(config);
|
|
22
|
-
logger.info("\n\u{1F4E6} Installing dependencies...\n");
|
|
23
|
-
await $`bun install`.cwd(config.rootPath);
|
|
24
|
-
logger.success("\n\u2705 Monorepo created successfully!");
|
|
25
|
-
logger.success(`
|
|
26
|
-
\u{1F4C1} Location: ${config.rootPath}`);
|
|
27
|
-
logger.success("\nTo get started:");
|
|
28
|
-
logger.log(` cd ${config.rootPath}`);
|
|
29
|
-
logger.log(" bun --filter '*' dev\n");
|
|
30
|
-
} catch (error) {
|
|
31
|
-
logger.error("\n\u274C Error creating monorepo:");
|
|
32
|
-
if (error instanceof Error) {
|
|
33
|
-
logger.error(error.message);
|
|
34
|
-
} else {
|
|
35
|
-
logger.error(String(error));
|
|
36
|
-
}
|
|
37
|
-
process.exit(1);
|
|
38
|
-
}
|
|
39
|
-
};
|
|
40
11
|
function getCurrentWorkingDirectory() {
|
|
41
12
|
return process.cwd();
|
|
42
13
|
}
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
description: "
|
|
47
|
-
|
|
14
|
+
export default defineCommand({
|
|
15
|
+
meta: {
|
|
16
|
+
name: "init",
|
|
17
|
+
description: "Initialize a new monorepo"
|
|
18
|
+
},
|
|
19
|
+
args: defineArgs({
|
|
20
|
+
name: {
|
|
21
|
+
type: "string",
|
|
22
|
+
description: "Current working directory",
|
|
23
|
+
default: getCurrentWorkingDirectory()
|
|
24
|
+
}
|
|
25
|
+
}),
|
|
26
|
+
run: async () => {
|
|
27
|
+
try {
|
|
28
|
+
const config = await promptMonorepoConfig();
|
|
29
|
+
logger.info("\n\u{1F528} Generating monorepo structure...\n");
|
|
30
|
+
await generateRootPackageJson(config);
|
|
31
|
+
await generateRootFiles(config);
|
|
32
|
+
await generateAllPackages(config);
|
|
33
|
+
logger.info("\n\u{1F4E6} Installing dependencies...\n");
|
|
34
|
+
await $`bun install`.cwd(config.rootPath);
|
|
35
|
+
logger.success("\n\u2705 Monorepo created successfully!");
|
|
36
|
+
logger.success(`
|
|
37
|
+
\u{1F4C1} Location: ${config.rootPath}`);
|
|
38
|
+
logger.success("\nTo get started:");
|
|
39
|
+
logger.log(` cd ${config.rootPath}`);
|
|
40
|
+
logger.log(" bun --filter '*' dev\n");
|
|
41
|
+
} catch (error) {
|
|
42
|
+
logger.error("\n\u274C Error creating monorepo:");
|
|
43
|
+
if (error instanceof Error) {
|
|
44
|
+
logger.error(error.message);
|
|
45
|
+
} else {
|
|
46
|
+
logger.error(String(error));
|
|
47
|
+
}
|
|
48
|
+
process.exit(1);
|
|
49
|
+
}
|
|
48
50
|
}
|
|
49
51
|
});
|
|
50
|
-
const initCmdCfg = defineCmdCfg({
|
|
51
|
-
name: "init",
|
|
52
|
-
description: "Initialize a new monorepo"
|
|
53
|
-
});
|
|
54
|
-
export default defineCmd(initCmd, initCmdArgs, initCmdCfg);
|
|
@@ -1,70 +1,67 @@
|
|
|
1
1
|
#!/usr/bin/env bun
|
|
2
|
-
import {
|
|
3
|
-
defineCmd,
|
|
4
|
-
defineCmdArgs,
|
|
5
|
-
defineCmdCfg
|
|
6
|
-
} from "@reliverse/dler-launcher";
|
|
2
|
+
import { defineArgs, defineCommand } from "@reliverse/dler-launcher";
|
|
7
3
|
import { logger } from "@reliverse/dler-logger";
|
|
8
4
|
import { runIntegrate } from "./impl.js";
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
required: true
|
|
33
|
-
},
|
|
34
|
-
target: {
|
|
35
|
-
type: "string",
|
|
36
|
-
description: "Target package in monorepo (optional, will prompt if not specified)"
|
|
37
|
-
},
|
|
38
|
-
verbose: {
|
|
39
|
-
type: "boolean",
|
|
40
|
-
description: "Verbose mode for detailed logging (default: false)"
|
|
5
|
+
export default defineCommand({
|
|
6
|
+
meta: {
|
|
7
|
+
name: "integrate",
|
|
8
|
+
description: "Automatically install and configure integrations like Next.js and Ultracite/Biome. Supports both monorepo and single-repo contexts.",
|
|
9
|
+
examples: [
|
|
10
|
+
"dler integrate --x nextjs",
|
|
11
|
+
"dler integrate --x ultracite",
|
|
12
|
+
"dler integrate --x nextjs,ultracite",
|
|
13
|
+
"dler integrate --x nextjs --target my-app",
|
|
14
|
+
"dler integrate --x ultracite --verbose",
|
|
15
|
+
"dler integrate --x nextjs --cwd /path/to/project",
|
|
16
|
+
"",
|
|
17
|
+
"# Available integrations:",
|
|
18
|
+
"# - nextjs: Next.js React framework with App Router, TypeScript, and Tailwind CSS",
|
|
19
|
+
"# - ultracite: Ultracite preset for Biome (highly opinionated linter and formatter)",
|
|
20
|
+
"",
|
|
21
|
+
"# Monorepo usage:",
|
|
22
|
+
"# The command will automatically detect if you're in a monorepo and prompt you to",
|
|
23
|
+
"# select a target package, or you can specify one with --target",
|
|
24
|
+
"",
|
|
25
|
+
"# Single-repo usage:",
|
|
26
|
+
"# The command will install integrations directly into the current directory"
|
|
27
|
+
]
|
|
41
28
|
},
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
29
|
+
args: defineArgs({
|
|
30
|
+
x: {
|
|
31
|
+
type: "string",
|
|
32
|
+
description: "Integration(s) to install (comma-separated, e.g., 'nextjs,ultracite')",
|
|
33
|
+
required: true
|
|
34
|
+
},
|
|
35
|
+
target: {
|
|
36
|
+
type: "string",
|
|
37
|
+
description: "Target package in monorepo (optional, will prompt if not specified)"
|
|
38
|
+
},
|
|
39
|
+
verbose: {
|
|
40
|
+
type: "boolean",
|
|
41
|
+
description: "Verbose mode for detailed logging (default: false)"
|
|
42
|
+
},
|
|
43
|
+
cwd: {
|
|
44
|
+
type: "string",
|
|
45
|
+
description: "Working directory (default: current directory)"
|
|
46
|
+
}
|
|
47
|
+
}),
|
|
48
|
+
run: async ({ args }) => {
|
|
49
|
+
try {
|
|
50
|
+
const options = {
|
|
51
|
+
x: args.x,
|
|
52
|
+
target: args.target,
|
|
53
|
+
verbose: args.verbose || false,
|
|
54
|
+
cwd: args.cwd
|
|
55
|
+
};
|
|
56
|
+
await runIntegrate(options);
|
|
57
|
+
} catch (error) {
|
|
58
|
+
logger.error("\n\u274C Integration failed:");
|
|
59
|
+
if (error instanceof Error) {
|
|
60
|
+
logger.error(error.message);
|
|
61
|
+
} else {
|
|
62
|
+
logger.error(String(error));
|
|
63
|
+
}
|
|
64
|
+
process.exit(1);
|
|
65
|
+
}
|
|
45
66
|
}
|
|
46
67
|
});
|
|
47
|
-
const integrateCmdCfg = defineCmdCfg({
|
|
48
|
-
name: "integrate",
|
|
49
|
-
description: "Automatically install and configure integrations like Next.js and Ultracite/Biome. Supports both monorepo and single-repo contexts.",
|
|
50
|
-
examples: [
|
|
51
|
-
"dler integrate --x nextjs",
|
|
52
|
-
"dler integrate --x ultracite",
|
|
53
|
-
"dler integrate --x nextjs,ultracite",
|
|
54
|
-
"dler integrate --x nextjs --target my-app",
|
|
55
|
-
"dler integrate --x ultracite --verbose",
|
|
56
|
-
"dler integrate --x nextjs --cwd /path/to/project",
|
|
57
|
-
"",
|
|
58
|
-
"# Available integrations:",
|
|
59
|
-
"# - nextjs: Next.js React framework with App Router, TypeScript, and Tailwind CSS",
|
|
60
|
-
"# - ultracite: Ultracite preset for Biome (highly opinionated linter and formatter)",
|
|
61
|
-
"",
|
|
62
|
-
"# Monorepo usage:",
|
|
63
|
-
"# The command will automatically detect if you're in a monorepo and prompt you to",
|
|
64
|
-
"# select a target package, or you can specify one with --target",
|
|
65
|
-
"",
|
|
66
|
-
"# Single-repo usage:",
|
|
67
|
-
"# The command will install integrations directly into the current directory"
|
|
68
|
-
]
|
|
69
|
-
});
|
|
70
|
-
export default defineCmd(integrateCmd, integrateCmdArgs, integrateCmdCfg);
|