@farris/cli 2.3.8 → 2.3.11

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.
Files changed (113) hide show
  1. package/lib/commands/add-app.js +5 -5
  2. package/lib/commands/add-lib.js +5 -5
  3. package/lib/commands/add-micro.js +11 -11
  4. package/lib/commands/add-project.js +196 -196
  5. package/lib/commands/add-project.js.map +1 -1
  6. package/lib/commands/build-components.js +60 -60
  7. package/lib/commands/build-components.js.map +1 -1
  8. package/lib/commands/build-css.js +38 -38
  9. package/lib/commands/build-css.js.map +1 -1
  10. package/lib/commands/build-lib.js +30 -30
  11. package/lib/commands/build.js +19 -19
  12. package/lib/commands/build.js.map +1 -1
  13. package/lib/commands/create-app-options.js +85 -85
  14. package/lib/commands/create-app-options.js.map +1 -1
  15. package/lib/commands/create-app.js +131 -131
  16. package/lib/commands/create-app.js.map +1 -1
  17. package/lib/commands/create-options.js +69 -58
  18. package/lib/commands/create-options.js.map +1 -1
  19. package/lib/commands/create.js +345 -341
  20. package/lib/commands/create.js.map +1 -1
  21. package/lib/commands/dev-serve.js +18 -18
  22. package/lib/commands/extract-i18n.js +74 -74
  23. package/lib/commands/extract-i18n.js.map +1 -1
  24. package/lib/commands/generate/api.js +124 -124
  25. package/lib/commands/generate/api.js.map +1 -1
  26. package/lib/commands/generate/common.js +101 -101
  27. package/lib/commands/generate/common.js.map +1 -1
  28. package/lib/commands/generate/component.js +156 -156
  29. package/lib/commands/generate/component.js.map +1 -1
  30. package/lib/commands/generate/view.js +168 -168
  31. package/lib/commands/generate/view.js.map +1 -1
  32. package/lib/commands/preview-serve.js +16 -16
  33. package/lib/commands/workspace/add-app.js +15 -15
  34. package/lib/commands/workspace/add-app.js.map +1 -1
  35. package/lib/commands/workspace/create.js +62 -62
  36. package/lib/commands/workspace/create.js.map +1 -1
  37. package/lib/commands/workspace/inspect.js +30 -30
  38. package/lib/commands/workspace/inspect.js.map +1 -1
  39. package/lib/commands/workspace/verify.js +38 -38
  40. package/lib/commands/workspace/verify.js.map +1 -1
  41. package/lib/common/agents-doc.js +33 -33
  42. package/lib/common/agents-doc.js.map +1 -1
  43. package/lib/common/apply-catalog-deps.js +15 -15
  44. package/lib/common/apply-catalog-deps.js.map +1 -1
  45. package/lib/common/component-file-name.js +3 -3
  46. package/lib/common/constant.js +85 -84
  47. package/lib/common/constant.js.map +1 -1
  48. package/lib/common/create-app-target.js +46 -46
  49. package/lib/common/create-app-target.js.map +1 -1
  50. package/lib/common/generate-app.js +106 -106
  51. package/lib/common/generate-app.js.map +1 -1
  52. package/lib/common/get-dependencies.js +9 -9
  53. package/lib/common/get-farris-config.js +25 -25
  54. package/lib/common/get-farris-config.js.map +1 -1
  55. package/lib/common/get-version.js +6 -6
  56. package/lib/common/get-vite-config.js +192 -192
  57. package/lib/common/get-vite-config.js.map +1 -1
  58. package/lib/common/lib-package-exports.js +24 -24
  59. package/lib/common/lib-package-exports.js.map +1 -1
  60. package/lib/common/list-lib-components.js +23 -23
  61. package/lib/common/list-lib-components.js.map +1 -1
  62. package/lib/common/output.js +164 -164
  63. package/lib/common/output.js.map +1 -1
  64. package/lib/common/project-layout.js +155 -155
  65. package/lib/common/project-layout.js.map +1 -1
  66. package/lib/common/safety.js +172 -172
  67. package/lib/common/safety.js.map +1 -1
  68. package/lib/common/template-manifest.js +18 -18
  69. package/lib/common/template-manifest.js.map +1 -1
  70. package/lib/common/template-renderer.js +114 -114
  71. package/lib/common/template-renderer.js.map +1 -1
  72. package/lib/common/transaction.js +83 -83
  73. package/lib/common/transaction.js.map +1 -1
  74. package/lib/common/verifier.js +187 -187
  75. package/lib/common/verifier.js.map +1 -1
  76. package/lib/common/workspace-contract.js +195 -191
  77. package/lib/common/workspace-contract.js.map +1 -1
  78. package/lib/config/vite-app.js +13 -13
  79. package/lib/config/vite-common.js +20 -20
  80. package/lib/config/vite-common.js.map +1 -1
  81. package/lib/config/vite-component.js +32 -32
  82. package/lib/config/vite-component.js.map +1 -1
  83. package/lib/config/vite-lib.js +26 -26
  84. package/lib/index.js +280 -261
  85. package/lib/index.js.map +1 -1
  86. package/lib/plugins/create-app-package-json.js +23 -23
  87. package/lib/plugins/create-component-style.js +44 -44
  88. package/lib/plugins/create-package-json.js +48 -48
  89. package/lib/plugins/create-package-json.js.map +1 -1
  90. package/lib/plugins/dts.js +8 -8
  91. package/lib/plugins/html-system.js +9 -9
  92. package/lib/plugins/mock.js +240 -292
  93. package/lib/plugins/mock.js.map +1 -1
  94. package/lib/plugins/msw-adapter.js +141 -0
  95. package/lib/plugins/msw-adapter.js.map +1 -0
  96. package/lib/plugins/replace.js +17 -17
  97. package/lib/plugins/systemjs-bundle.js +15 -15
  98. package/lib/plugins/systemjs-bundle.js.map +1 -1
  99. package/package.json +93 -87
  100. package/templates/create/AGENTS.md +4 -3
  101. package/templates/lib/.gitignore.tpl +1 -0
  102. package/templates/micro/.gitignore.tpl +1 -0
  103. package/templates/micro/mock/README.md +39 -26
  104. package/templates/micro/mock/tsconfig.json +10 -0
  105. package/templates/micro/package.json +1 -0
  106. package/templates/mobile/.gitignore.tpl +1 -0
  107. package/templates/mobile/mock/README.md +39 -26
  108. package/templates/mobile/mock/tsconfig.json +10 -0
  109. package/templates/mobile/package.json +1 -0
  110. package/templates/web/.gitignore.tpl +1 -0
  111. package/templates/web/mock/README.md +39 -26
  112. package/templates/web/mock/tsconfig.json +10 -0
  113. package/templates/web/package.json +1 -0
@@ -1,6 +1,6 @@
1
- import { addProject } from './add-project.js';
2
- /** 向当前 workspace 添加应用 → app/<name> */
3
- export function addApp(name, options = {}) {
4
- return addProject('app', name, options);
5
- }
1
+ import { addProject } from './add-project.js';
2
+ /** 向当前 workspace 添加应用 → app/<name> */
3
+ export function addApp(name, options = {}) {
4
+ return addProject('app', name, options);
5
+ }
6
6
  //# sourceMappingURL=add-app.js.map
@@ -1,6 +1,6 @@
1
- import { addProject } from './add-project.js';
2
- /** 向当前 workspace 添加组件库 → lib/<name> */
3
- export function addLib(name, options = {}) {
4
- return addProject('lib', name, options);
5
- }
1
+ import { addProject } from './add-project.js';
2
+ /** 向当前 workspace 添加组件库 → lib/<name> */
3
+ export function addLib(name, options = {}) {
4
+ return addProject('lib', name, options);
5
+ }
6
6
  //# sourceMappingURL=add-lib.js.map
@@ -1,12 +1,12 @@
1
- import { addProject } from './add-project.js';
2
- /**
3
- * 向当前 workspace 添加微应用 → `app/<name>`。
4
- *
5
- * 与普通应用同容器(`app/`),靠工程 `package.json` 的 `farris.type = 'micro'` 区分;
6
- * 模板自带微前端契约(`window.mount` / `window.unmount` / `__MICRO_APP_ENVIRONMENT__`),
7
- * 交付默认 iife 单文件。
8
- */
9
- export function addMicro(name, options = {}) {
10
- return addProject('micro', name, options);
11
- }
1
+ import { addProject } from './add-project.js';
2
+ /**
3
+ * 向当前 workspace 添加微应用 → `app/<name>`。
4
+ *
5
+ * 与普通应用同容器(`app/`),靠工程 `package.json` 的 `farris.type = 'micro'` 区分;
6
+ * 模板自带微前端契约(`window.mount` / `window.unmount` / `__MICRO_APP_ENVIRONMENT__`),
7
+ * 交付默认 iife 单文件。
8
+ */
9
+ export function addMicro(name, options = {}) {
10
+ return addProject('micro', name, options);
11
+ }
12
12
  //# sourceMappingURL=add-micro.js.map
@@ -1,197 +1,197 @@
1
- import { existsSync, mkdirSync, readFileSync, rmSync, unlinkSync, writeFileSync } from 'node:fs';
2
- import { join } from 'node:path';
3
- import inquirer from 'inquirer';
4
- import { ExitCode } from '../common/constant.js';
5
- import { applyCatalogDeps } from '../common/apply-catalog-deps.js';
6
- import { CreateAppError } from '../common/create-app-target.js';
7
- import { checkPlannedConflicts } from '../common/safety.js';
8
- import { refreshAgentsProjectList } from '../common/agents-doc.js';
9
- import { containerFor, deriveAppDir, findWorkspaceRoot, listProjects, validatePackageName } from '../common/project-layout.js';
10
- import { resolveTemplate, getTemplateDir } from '../common/template-manifest.js';
11
- import { appTemplateFilter, buildTemplateVariables } from '../common/generate-app.js';
12
- import { collectTemplateOutputPaths, renderTemplateDir } from '../common/template-renderer.js';
13
- import { Transaction } from '../common/transaction.js';
14
- import { verifyWorkspace } from '../common/verifier.js';
15
- import { DEFAULT_APP_FORMAT, DEFAULT_LIB_FORMATS, DEFAULT_MICRO_FORMAT } from './create-app-options.js';
16
- import { createSpinner, fail, logWarn, printNextSteps, printSuccess, sendJson, setJsonMode } from '../common/output.js';
17
- function projectKindLabel(type) {
18
- if (type === 'lib') {
19
- return '组件库';
20
- }
21
- return type === 'micro' ? '微应用' : '应用';
22
- }
23
- function parseFormats(raw) {
24
- if (!raw) {
25
- return [...DEFAULT_LIB_FORMATS];
26
- }
27
- const parts = raw
28
- .split(',')
29
- .map((part) => part.trim())
30
- .filter(Boolean);
31
- if (parts.length === 0) {
32
- throw new CreateAppError('非法的 --formats: 不能为空');
33
- }
34
- return parts;
35
- }
36
- /**
37
- * `[name]` 是可选位置参数:TTY 下未提供则只问工程名;非交互模式(-y / --json)直接报错,
38
- * 不隐式取默认名,避免覆盖意外(设计文档 §5.1)。
39
- */
40
- async function resolveProjectName(type, nameArg, options) {
41
- const provided = (nameArg ?? '').trim();
42
- if (provided) {
43
- return provided;
44
- }
45
- if (options.json || !process.stdout.isTTY) {
46
- throw new CreateAppError(`非交互模式必须显式指定${projectKindLabel(type)}名称: farris-cli add-${type} <name>`);
47
- }
48
- const answers = await inquirer.createPromptModule()([
49
- { type: 'input', name: 'name', message: `请输入${projectKindLabel(type)}名称` }
50
- ]);
51
- const name = String(answers.name ?? '').trim();
52
- if (!name) {
53
- throw new CreateAppError('名称不能为空');
54
- }
55
- return name;
56
- }
57
- export async function addProject(type, nameArg, options = {}) {
58
- const isJson = !!options.json;
59
- const command = `add-${type}`;
60
- setJsonMode(isJson);
61
- try {
62
- if (type === 'app' && (options.router !== undefined || options.routerMode !== undefined)) {
63
- logWarn('--router / --router-mode 已废弃:新 app 模板始终包含路由,参数被忽略。');
64
- }
65
- const name = await resolveProjectName(type, nameArg, options);
66
- if (!validatePackageName(name)) {
67
- throw new CreateAppError(`非法的工程包名: "${name}"`);
68
- }
69
- const cwd = options.cwd ?? process.cwd();
70
- const wsRoot = findWorkspaceRoot(cwd);
71
- if (!wsRoot) {
72
- throw new CreateAppError('当前目录或上级目录未找到 pnpm workspace(缺少 pnpm-workspace.yaml)。请先执行 npm create farris。');
73
- }
74
- const dir = deriveAppDir(name);
75
- if (!dir || !/^[a-z0-9-_]+$/.test(dir)) {
76
- throw new CreateAppError(`无法从工程名 "${name}" 推导出合法的子目录名`);
77
- }
78
- const projectRel = `${containerFor(type)}/${dir}`;
79
- const projectTargetDir = join(wsRoot, projectRel);
80
- if (existsSync(projectTargetDir)) {
81
- throw new CreateAppError(`工程目录已存在: ${projectRel}`, ExitCode.TARGET_CONFLICT);
82
- }
83
- const duplicated = listProjects(wsRoot).find((project) => project.name === dir);
84
- if (duplicated) {
85
- throw new CreateAppError(`同名工程已存在: ${duplicated.dir}(目录名 ${dir} 在 workspace 内必须唯一)`, ExitCode.TARGET_CONFLICT);
86
- }
87
- const style = options.style ?? 'scss';
88
- const platform = options.platform ?? 'web';
89
- const manifest = resolveTemplate(type === 'lib' ? { type: 'lib' } : type === 'micro' ? { type: 'micro' } : { type: 'app', platform });
90
- const templateDir = getTemplateDir(manifest.id);
91
- const filter = manifest.id === 'lib' ? undefined : appTemplateFilter(style);
92
- const variables = buildTemplateVariables({
93
- packageName: name,
94
- title: options.title,
95
- style,
96
- format: options.format ?? (type === 'micro' ? DEFAULT_MICRO_FORMAT : DEFAULT_APP_FORMAT),
97
- formats: type === 'lib' ? parseFormats(options.formats) ?? [...DEFAULT_LIB_FORMATS] : undefined,
98
- platform: type === 'lib' ? undefined : platform
99
- });
100
- // 目标目录必定是全新的,因此这里的预检当前恒为空;保留它是为了让 add-* 与
101
- // create / workspace create 共用同一条「写入前冲突预检」路径(设计文档 §9.1)。
102
- const conflicts = checkPlannedConflicts(projectTargetDir, collectTemplateOutputPaths(templateDir, filter));
103
- if (conflicts.length > 0 && !options.force) {
104
- throw new CreateAppError(`目标工程目录包含将被模板写入的文件: ${conflicts.join(', ')}。请显式传入 --force 覆盖。`, ExitCode.TARGET_CONFLICT);
105
- }
106
- const transaction = new Transaction();
107
- const spinner = createSpinner(`正在向 workspace 添加${projectKindLabel(type)} ${name}...`);
108
- spinner.start();
109
- try {
110
- mkdirSync(projectTargetDir, { recursive: true });
111
- transaction.recordCreatedDir(projectTargetDir);
112
- const render = renderTemplateDir({
113
- sourceDir: templateDir,
114
- targetDir: projectTargetDir,
115
- variables,
116
- filter
117
- });
118
- if (render.unreplacedPlaceholders.length > 0) {
119
- throw new Error(`模板渲染出现未替换占位符: ${render.unreplacedPlaceholders
120
- .map((item) => `${item.file} (${item.placeholder})`)
121
- .join(', ')}`);
122
- }
123
- render.filesCreated.forEach((file) => transaction.prepareWrite(file));
124
- // 真实版本 → "catalog:"
125
- const projectPkgPath = join(projectTargetDir, 'package.json');
126
- const projectPkg = JSON.parse(readFileSync(projectPkgPath, 'utf8'));
127
- applyCatalogDeps(projectPkg);
128
- writeFileSync(projectPkgPath, JSON.stringify(projectPkg, null, 2) + '\n');
129
- // 仅根目录保留一份 .gitlab-ci.yml
130
- const projectGitlab = join(projectTargetDir, '.gitlab-ci.yml');
131
- if (existsSync(projectGitlab)) {
132
- unlinkSync(projectGitlab);
133
- }
134
- // app 不参与 changesets 发版(lib 保留)
135
- if (type === 'app') {
136
- const changesetDir = join(projectTargetDir, '.changeset');
137
- if (existsSync(changesetDir)) {
138
- rmSync(changesetDir, { recursive: true, force: true });
139
- }
140
- }
141
- // 子工程清单保持新鲜;失败只告警,不作为失败原因(设计文档 §8.1 第 3 条)
142
- if (!refreshAgentsProjectList(wsRoot)) {
143
- logWarn(`未能在 AGENTS.md 中刷新子工程清单,请手动补充 ${projectRel}`);
144
- }
145
- const verifyResult = verifyWorkspace(wsRoot);
146
- if (!verifyResult.ok) {
147
- throw new Error(`Workspace 校验失败: ${verifyResult.errors.join('; ')}`);
148
- }
149
- transaction.commit();
150
- spinner.succeed(`${projectKindLabel(type)} ${name} 添加成功!`);
151
- let installed = false;
152
- if (options.install) {
153
- const { runPnpmInstall } = await import('./workspace/create.js');
154
- const result = await runPnpmInstall(wsRoot, isJson);
155
- installed = result.success;
156
- if (!result.success) {
157
- logWarn(`\n提示: 依赖安装出现异常 (${result.error}),请稍后手动执行 "pnpm install"`);
158
- }
159
- }
160
- if (isJson) {
161
- sendJson({
162
- command,
163
- ok: true,
164
- workspaceRoot: wsRoot,
165
- name,
166
- type,
167
- projectDir: projectRel,
168
- installed,
169
- filesCreated: render.filesCreated
170
- });
171
- return;
172
- }
173
- printSuccess(`已在 ${projectRel} 创建${projectKindLabel(type)} ${name}`);
174
- printNextSteps({
175
- targetArg: '.',
176
- targetDir: wsRoot,
177
- cwd,
178
- installed,
179
- appPackageName: name
180
- });
181
- }
182
- catch (error) {
183
- spinner.fail('添加失败,正在回滚...');
184
- transaction.rollback();
185
- throw error;
186
- }
187
- }
188
- catch (error) {
189
- if (isJson) {
190
- const message = error instanceof Error ? error.message : String(error);
191
- const exitCode = error instanceof CreateAppError ? error.exitCode : ExitCode.GENERAL_ERROR;
192
- fail({ command, error: message, exitCode });
193
- }
194
- throw error;
195
- }
196
- }
1
+ import { existsSync, mkdirSync, readFileSync, rmSync, unlinkSync, writeFileSync } from 'node:fs';
2
+ import { join } from 'node:path';
3
+ import inquirer from 'inquirer';
4
+ import { ExitCode } from '../common/constant.js';
5
+ import { applyCatalogDeps } from '../common/apply-catalog-deps.js';
6
+ import { CreateAppError } from '../common/create-app-target.js';
7
+ import { checkPlannedConflicts } from '../common/safety.js';
8
+ import { refreshAgentsProjectList } from '../common/agents-doc.js';
9
+ import { containerFor, deriveAppDir, findWorkspaceRoot, listProjects, validatePackageName } from '../common/project-layout.js';
10
+ import { resolveTemplate, getTemplateDir } from '../common/template-manifest.js';
11
+ import { appTemplateFilter, buildTemplateVariables } from '../common/generate-app.js';
12
+ import { collectTemplateOutputPaths, renderTemplateDir } from '../common/template-renderer.js';
13
+ import { Transaction } from '../common/transaction.js';
14
+ import { verifyWorkspace } from '../common/verifier.js';
15
+ import { DEFAULT_APP_FORMAT, DEFAULT_LIB_FORMATS, DEFAULT_MICRO_FORMAT } from './create-app-options.js';
16
+ import { createSpinner, fail, logWarn, printNextSteps, printSuccess, sendJson, setJsonMode } from '../common/output.js';
17
+ function projectKindLabel(type) {
18
+ if (type === 'lib') {
19
+ return '组件库';
20
+ }
21
+ return type === 'micro' ? '微应用' : '应用';
22
+ }
23
+ function parseFormats(raw) {
24
+ if (!raw) {
25
+ return [...DEFAULT_LIB_FORMATS];
26
+ }
27
+ const parts = raw
28
+ .split(',')
29
+ .map((part) => part.trim())
30
+ .filter(Boolean);
31
+ if (parts.length === 0) {
32
+ throw new CreateAppError('非法的 --formats: 不能为空');
33
+ }
34
+ return parts;
35
+ }
36
+ /**
37
+ * `[name]` 是可选位置参数:TTY 下未提供则只问工程名;非交互模式(-y / --json)直接报错,
38
+ * 不隐式取默认名,避免覆盖意外(设计文档 §5.1)。
39
+ */
40
+ async function resolveProjectName(type, nameArg, options) {
41
+ const provided = (nameArg ?? '').trim();
42
+ if (provided) {
43
+ return provided;
44
+ }
45
+ if (options.json || !process.stdout.isTTY) {
46
+ throw new CreateAppError(`非交互模式必须显式指定${projectKindLabel(type)}名称: farris-cli add-${type} <name>`);
47
+ }
48
+ const answers = await inquirer.createPromptModule()([
49
+ { type: 'input', name: 'name', message: `请输入${projectKindLabel(type)}名称` }
50
+ ]);
51
+ const name = String(answers.name ?? '').trim();
52
+ if (!name) {
53
+ throw new CreateAppError('名称不能为空');
54
+ }
55
+ return name;
56
+ }
57
+ export async function addProject(type, nameArg, options = {}) {
58
+ const isJson = !!options.json;
59
+ const command = `add-${type}`;
60
+ setJsonMode(isJson);
61
+ try {
62
+ if (type === 'app' && (options.router !== undefined || options.routerMode !== undefined)) {
63
+ logWarn('--router / --router-mode 已废弃:新 app 模板始终包含路由,参数被忽略。');
64
+ }
65
+ const name = await resolveProjectName(type, nameArg, options);
66
+ if (!validatePackageName(name)) {
67
+ throw new CreateAppError(`非法的工程包名: "${name}"`);
68
+ }
69
+ const cwd = options.cwd ?? process.cwd();
70
+ const wsRoot = findWorkspaceRoot(cwd);
71
+ if (!wsRoot) {
72
+ throw new CreateAppError('当前目录或上级目录未找到 pnpm workspace(缺少 pnpm-workspace.yaml)。请先执行 npm create farris。');
73
+ }
74
+ const dir = deriveAppDir(name);
75
+ if (!dir || !/^[a-z0-9-_]+$/.test(dir)) {
76
+ throw new CreateAppError(`无法从工程名 "${name}" 推导出合法的子目录名`);
77
+ }
78
+ const projectRel = `${containerFor(type)}/${dir}`;
79
+ const projectTargetDir = join(wsRoot, projectRel);
80
+ if (existsSync(projectTargetDir)) {
81
+ throw new CreateAppError(`工程目录已存在: ${projectRel}`, ExitCode.TARGET_CONFLICT);
82
+ }
83
+ const duplicated = listProjects(wsRoot).find((project) => project.name === dir);
84
+ if (duplicated) {
85
+ throw new CreateAppError(`同名工程已存在: ${duplicated.dir}(目录名 ${dir} 在 workspace 内必须唯一)`, ExitCode.TARGET_CONFLICT);
86
+ }
87
+ const style = options.style ?? 'scss';
88
+ const platform = options.platform ?? 'web';
89
+ const manifest = resolveTemplate(type === 'lib' ? { type: 'lib' } : type === 'micro' ? { type: 'micro' } : { type: 'app', platform });
90
+ const templateDir = getTemplateDir(manifest.id);
91
+ const filter = manifest.id === 'lib' ? undefined : appTemplateFilter(style);
92
+ const variables = buildTemplateVariables({
93
+ packageName: name,
94
+ title: options.title,
95
+ style,
96
+ format: options.format ?? (type === 'micro' ? DEFAULT_MICRO_FORMAT : DEFAULT_APP_FORMAT),
97
+ formats: type === 'lib' ? parseFormats(options.formats) ?? [...DEFAULT_LIB_FORMATS] : undefined,
98
+ platform: type === 'lib' ? undefined : platform
99
+ });
100
+ // 目标目录必定是全新的,因此这里的预检当前恒为空;保留它是为了让 add-* 与
101
+ // create / workspace create 共用同一条「写入前冲突预检」路径(设计文档 §9.1)。
102
+ const conflicts = checkPlannedConflicts(projectTargetDir, collectTemplateOutputPaths(templateDir, filter));
103
+ if (conflicts.length > 0 && !options.force) {
104
+ throw new CreateAppError(`目标工程目录包含将被模板写入的文件: ${conflicts.join(', ')}。请显式传入 --force 覆盖。`, ExitCode.TARGET_CONFLICT);
105
+ }
106
+ const transaction = new Transaction();
107
+ const spinner = createSpinner(`正在向 workspace 添加${projectKindLabel(type)} ${name}...`);
108
+ spinner.start();
109
+ try {
110
+ mkdirSync(projectTargetDir, { recursive: true });
111
+ transaction.recordCreatedDir(projectTargetDir);
112
+ const render = renderTemplateDir({
113
+ sourceDir: templateDir,
114
+ targetDir: projectTargetDir,
115
+ variables,
116
+ filter
117
+ });
118
+ if (render.unreplacedPlaceholders.length > 0) {
119
+ throw new Error(`模板渲染出现未替换占位符: ${render.unreplacedPlaceholders
120
+ .map((item) => `${item.file} (${item.placeholder})`)
121
+ .join(', ')}`);
122
+ }
123
+ render.filesCreated.forEach((file) => transaction.prepareWrite(file));
124
+ // 真实版本 → "catalog:"
125
+ const projectPkgPath = join(projectTargetDir, 'package.json');
126
+ const projectPkg = JSON.parse(readFileSync(projectPkgPath, 'utf8'));
127
+ applyCatalogDeps(projectPkg);
128
+ writeFileSync(projectPkgPath, JSON.stringify(projectPkg, null, 2) + '\n');
129
+ // 仅根目录保留一份 .gitlab-ci.yml
130
+ const projectGitlab = join(projectTargetDir, '.gitlab-ci.yml');
131
+ if (existsSync(projectGitlab)) {
132
+ unlinkSync(projectGitlab);
133
+ }
134
+ // app 不参与 changesets 发版(lib 保留)
135
+ if (type === 'app') {
136
+ const changesetDir = join(projectTargetDir, '.changeset');
137
+ if (existsSync(changesetDir)) {
138
+ rmSync(changesetDir, { recursive: true, force: true });
139
+ }
140
+ }
141
+ // 子工程清单保持新鲜;失败只告警,不作为失败原因(设计文档 §8.1 第 3 条)
142
+ if (!refreshAgentsProjectList(wsRoot)) {
143
+ logWarn(`未能在 AGENTS.md 中刷新子工程清单,请手动补充 ${projectRel}`);
144
+ }
145
+ const verifyResult = verifyWorkspace(wsRoot);
146
+ if (!verifyResult.ok) {
147
+ throw new Error(`Workspace 校验失败: ${verifyResult.errors.join('; ')}`);
148
+ }
149
+ transaction.commit();
150
+ spinner.succeed(`${projectKindLabel(type)} ${name} 添加成功!`);
151
+ let installed = false;
152
+ if (options.install) {
153
+ const { runPnpmInstall } = await import('./workspace/create.js');
154
+ const result = await runPnpmInstall(wsRoot, isJson);
155
+ installed = result.success;
156
+ if (!result.success) {
157
+ logWarn(`\n提示: 依赖安装出现异常 (${result.error}),请稍后手动执行 "pnpm install"`);
158
+ }
159
+ }
160
+ if (isJson) {
161
+ sendJson({
162
+ command,
163
+ ok: true,
164
+ workspaceRoot: wsRoot,
165
+ name,
166
+ type,
167
+ projectDir: projectRel,
168
+ installed,
169
+ filesCreated: render.filesCreated
170
+ });
171
+ return;
172
+ }
173
+ printSuccess(`已在 ${projectRel} 创建${projectKindLabel(type)} ${name}`);
174
+ printNextSteps({
175
+ targetArg: '.',
176
+ targetDir: wsRoot,
177
+ cwd,
178
+ installed,
179
+ appPackageName: name
180
+ });
181
+ }
182
+ catch (error) {
183
+ spinner.fail('添加失败,正在回滚...');
184
+ transaction.rollback();
185
+ throw error;
186
+ }
187
+ }
188
+ catch (error) {
189
+ if (isJson) {
190
+ const message = error instanceof Error ? error.message : String(error);
191
+ const exitCode = error instanceof CreateAppError ? error.exitCode : ExitCode.GENERAL_ERROR;
192
+ fail({ command, error: message, exitCode });
193
+ }
194
+ throw error;
195
+ }
196
+ }
197
197
  //# sourceMappingURL=add-project.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"add-project.js","sourceRoot":"","sources":["../../src/commands/add-project.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"add-project.js","sourceRoot":"","sources":["../../src/commands/add-project.ts"],"names":[],"mappings":"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"}
@@ -1,61 +1,61 @@
1
- import { existsSync, mkdirSync, readFileSync, rmSync, writeFileSync } from 'node:fs';
2
- import { resolve } from 'node:path';
3
- import ora from 'ora';
4
- import { buildCommon } from './build.js';
5
- import { buildCss } from './build-css.js';
6
- import { CWD } from '../common/constant.js';
7
- import { getFarrisConfigAsync } from '../common/get-farris-config.js';
8
- import { listLibComponents } from '../common/list-lib-components.js';
9
- export async function buildComponents(options) {
10
- const farris = await getFarrisConfigAsync(options.configFile);
11
- const names = listLibComponents(process.cwd(), farris.excludeComponents);
12
- if (names.length === 0) {
13
- // 空组件仓库:暂无可构建的组件,构建视为成功(产物为空),不报错。
14
- // 否则 `farris-cli add-lib` 新建的空仓库 `pnpm build` 会默认失败。
15
- console.log('暂无可构建的组件(components/*/index.ts),跳过构建。');
16
- return;
17
- }
18
- const componentOutDir = farris.componentOutDir || './package/components';
19
- const outDir = farris.outDir || 'dist';
20
- // 干净构建:不依赖用户脚本清理上一版产物(设计文档 §7.4)。
21
- // 只清理组件产物目录与聚合样式,保留 build-lib -ep 已写入的 dist/ 根产物。
22
- // 用调用时的 process.cwd()(与上面的 listLibComponents 一致),不用模块加载时固化的 CWD,
23
- // 避免在非项目根目录下误删同名路径。
24
- const projectRoot = process.cwd();
25
- rmSync(resolve(projectRoot, componentOutDir), { recursive: true, force: true });
26
- rmSync(resolve(projectRoot, outDir, 'index.css'), { force: true });
27
- // Relative to Vite root. Absolute Windows paths get realpath'd (f: → F:)
28
- // and break plugin-vue SFC subrequests.
29
- const entry = Object.fromEntries(names.map((name) => [name, `components/${name}/index.ts`]));
30
- const spinner = ora('build components begin').start();
31
- spinner.text = 'building components';
32
- await buildCommon({
33
- ...options,
34
- type: 'component',
35
- config: {
36
- publicDir: '',
37
- build: {
38
- emptyOutDir: false,
39
- lib: { entry },
40
- outDir: resolve(CWD, componentOutDir)
41
- }
42
- }
43
- });
44
- const cssFiles = [];
45
- for (const name of names) {
46
- const scss = resolve(CWD, 'components', name, 'src', `${name}.scss`);
47
- if (!existsSync(scss)) {
48
- continue;
49
- }
50
- const outfile = resolve(CWD, componentOutDir, name, 'index.css');
51
- await buildCss({ ...options, entry: scss, outfile, showSpinner: false });
52
- cssFiles.push(outfile);
53
- }
54
- if (cssFiles.length > 0) {
55
- const aggregateDir = resolve(CWD, outDir);
56
- mkdirSync(aggregateDir, { recursive: true });
57
- writeFileSync(resolve(aggregateDir, 'index.css'), cssFiles.map((file) => readFileSync(file, 'utf-8')).join('\n'));
58
- }
59
- spinner.succeed('build components success');
60
- }
1
+ import { existsSync, mkdirSync, readFileSync, rmSync, writeFileSync } from 'node:fs';
2
+ import { resolve } from 'node:path';
3
+ import ora from 'ora';
4
+ import { buildCommon } from './build.js';
5
+ import { buildCss } from './build-css.js';
6
+ import { CWD } from '../common/constant.js';
7
+ import { getFarrisConfigAsync } from '../common/get-farris-config.js';
8
+ import { listLibComponents } from '../common/list-lib-components.js';
9
+ export async function buildComponents(options) {
10
+ const farris = await getFarrisConfigAsync(options.configFile);
11
+ const names = listLibComponents(process.cwd(), farris.excludeComponents);
12
+ if (names.length === 0) {
13
+ // 空组件仓库:暂无可构建的组件,构建视为成功(产物为空),不报错。
14
+ // 否则 `farris-cli add-lib` 新建的空仓库 `pnpm build` 会默认失败。
15
+ console.log('暂无可构建的组件(components/*/index.ts),跳过构建。');
16
+ return;
17
+ }
18
+ const componentOutDir = farris.componentOutDir || './package/components';
19
+ const outDir = farris.outDir || 'dist';
20
+ // 干净构建:不依赖用户脚本清理上一版产物(设计文档 §7.4)。
21
+ // 只清理组件产物目录与聚合样式,保留 build-lib -ep 已写入的 dist/ 根产物。
22
+ // 用调用时的 process.cwd()(与上面的 listLibComponents 一致),不用模块加载时固化的 CWD,
23
+ // 避免在非项目根目录下误删同名路径。
24
+ const projectRoot = process.cwd();
25
+ rmSync(resolve(projectRoot, componentOutDir), { recursive: true, force: true });
26
+ rmSync(resolve(projectRoot, outDir, 'index.css'), { force: true });
27
+ // Relative to Vite root. Absolute Windows paths get realpath'd (f: → F:)
28
+ // and break plugin-vue SFC subrequests.
29
+ const entry = Object.fromEntries(names.map((name) => [name, `components/${name}/index.ts`]));
30
+ const spinner = ora('build components begin').start();
31
+ spinner.text = 'building components';
32
+ await buildCommon({
33
+ ...options,
34
+ type: 'component',
35
+ config: {
36
+ publicDir: '',
37
+ build: {
38
+ emptyOutDir: false,
39
+ lib: { entry },
40
+ outDir: resolve(CWD, componentOutDir)
41
+ }
42
+ }
43
+ });
44
+ const cssFiles = [];
45
+ for (const name of names) {
46
+ const scss = resolve(CWD, 'components', name, 'src', `${name}.scss`);
47
+ if (!existsSync(scss)) {
48
+ continue;
49
+ }
50
+ const outfile = resolve(CWD, componentOutDir, name, 'index.css');
51
+ await buildCss({ ...options, entry: scss, outfile, showSpinner: false });
52
+ cssFiles.push(outfile);
53
+ }
54
+ if (cssFiles.length > 0) {
55
+ const aggregateDir = resolve(CWD, outDir);
56
+ mkdirSync(aggregateDir, { recursive: true });
57
+ writeFileSync(resolve(aggregateDir, 'index.css'), cssFiles.map((file) => readFileSync(file, 'utf-8')).join('\n'));
58
+ }
59
+ spinner.succeed('build components success');
60
+ }
61
61
  //# sourceMappingURL=build-components.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"build-components.js","sourceRoot":"","sources":["../../src/commands/build-components.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"build-components.js","sourceRoot":"","sources":["../../src/commands/build-components.ts"],"names":[],"mappings":"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"}