@icebreakers/monorepo 3.2.13 → 3.2.14

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/cli.cjs CHANGED
@@ -1,8 +1,7 @@
1
- const require_upgrade = require('./upgrade-DjOZstRC.cjs');
1
+ const require_upgrade = require("./upgrade-C2M-cSL9.cjs");
2
2
  let node_process = require("node:process");
3
3
  node_process = require_upgrade.__toESM(node_process);
4
4
  let _icebreakers_monorepo_templates = require("@icebreakers/monorepo-templates");
5
-
6
5
  //#region src/cli/program.ts
7
6
  const cwd = node_process.default.cwd();
8
7
  _icebreakers_monorepo_templates.program.name(require_upgrade.name).version(require_upgrade.version);
@@ -46,7 +45,7 @@ _icebreakers_monorepo_templates.program.command("skills").description("技能工
46
45
  }
47
46
  const results = await require_upgrade.syncSkills(selected.size ? {
48
47
  cwd,
49
- targets: Array.from(selected)
48
+ targets: [...selected]
50
49
  } : { cwd });
51
50
  if (!results.length) {
52
51
  require_upgrade.logger.info("未选择任何目标,已跳过同步。");
@@ -60,7 +59,7 @@ _icebreakers_monorepo_templates.program.command("ai").description("AI 助手工
60
59
  const format = opts.format ?? aiConfig?.format ?? "md";
61
60
  const force = opts.force ?? aiConfig?.force ?? false;
62
61
  const output = opts.output ?? aiConfig?.output;
63
- const baseDir = opts.dir ?? aiConfig?.baseDir ?? require_upgrade.defaultAgenticBaseDir;
62
+ const baseDir = opts.dir ?? aiConfig?.baseDir ?? "agentic/prompts";
64
63
  const tasksFile = opts.tasks ?? aiConfig?.tasksFile;
65
64
  const templateName = opts.name;
66
65
  if (Boolean(tasksFile && !opts.output && !opts.name)) {
@@ -102,7 +101,7 @@ _icebreakers_monorepo_templates.program.command("new").description("创建一个
102
101
  const type = await (0, _icebreakers_monorepo_templates.select)({
103
102
  message: "请选择模板类型",
104
103
  choices: require_upgrade.getCreateChoices(createConfig?.choices),
105
- default: createConfig?.type ?? createConfig?.defaultTemplate ?? require_upgrade.defaultTemplate
104
+ default: createConfig?.type ?? createConfig?.defaultTemplate ?? "unbuild"
106
105
  });
107
106
  await require_upgrade.createNewProject({
108
107
  name: packageName,
@@ -111,10 +110,7 @@ _icebreakers_monorepo_templates.program.command("new").description("创建一个
111
110
  });
112
111
  require_upgrade.logger.success("create a package");
113
112
  });
114
- var program_default = _icebreakers_monorepo_templates.program;
115
-
116
113
  //#endregion
117
114
  //#region src/cli.ts
118
- program_default.parse();
119
-
120
- //#endregion
115
+ _icebreakers_monorepo_templates.program.parse();
116
+ //#endregion
package/dist/cli.mjs CHANGED
@@ -1,7 +1,6 @@
1
- import { C as syncSkills, F as generateAgenticTemplate, I as generateAgenticTemplates, L as loadAgenticTasks, M as resolveCommandConfig, N as createTimestampFolderName, O as name, P as defaultAgenticBaseDir, R as logger, S as skillTargets, _ as getCreateChoices, b as cleanProjects, g as defaultTemplate, h as createNewProject, i as init, k as version, n as syncNpmMirror, r as setVscodeBinaryMirror, t as upgradeMonorepo } from "./upgrade-DiPTZW6J.mjs";
1
+ import { C as syncSkills, F as generateAgenticTemplate, I as generateAgenticTemplates, L as loadAgenticTasks, M as resolveCommandConfig, N as createTimestampFolderName, O as name, R as logger, S as skillTargets, _ as getCreateChoices, b as cleanProjects, h as createNewProject, i as init, k as version, n as syncNpmMirror, r as setVscodeBinaryMirror, t as upgradeMonorepo } from "./upgrade-BGgjWFfq.mjs";
2
2
  import process from "node:process";
3
3
  import { input, program, select } from "@icebreakers/monorepo-templates";
4
-
5
4
  //#region src/cli/program.ts
6
5
  const cwd = process.cwd();
7
6
  program.name(name).version(version);
@@ -45,7 +44,7 @@ program.command("skills").description("技能工具集").command("sync").descrip
45
44
  }
46
45
  const results = await syncSkills(selected.size ? {
47
46
  cwd,
48
- targets: Array.from(selected)
47
+ targets: [...selected]
49
48
  } : { cwd });
50
49
  if (!results.length) {
51
50
  logger.info("未选择任何目标,已跳过同步。");
@@ -59,7 +58,7 @@ program.command("ai").description("AI 助手工具集").command("create").alias(
59
58
  const format = opts.format ?? aiConfig?.format ?? "md";
60
59
  const force = opts.force ?? aiConfig?.force ?? false;
61
60
  const output = opts.output ?? aiConfig?.output;
62
- const baseDir = opts.dir ?? aiConfig?.baseDir ?? defaultAgenticBaseDir;
61
+ const baseDir = opts.dir ?? aiConfig?.baseDir ?? "agentic/prompts";
63
62
  const tasksFile = opts.tasks ?? aiConfig?.tasksFile;
64
63
  const templateName = opts.name;
65
64
  if (Boolean(tasksFile && !opts.output && !opts.name)) {
@@ -101,7 +100,7 @@ program.command("new").description("创建一个新的子包").alias("create").a
101
100
  const type = await select({
102
101
  message: "请选择模板类型",
103
102
  choices: getCreateChoices(createConfig?.choices),
104
- default: createConfig?.type ?? createConfig?.defaultTemplate ?? defaultTemplate
103
+ default: createConfig?.type ?? createConfig?.defaultTemplate ?? "unbuild"
105
104
  });
106
105
  await createNewProject({
107
106
  name: packageName,
@@ -110,11 +109,8 @@ program.command("new").description("创建一个新的子包").alias("create").a
110
109
  });
111
110
  logger.success("create a package");
112
111
  });
113
- var program_default = program;
114
-
115
112
  //#endregion
116
113
  //#region src/cli.ts
117
- program_default.parse();
118
-
114
+ program.parse();
119
115
  //#endregion
120
- export { };
116
+ export {};
package/dist/index.cjs CHANGED
@@ -1,7 +1,6 @@
1
- Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
2
- const require_upgrade = require('./upgrade-DjOZstRC.cjs');
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
+ const require_upgrade = require("./upgrade-C2M-cSL9.cjs");
3
3
  let _icebreakers_monorepo_templates = require("@icebreakers/monorepo-templates");
4
-
5
4
  exports.GitClient = require_upgrade.GitClient;
6
5
  exports.assetsDir = _icebreakers_monorepo_templates.assetsDir;
7
6
  exports.cleanProjects = require_upgrade.cleanProjects;
@@ -21,22 +20,22 @@ exports.getWorkspaceData = require_upgrade.getWorkspaceData;
21
20
  exports.getWorkspacePackages = require_upgrade.getWorkspacePackages;
22
21
  exports.init = require_upgrade.init;
23
22
  exports.isFileChanged = require_upgrade.isFileChanged;
24
- Object.defineProperty(exports, 'isGitignoreFile', {
25
- enumerable: true,
26
- get: function () {
27
- return _icebreakers_monorepo_templates.isGitignoreFile;
28
- }
23
+ Object.defineProperty(exports, "isGitignoreFile", {
24
+ enumerable: true,
25
+ get: function() {
26
+ return _icebreakers_monorepo_templates.isGitignoreFile;
27
+ }
29
28
  });
30
29
  exports.isIgnorableFsError = require_upgrade.isIgnorableFsError;
31
30
  exports.isMatch = require_upgrade.isMatch;
32
31
  exports.loadAgenticTasks = require_upgrade.loadAgenticTasks;
33
32
  exports.loadMonorepoConfig = require_upgrade.loadMonorepoConfig;
34
33
  exports.logger = require_upgrade.logger;
35
- Object.defineProperty(exports, 'name', {
36
- enumerable: true,
37
- get: function () {
38
- return require_upgrade.name;
39
- }
34
+ Object.defineProperty(exports, "name", {
35
+ enumerable: true,
36
+ get: function() {
37
+ return require_upgrade.name;
38
+ }
40
39
  });
41
40
  exports.packageDir = require_upgrade.packageDir;
42
41
  exports.resolveCommandConfig = require_upgrade.resolveCommandConfig;
@@ -47,23 +46,23 @@ exports.syncNpmMirror = require_upgrade.syncNpmMirror;
47
46
  exports.syncSkills = require_upgrade.syncSkills;
48
47
  exports.templateMap = require_upgrade.templateMap;
49
48
  exports.templatesDir = _icebreakers_monorepo_templates.templatesDir;
50
- Object.defineProperty(exports, 'toPublishGitignorePath', {
51
- enumerable: true,
52
- get: function () {
53
- return _icebreakers_monorepo_templates.toPublishGitignorePath;
54
- }
49
+ Object.defineProperty(exports, "toPublishGitignorePath", {
50
+ enumerable: true,
51
+ get: function() {
52
+ return _icebreakers_monorepo_templates.toPublishGitignorePath;
53
+ }
55
54
  });
56
- Object.defineProperty(exports, 'toWorkspaceGitignorePath', {
57
- enumerable: true,
58
- get: function () {
59
- return _icebreakers_monorepo_templates.toWorkspaceGitignorePath;
60
- }
55
+ Object.defineProperty(exports, "toWorkspaceGitignorePath", {
56
+ enumerable: true,
57
+ get: function() {
58
+ return _icebreakers_monorepo_templates.toWorkspaceGitignorePath;
59
+ }
61
60
  });
62
61
  exports.updateIssueTemplateConfig = require_upgrade.updateIssueTemplateConfig;
63
62
  exports.upgradeMonorepo = require_upgrade.upgradeMonorepo;
64
- Object.defineProperty(exports, 'version', {
65
- enumerable: true,
66
- get: function () {
67
- return require_upgrade.version;
68
- }
69
- });
63
+ Object.defineProperty(exports, "version", {
64
+ enumerable: true,
65
+ get: function() {
66
+ return require_upgrade.version;
67
+ }
68
+ });
package/dist/index.mjs CHANGED
@@ -1,3 +1,2 @@
1
- import { A as defineMonorepoConfig, B as getWorkspacePackages, C as syncSkills, D as templatesDir, E as rootDir, F as generateAgenticTemplate, I as generateAgenticTemplates, L as loadAgenticTasks, M as resolveCommandConfig, N as createTimestampFolderName, O as name, P as defaultAgenticBaseDir, R as logger, S as skillTargets, T as packageDir, V as GitClient, _ as getCreateChoices, a as escapeStringRegexp, b as cleanProjects, c as isFileChanged, d as toWorkspaceGitignorePath, f as updateIssueTemplateConfig, h as createNewProject, i as init, j as loadMonorepoConfig, k as version, l as isGitignoreFile, m as createContext, n as syncNpmMirror, o as isMatch, p as isIgnorableFsError, r as setVscodeBinaryMirror, s as getFileHash, t as upgradeMonorepo, u as toPublishGitignorePath, v as getTemplateMap, w as assetsDir, x as getSkillTargetPaths, y as templateMap, z as getWorkspaceData } from "./upgrade-DiPTZW6J.mjs";
2
-
3
- export { GitClient, assetsDir, cleanProjects, createContext, createNewProject, createTimestampFolderName, defaultAgenticBaseDir, defineMonorepoConfig, escapeStringRegexp, generateAgenticTemplate, generateAgenticTemplates, getCreateChoices, getFileHash, getSkillTargetPaths, getTemplateMap, getWorkspaceData, getWorkspacePackages, init, isFileChanged, isGitignoreFile, isIgnorableFsError, isMatch, loadAgenticTasks, loadMonorepoConfig, logger, name, packageDir, resolveCommandConfig, rootDir, setVscodeBinaryMirror, skillTargets, syncNpmMirror, syncSkills, templateMap, templatesDir, toPublishGitignorePath, toWorkspaceGitignorePath, updateIssueTemplateConfig, upgradeMonorepo, version };
1
+ import { A as defineMonorepoConfig, B as getWorkspacePackages, C as syncSkills, D as templatesDir, E as rootDir, F as generateAgenticTemplate, I as generateAgenticTemplates, L as loadAgenticTasks, M as resolveCommandConfig, N as createTimestampFolderName, O as name, P as defaultAgenticBaseDir, R as logger, S as skillTargets, T as packageDir, V as GitClient, _ as getCreateChoices, a as escapeStringRegexp, b as cleanProjects, c as isFileChanged, d as toWorkspaceGitignorePath, f as updateIssueTemplateConfig, h as createNewProject, i as init, j as loadMonorepoConfig, k as version, l as isGitignoreFile, m as createContext, n as syncNpmMirror, o as isMatch, p as isIgnorableFsError, r as setVscodeBinaryMirror, s as getFileHash, t as upgradeMonorepo, u as toPublishGitignorePath, v as getTemplateMap, w as assetsDir, x as getSkillTargetPaths, y as templateMap, z as getWorkspaceData } from "./upgrade-BGgjWFfq.mjs";
2
+ export { GitClient, assetsDir, cleanProjects, createContext, createNewProject, createTimestampFolderName, defaultAgenticBaseDir, defineMonorepoConfig, escapeStringRegexp, generateAgenticTemplate, generateAgenticTemplates, getCreateChoices, getFileHash, getSkillTargetPaths, getTemplateMap, getWorkspaceData, getWorkspacePackages, init, isFileChanged, isGitignoreFile, isIgnorableFsError, isMatch, loadAgenticTasks, loadMonorepoConfig, logger, name, packageDir, resolveCommandConfig, rootDir, setVscodeBinaryMirror, skillTargets, syncNpmMirror, syncSkills, templateMap, templatesDir, toPublishGitignorePath, toWorkspaceGitignorePath, updateIssueTemplateConfig, upgradeMonorepo, version };
@@ -21,7 +21,6 @@ import PQueue from "p-queue";
21
21
  import klaw from "klaw";
22
22
  import { Buffer as Buffer$1 } from "node:buffer";
23
23
  import { coerce, gte, minVersion } from "semver";
24
-
25
24
  //#region \0rolldown/runtime.js
26
25
  var __create = Object.create;
27
26
  var __defProp$1 = Object.defineProperty;
@@ -31,16 +30,12 @@ var __getProtoOf = Object.getPrototypeOf;
31
30
  var __hasOwnProp = Object.prototype.hasOwnProperty;
32
31
  var __commonJSMin = (cb, mod) => () => (mod || cb((mod = { exports: {} }).exports, mod), mod.exports);
33
32
  var __copyProps = (to, from, except, desc) => {
34
- if (from && typeof from === "object" || typeof from === "function") {
35
- for (var keys = __getOwnPropNames(from), i = 0, n = keys.length, key; i < n; i++) {
36
- key = keys[i];
37
- if (!__hasOwnProp.call(to, key) && key !== except) {
38
- __defProp$1(to, key, {
39
- get: ((k) => from[k]).bind(null, key),
40
- enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
41
- });
42
- }
43
- }
33
+ if (from && typeof from === "object" || typeof from === "function") for (var keys = __getOwnPropNames(from), i = 0, n = keys.length, key; i < n; i++) {
34
+ key = keys[i];
35
+ if (!__hasOwnProp.call(to, key) && key !== except) __defProp$1(to, key, {
36
+ get: ((k) => from[k]).bind(null, key),
37
+ enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
38
+ });
44
39
  }
45
40
  return to;
46
41
  };
@@ -48,7 +43,6 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
48
43
  value: mod,
49
44
  enumerable: true
50
45
  }) : target, mod));
51
-
52
46
  //#endregion
53
47
  //#region ../../node_modules/.pnpm/get-value@4.0.1/node_modules/get-value/dist/index.mjs
54
48
  var __defProp = Object.defineProperty;
@@ -116,7 +110,6 @@ var index_default = /* @__PURE__ */ __name((target, path, options = {}) => {
116
110
  * Copyright (c) 2014-present, Jon Schlinkert.
117
111
  * Released under the MIT License.
118
112
  */
119
-
120
113
  //#endregion
121
114
  //#region src/core/git.ts
122
115
  /**
@@ -184,7 +177,6 @@ var GitClient = class {
184
177
  }
185
178
  }
186
179
  };
187
-
188
180
  //#endregion
189
181
  //#region ../../node_modules/.pnpm/defu@6.1.4/node_modules/defu/dist/defu.mjs
190
182
  function isPlainObject$1(value) {
@@ -213,19 +205,18 @@ function createDefu(merger) {
213
205
  return (...arguments_) => arguments_.reduce((p, c) => _defu(p, c, "", merger), {});
214
206
  }
215
207
  const defu = createDefu();
216
- const defuFn = createDefu((object, key, currentValue) => {
208
+ createDefu((object, key, currentValue) => {
217
209
  if (object[key] !== void 0 && typeof currentValue === "function") {
218
210
  object[key] = currentValue(object[key]);
219
211
  return true;
220
212
  }
221
213
  });
222
- const defuArrayFn = createDefu((object, key, currentValue) => {
214
+ createDefu((object, key, currentValue) => {
223
215
  if (Array.isArray(object[key]) && typeof currentValue === "function") {
224
216
  object[key] = currentValue(object[key]);
225
217
  return true;
226
218
  }
227
219
  });
228
-
229
220
  //#endregion
230
221
  //#region src/core/workspace.ts
231
222
  /**
@@ -264,14 +255,12 @@ async function getWorkspaceData(cwd, options) {
264
255
  packages: await getWorkspacePackages(workspaceDir, options)
265
256
  };
266
257
  }
267
-
268
258
  //#endregion
269
259
  //#region src/core/logger.ts
270
260
  /**
271
261
  * 统一的日志实例,便于在命令行中输出带有前缀和颜色的消息。
272
262
  */
273
263
  const logger = createConsola();
274
-
275
264
  //#endregion
276
265
  //#region src/commands/ai.ts
277
266
  const agenticSections = [
@@ -302,7 +291,7 @@ function createTimestampFolderName(date = /* @__PURE__ */ new Date()) {
302
291
  async function generateAgenticTemplate(options = {}) {
303
292
  const cwd = options.cwd ?? process.cwd();
304
293
  const format = options.format ?? "md";
305
- const baseDir = options.baseDir ?? defaultAgenticBaseDir;
294
+ const baseDir = options.baseDir ?? "agentic/prompts";
306
295
  if (format !== "md" && format !== "json") throw new Error(`不支持的模板格式:${format}`);
307
296
  const template = format === "md" ? renderMarkdownTemplate() : renderJsonTemplate();
308
297
  const ext = format === "json" ? "json" : "md";
@@ -342,7 +331,6 @@ async function generateAgenticTemplates(tasks, defaults = {}) {
342
331
  }
343
332
  return results;
344
333
  }
345
-
346
334
  //#endregion
347
335
  //#region ../../node_modules/.pnpm/is-primitive@3.0.1/node_modules/is-primitive/index.js
348
336
  /*!
@@ -357,7 +345,6 @@ var require_is_primitive = /* @__PURE__ */ __commonJSMin(((exports, module) => {
357
345
  return typeof val !== "function";
358
346
  };
359
347
  }));
360
-
361
348
  //#endregion
362
349
  //#region ../../node_modules/.pnpm/isobject@3.0.1/node_modules/isobject/index.js
363
350
  /*!
@@ -371,7 +358,6 @@ var require_isobject = /* @__PURE__ */ __commonJSMin(((exports, module) => {
371
358
  return val != null && typeof val === "object" && Array.isArray(val) === false;
372
359
  };
373
360
  }));
374
-
375
361
  //#endregion
376
362
  //#region ../../node_modules/.pnpm/is-plain-object@2.0.4/node_modules/is-plain-object/index.js
377
363
  /*!
@@ -396,7 +382,6 @@ var require_is_plain_object = /* @__PURE__ */ __commonJSMin(((exports, module) =
396
382
  return true;
397
383
  };
398
384
  }));
399
-
400
385
  //#endregion
401
386
  //#region ../../node_modules/.pnpm/set-value@4.1.0/node_modules/set-value/index.js
402
387
  /*!
@@ -510,7 +495,6 @@ var require_set_value = /* @__PURE__ */ __commonJSMin(((exports, module) => {
510
495
  };
511
496
  module.exports = setValue;
512
497
  }));
513
-
514
498
  //#endregion
515
499
  //#region src/core/config.ts
516
500
  /**
@@ -555,12 +539,10 @@ async function loadMonorepoConfig(cwd) {
555
539
  async function resolveCommandConfig(name, cwd) {
556
540
  return ((await loadMonorepoConfig(cwd)).commands ?? {})[name] ?? {};
557
541
  }
558
-
559
542
  //#endregion
560
543
  //#region package.json
561
544
  var name = "@icebreakers/monorepo";
562
- var version = "3.2.13";
563
-
545
+ var version = "3.2.14";
564
546
  //#endregion
565
547
  //#region src/constants.ts
566
548
  /**
@@ -575,7 +557,6 @@ const packageDir = path$1.dirname(packageJsonPath);
575
557
  * monorepo 根目录,方便需要跳出当前包的逻辑(例如定位工作区文件)。
576
558
  */
577
559
  const rootDir = path$1.resolve(packageDir, "..", "..");
578
-
579
560
  //#endregion
580
561
  //#region src/commands/skills.ts
581
562
  const skillName = "icebreakers-monorepo-cli";
@@ -589,7 +570,7 @@ function getSkillTargetPaths(homeDir = os.homedir()) {
589
570
  }
590
571
  function normalizeTargets(values) {
591
572
  if (!values?.length) return;
592
- return Array.from(new Set(values));
573
+ return [...new Set(values)];
593
574
  }
594
575
  async function syncSkills(options = {}) {
595
576
  const cwd = options.cwd ?? process.cwd();
@@ -621,7 +602,6 @@ async function syncSkills(options = {}) {
621
602
  }
622
603
  return results;
623
604
  }
624
-
625
605
  //#endregion
626
606
  //#region src/commands/clean.ts
627
607
  var import_set_value = /* @__PURE__ */ __toESM(require_set_value(), 1);
@@ -666,13 +646,13 @@ async function cleanProjects(cwd, overrides) {
666
646
  const qoderDir = path.resolve(workspaceDir, ".qoder");
667
647
  const docsPlansDir = path.resolve(workspaceDir, "docs/plans");
668
648
  const skillTargets = Object.values(getSkillTargetPaths());
669
- const candidates = Array.from(new Set([
649
+ const candidates = [...new Set([
670
650
  ...cleanDirs.filter(Boolean),
671
651
  readmeZh,
672
652
  qoderDir,
673
653
  docsPlansDir,
674
654
  ...skillTargets
675
- ]));
655
+ ])];
676
656
  await Promise.all(candidates.map(async (dir) => {
677
657
  if (await fs.pathExists(dir)) await fs.remove(dir);
678
658
  }));
@@ -681,7 +661,6 @@ async function cleanProjects(cwd, overrides) {
681
661
  (0, import_set_value.default)(pkgJson, "devDependencies.@icebreakers/monorepo", cleanConfig?.pinnedVersion ?? "latest", { preservePaths: false });
682
662
  await fs.outputJson(name, pkgJson, { spaces: 2 });
683
663
  }
684
-
685
664
  //#endregion
686
665
  //#region src/commands/create.ts
687
666
  /**
@@ -808,10 +787,10 @@ async function createNewProject(options) {
808
787
  const renameJson = options?.renameJson ?? createConfig?.renameJson ?? false;
809
788
  const rawName = options?.name ?? createConfig?.name;
810
789
  const name = typeof rawName === "string" ? rawName.trim() : void 0;
811
- const requestedTemplate = options?.type ?? createConfig?.type ?? createConfig?.defaultTemplate ?? defaultTemplate;
790
+ const requestedTemplate = options?.type ?? createConfig?.type ?? createConfig?.defaultTemplate ?? "unbuild";
812
791
  const templateDefinitions = getTemplateMap(createConfig?.templateMap);
813
792
  const templatesRoot = createConfig?.templatesDir ? path.resolve(cwd, createConfig.templatesDir) : templatesDir;
814
- const fallbackTemplate = createConfig?.defaultTemplate ?? defaultTemplate;
793
+ const fallbackTemplate = createConfig?.defaultTemplate ?? "unbuild";
815
794
  const bundlerName = typeof requestedTemplate === "string" && templateDefinitions[requestedTemplate] ? requestedTemplate : fallbackTemplate;
816
795
  const templateDefinition = templateDefinitions[bundlerName];
817
796
  if (!templateDefinition) throw new Error(`未找到名为 ${bundlerName} 的模板,请检查 monorepo.config.ts`);
@@ -836,7 +815,6 @@ async function createNewProject(options) {
836
815
  }
837
816
  logger.success(`${pc.bgGreenBright(pc.white(`[${bundlerName}]`))} ${targetName} 项目创建成功!`);
838
817
  }
839
-
840
818
  //#endregion
841
819
  //#region src/core/context.ts
842
820
  /**
@@ -857,7 +835,6 @@ async function createContext(cwd) {
857
835
  config: await loadMonorepoConfig(workspaceDir)
858
836
  };
859
837
  }
860
-
861
838
  //#endregion
862
839
  //#region src/commands/init/setChangeset.ts
863
840
  /**
@@ -876,7 +853,6 @@ async function setChangeset_default(ctx) {
876
853
  }
877
854
  }
878
855
  }
879
-
880
856
  //#endregion
881
857
  //#region src/utils/fs.ts
882
858
  /**
@@ -889,7 +865,6 @@ function isIgnorableFsError(error) {
889
865
  const code = error.code;
890
866
  return code === "ENOENT" || code === "EBUSY" || code === "EEXIST";
891
867
  }
892
-
893
868
  //#endregion
894
869
  //#region src/utils/github.ts
895
870
  /**
@@ -926,7 +901,6 @@ function updateIssueTemplateConfig(source, repoName) {
926
901
  if (!changed) return source;
927
902
  return doc.toString();
928
903
  }
929
-
930
904
  //#endregion
931
905
  //#region src/utils/hash.ts
932
906
  /**
@@ -948,14 +922,15 @@ function isFileChanged(src, dest) {
948
922
  return false;
949
923
  }
950
924
  }
951
-
952
925
  //#endregion
953
926
  //#region src/utils/regexp.ts
927
+ const regexpSpecialCharacterPattern = /[|\\{}()[\]^$+*?.]/g;
928
+ const hyphenPattern = /-/g;
954
929
  /**
955
930
  * 逃逸正则表达式中所有特殊字符,避免被当做模式解析。
956
931
  */
957
932
  function escapeStringRegexp(str) {
958
- return str.replace(/[|\\{}()[\]^$+*?.]/g, "\\$&").replace(/-/g, "\\x2d");
933
+ return str.replace(regexpSpecialCharacterPattern, "\\$&").replace(hyphenPattern, "\\x2d");
959
934
  }
960
935
  /**
961
936
  * 判断字符串是否命中任意一个正则,用于过滤要同步的资产文件。
@@ -964,7 +939,6 @@ function isMatch(str, arr) {
964
939
  for (const reg of arr) if (reg.test(str)) return true;
965
940
  return false;
966
941
  }
967
-
968
942
  //#endregion
969
943
  //#region src/commands/init/setIssueTemplateConfig.ts
970
944
  /**
@@ -979,7 +953,6 @@ async function setIssueTemplateConfig_default(ctx) {
979
953
  const next = updateIssueTemplateConfig(source, repoName);
980
954
  if (next !== source) await fs.writeFile(configPath, next, "utf8");
981
955
  }
982
-
983
956
  //#endregion
984
957
  //#region src/commands/init/setPkgJson.ts
985
958
  /**
@@ -1004,7 +977,6 @@ async function setPkgJson_default(ctx) {
1004
977
  if (await fs.readFile(pkg.pkgJsonPath, "utf8") !== nextContent) await fs.writeFile(pkg.pkgJsonPath, nextContent, "utf8");
1005
978
  }));
1006
979
  }
1007
-
1008
980
  //#endregion
1009
981
  //#region src/commands/init/setReadme.ts
1010
982
  async function getRows(ctx) {
@@ -1012,7 +984,7 @@ async function getRows(ctx) {
1012
984
  const rows = [];
1013
985
  if (gitUrl) rows.push(`# ${gitUrl.name}\n`);
1014
986
  rows.push("## Packages\n");
1015
- const sortedPackages = [...packages].sort((a, b) => {
987
+ const sortedPackages = packages.toSorted((a, b) => {
1016
988
  const left = a.manifest.name ?? "";
1017
989
  const right = b.manifest.name ?? "";
1018
990
  return left.localeCompare(right);
@@ -1051,7 +1023,6 @@ async function setReadme_default(ctx) {
1051
1023
  const rows = await getRows(ctx);
1052
1024
  await fs.writeFile(path.resolve(ctx.cwd, "README.md"), `${rows.join("\n")}\n`);
1053
1025
  }
1054
-
1055
1026
  //#endregion
1056
1027
  //#region src/commands/init/index.ts
1057
1028
  /**
@@ -1065,7 +1036,6 @@ async function init(cwd) {
1065
1036
  if (!initConfig.skipReadme) await setReadme_default(ctx);
1066
1037
  if (!initConfig.skipIssueTemplateConfig) await setIssueTemplateConfig_default(ctx);
1067
1038
  }
1068
-
1069
1039
  //#endregion
1070
1040
  //#region src/commands/mirror/sources.ts
1071
1041
  const chinaMirrorsEnvs = {
@@ -1096,7 +1066,6 @@ const chinaMirrorsEnvs = {
1096
1066
  npm_config_sharp_libvips_binary_host: "https://cdn.npmmirror.com/binaries/sharp-libvips",
1097
1067
  npm_config_robotjs_binary_host: "https://cdn.npmmirror.com/binaries/robotjs"
1098
1068
  };
1099
-
1100
1069
  //#endregion
1101
1070
  //#region src/commands/mirror/utils.ts
1102
1071
  /**
@@ -1111,7 +1080,6 @@ function setMirror(obj, envs = chinaMirrorsEnvs) {
1111
1080
  const prefix = "terminal.integrated.env";
1112
1081
  if (typeof obj === "object" && obj) for (const platform of platforms) (0, import_set_value.default)(obj, [prefix, platform].join(".").replaceAll(".", "\\."), envs);
1113
1082
  }
1114
-
1115
1083
  //#endregion
1116
1084
  //#region src/commands/mirror/binaryMirror.ts
1117
1085
  /**
@@ -1129,7 +1097,6 @@ async function setVscodeBinaryMirror(cwd) {
1129
1097
  json && typeof json === "object" && setMirror(json, env);
1130
1098
  await fs.writeFile(targetJsonPath, `${stringify(json, void 0, 2)}\n`, "utf8");
1131
1099
  }
1132
-
1133
1100
  //#endregion
1134
1101
  //#region src/commands/sync.ts
1135
1102
  function renderCommand(template, pkgName) {
@@ -1147,9 +1114,9 @@ async function syncNpmMirror(cwd, options) {
1147
1114
  logger.info(`[当前工作区Repo]:\n${packages.map((x) => `- ${pc.green(x.manifest.name)} : ${path.relative(workspaceDir, x.rootDir)}`).join("\n")}\n`);
1148
1115
  const set = new Set(packages.map((x) => x.manifest.name));
1149
1116
  if (packageFilter?.length) {
1150
- for (const name of Array.from(set)) if (!name || !packageFilter.includes(name)) set.delete(name);
1117
+ for (const name of [...set]) if (!name || !packageFilter.includes(name)) set.delete(name);
1151
1118
  }
1152
- logger.info(`[即将同步的包]:\n${Array.from(set).map((x) => `- ${pc.green(x ?? "")}`).join("\n")}\n`);
1119
+ logger.info(`[即将同步的包]:\n${Array.from(set, (x) => `- ${pc.green(x ?? "")}`).join("\n")}\n`);
1153
1120
  const queue = new PQueue({ concurrency: configConcurrency ?? Math.max(os.cpus().length, 1) });
1154
1121
  const template = configCommand ?? "cnpm sync {name}";
1155
1122
  const tasks = [];
@@ -1161,17 +1128,18 @@ async function syncNpmMirror(cwd, options) {
1161
1128
  }
1162
1129
  await Promise.all(tasks);
1163
1130
  }
1164
-
1165
1131
  //#endregion
1166
1132
  //#region src/commands/upgrade/agents.ts
1133
+ const crlfPattern$1 = /\r\n/g;
1134
+ const h2HeadingPrefixPattern = /^##\s+/;
1167
1135
  function normalizeEol$1(input) {
1168
- return input.replace(/\r\n/g, "\n");
1136
+ return input.replace(crlfPattern$1, "\n");
1169
1137
  }
1170
1138
  function normalizeComparableContent(input) {
1171
1139
  return normalizeEol$1(input).trimEnd();
1172
1140
  }
1173
1141
  function normalizeHeadingKey(line) {
1174
- return line.replace(/^##\s+/, "").trim().toLowerCase();
1142
+ return line.replace(h2HeadingPrefixPattern, "").trim().toLowerCase();
1175
1143
  }
1176
1144
  function trimEdgeEmptyLines(lines) {
1177
1145
  const next = [...lines];
@@ -1193,7 +1161,7 @@ function parseMarkdownByH2(content) {
1193
1161
  const sections = [];
1194
1162
  let current;
1195
1163
  for (const line of lines) {
1196
- if (/^##\s+/.test(line)) {
1164
+ if (h2HeadingPrefixPattern.test(line)) {
1197
1165
  if (current) sections.push(current);
1198
1166
  current = {
1199
1167
  key: normalizeHeadingKey(line),
@@ -1259,7 +1227,6 @@ function mergeAgentsMarkdown(source, target) {
1259
1227
  function isAgentsMarkdownEquivalent(left, right) {
1260
1228
  return normalizeComparableContent(left) === normalizeComparableContent(right);
1261
1229
  }
1262
-
1263
1230
  //#endregion
1264
1231
  //#region src/commands/upgrade/overwrite.ts
1265
1232
  function asBuffer(data) {
@@ -1324,21 +1291,13 @@ async function flushPendingOverwrites(pending) {
1324
1291
  const selectedSet = new Set(selected);
1325
1292
  for (const item of pending) if (selectedSet.has(item.targetPath)) await item.action();
1326
1293
  }
1327
-
1328
- //#endregion
1329
- //#region src/commands/upgrade/scripts.ts
1330
- /**
1331
- * 升级时注入到 package.json 的脚本命令集合,保证常用脚本齐全。
1332
- */
1333
- const scripts = {
1294
+ const scriptsEntries = Object.entries({
1334
1295
  "script:init": "monorepo init",
1335
1296
  "script:sync": "monorepo sync",
1336
1297
  "script:clean": "monorepo clean",
1337
1298
  "script:mirror": "monorepo mirror",
1338
1299
  "commitlint": "commitlint --edit"
1339
- };
1340
- const scriptsEntries = Object.entries(scripts);
1341
-
1300
+ });
1342
1301
  //#endregion
1343
1302
  //#region src/commands/upgrade/pkg-json.ts
1344
1303
  const NON_OVERRIDABLE_PREFIXES = ["workspace:", "catalog:"];
@@ -1402,7 +1361,6 @@ function setPkgJson(sourcePkgJson, targetPkgJson, options) {
1402
1361
  targetPkgJson.scripts = scripts;
1403
1362
  }
1404
1363
  }
1405
-
1406
1364
  //#endregion
1407
1365
  //#region src/commands/upgrade/workspace.ts
1408
1366
  function isPlainObject(value) {
@@ -1458,11 +1416,11 @@ function mergeWorkspaceManifest(source, target) {
1458
1416
  }
1459
1417
  return result;
1460
1418
  }
1461
-
1462
1419
  //#endregion
1463
1420
  //#region src/commands/upgrade/index.ts
1421
+ const crlfPattern = /\r\n/g;
1464
1422
  function normalizeEol(input) {
1465
- return input.replace(/\r\n/g, "\n");
1423
+ return input.replace(crlfPattern, "\n");
1466
1424
  }
1467
1425
  function normalizeGitignoreLine(line) {
1468
1426
  const trimmed = line.trim();
@@ -1511,7 +1469,7 @@ async function upgradeMonorepo(opts) {
1511
1469
  const baseTargets = getAssetTargets(useCoreAssets);
1512
1470
  const configTargets = upgradeConfig?.targets ?? [];
1513
1471
  const mergeTargets = upgradeConfig?.mergeTargets;
1514
- let targets = configTargets.length ? mergeTargets === false ? [...configTargets] : Array.from(new Set([...baseTargets, ...configTargets])) : baseTargets;
1472
+ let targets = configTargets.length ? mergeTargets === false ? [...configTargets] : [...new Set([...baseTargets, ...configTargets])] : baseTargets;
1515
1473
  if (merged.interactive) targets = await checkbox({
1516
1474
  message: "选择你需要的文件",
1517
1475
  choices: targets.map((x) => {
@@ -1687,6 +1645,5 @@ async function upgradeMonorepo(opts) {
1687
1645
  }
1688
1646
  await flushPendingOverwrites(pendingOverwrites);
1689
1647
  }
1690
-
1691
1648
  //#endregion
1692
- export { defineMonorepoConfig as A, getWorkspacePackages as B, syncSkills as C, templatesDir as D, rootDir as E, generateAgenticTemplate as F, generateAgenticTemplates as I, loadAgenticTasks as L, resolveCommandConfig as M, createTimestampFolderName as N, name as O, defaultAgenticBaseDir as P, logger as R, skillTargets as S, packageDir as T, GitClient as V, getCreateChoices as _, escapeStringRegexp as a, cleanProjects as b, isFileChanged as c, toWorkspaceGitignorePath as d, updateIssueTemplateConfig as f, defaultTemplate as g, createNewProject as h, init as i, loadMonorepoConfig as j, version as k, isGitignoreFile as l, createContext as m, syncNpmMirror as n, isMatch as o, isIgnorableFsError as p, setVscodeBinaryMirror as r, getFileHash as s, upgradeMonorepo as t, toPublishGitignorePath as u, getTemplateMap as v, assetsDir as w, getSkillTargetPaths as x, templateMap as y, getWorkspaceData as z };
1649
+ export { defineMonorepoConfig as A, getWorkspacePackages as B, syncSkills as C, templatesDir as D, rootDir as E, generateAgenticTemplate as F, generateAgenticTemplates as I, loadAgenticTasks as L, resolveCommandConfig as M, createTimestampFolderName as N, name as O, defaultAgenticBaseDir as P, logger as R, skillTargets as S, packageDir as T, GitClient as V, getCreateChoices as _, escapeStringRegexp as a, cleanProjects as b, isFileChanged as c, toWorkspaceGitignorePath as d, updateIssueTemplateConfig as f, defaultTemplate as g, createNewProject as h, init as i, loadMonorepoConfig as j, version as k, isGitignoreFile as l, createContext as m, syncNpmMirror as n, isMatch as o, isIgnorableFsError as p, setVscodeBinaryMirror as r, getFileHash as s, upgradeMonorepo as t, toPublishGitignorePath as u, getTemplateMap as v, assetsDir as w, getSkillTargetPaths as x, templateMap as y, getWorkspaceData as z };