@farris/cli 2.2.5 → 2.3.0

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 (165) hide show
  1. package/lib/commands/add-app.js +6 -0
  2. package/lib/commands/add-app.js.map +1 -0
  3. package/lib/commands/add-lib.js +6 -0
  4. package/lib/commands/add-lib.js.map +1 -0
  5. package/lib/commands/add-project.js +194 -0
  6. package/lib/commands/add-project.js.map +1 -0
  7. package/lib/commands/build-components.js +57 -50
  8. package/lib/commands/build-components.js.map +1 -1
  9. package/lib/commands/build-css.js +38 -38
  10. package/lib/commands/build-css.js.map +1 -1
  11. package/lib/commands/build-lib.js +30 -25
  12. package/lib/commands/build-lib.js.map +1 -1
  13. package/lib/commands/build.js +19 -14
  14. package/lib/commands/build.js.map +1 -1
  15. package/lib/commands/create-app-options.js +72 -74
  16. package/lib/commands/create-app-options.js.map +1 -1
  17. package/lib/commands/create-app.js +131 -126
  18. package/lib/commands/create-app.js.map +1 -1
  19. package/lib/commands/create-options.js +32 -29
  20. package/lib/commands/create-options.js.map +1 -1
  21. package/lib/commands/create.js +277 -224
  22. package/lib/commands/create.js.map +1 -1
  23. package/lib/commands/dev-serve.js +18 -18
  24. package/lib/commands/extract-i18n.js +74 -74
  25. package/lib/commands/extract-i18n.js.map +1 -1
  26. package/lib/commands/generate/api.js +124 -124
  27. package/lib/commands/generate/api.js.map +1 -1
  28. package/lib/commands/generate/common.js +101 -100
  29. package/lib/commands/generate/common.js.map +1 -1
  30. package/lib/commands/generate/component.js +156 -156
  31. package/lib/commands/generate/component.js.map +1 -1
  32. package/lib/commands/generate/view.js +168 -168
  33. package/lib/commands/generate/view.js.map +1 -1
  34. package/lib/commands/preview-serve.js +16 -16
  35. package/lib/commands/workspace/add-app.js +15 -180
  36. package/lib/commands/workspace/add-app.js.map +1 -1
  37. package/lib/commands/workspace/create.js +62 -379
  38. package/lib/commands/workspace/create.js.map +1 -1
  39. package/lib/commands/workspace/inspect.js +30 -30
  40. package/lib/commands/workspace/inspect.js.map +1 -1
  41. package/lib/commands/workspace/verify.js +38 -38
  42. package/lib/commands/workspace/verify.js.map +1 -1
  43. package/lib/common/agents-doc.js +34 -0
  44. package/lib/common/agents-doc.js.map +1 -0
  45. package/lib/common/apply-catalog-deps.js +15 -15
  46. package/lib/common/apply-catalog-deps.js.map +1 -1
  47. package/lib/common/component-file-name.js +3 -3
  48. package/lib/common/constant.js +64 -64
  49. package/lib/common/constant.js.map +1 -1
  50. package/lib/common/create-app-target.js +46 -46
  51. package/lib/common/create-app-target.js.map +1 -1
  52. package/lib/common/generate-app.js +109 -85
  53. package/lib/common/generate-app.js.map +1 -1
  54. package/lib/common/get-dependencies.js +9 -9
  55. package/lib/common/get-farris-config.js +25 -25
  56. package/lib/common/get-farris-config.js.map +1 -1
  57. package/lib/common/get-version.js +6 -6
  58. package/lib/common/get-vite-config.js +106 -106
  59. package/lib/common/get-vite-config.js.map +1 -1
  60. package/lib/common/lib-package-exports.js +24 -24
  61. package/lib/common/lib-package-exports.js.map +1 -1
  62. package/lib/common/list-lib-components.js +23 -23
  63. package/lib/common/list-lib-components.js.map +1 -1
  64. package/lib/common/output.js +164 -94
  65. package/lib/common/output.js.map +1 -1
  66. package/lib/common/project-layout.js +143 -0
  67. package/lib/common/project-layout.js.map +1 -0
  68. package/lib/common/safety.js +173 -171
  69. package/lib/common/safety.js.map +1 -1
  70. package/lib/common/template-manifest.js +14 -16
  71. package/lib/common/template-manifest.js.map +1 -1
  72. package/lib/common/template-renderer.js +114 -114
  73. package/lib/common/template-renderer.js.map +1 -1
  74. package/lib/common/transaction.js +83 -83
  75. package/lib/common/transaction.js.map +1 -1
  76. package/lib/common/verifier.js +194 -150
  77. package/lib/common/verifier.js.map +1 -1
  78. package/lib/common/workspace-contract.js +86 -0
  79. package/lib/common/workspace-contract.js.map +1 -0
  80. package/lib/config/vite-app.js +13 -13
  81. package/lib/config/vite-common.js +20 -20
  82. package/lib/config/vite-common.js.map +1 -1
  83. package/lib/config/vite-component.js +32 -32
  84. package/lib/config/vite-component.js.map +1 -1
  85. package/lib/config/vite-lib.js +26 -26
  86. package/lib/index.js +234 -205
  87. package/lib/index.js.map +1 -1
  88. package/lib/plugins/create-app-package-json.js +24 -0
  89. package/lib/plugins/create-app-package-json.js.map +1 -0
  90. package/lib/plugins/create-component-style.js +44 -44
  91. package/lib/plugins/create-package-json.js +48 -48
  92. package/lib/plugins/create-package-json.js.map +1 -1
  93. package/lib/plugins/dts.js +8 -8
  94. package/lib/plugins/html-system.js +9 -9
  95. package/lib/plugins/replace.js +17 -17
  96. package/lib/plugins/systemjs-bundle.js +15 -15
  97. package/lib/plugins/systemjs-bundle.js.map +1 -1
  98. package/package.json +53 -52
  99. package/templates/create/.gitignore.tpl +12 -0
  100. package/templates/create/.npmrc.tpl +1 -0
  101. package/templates/create/AGENTS.md +62 -0
  102. package/templates/create/CLAUDE.md +1 -0
  103. package/templates/create/README.md +14 -1
  104. package/templates/create/package.json +11 -3
  105. package/templates/create/pnpm-workspace.yaml +2 -1
  106. package/templates/lib/.eslintrc.cjs +15 -0
  107. package/templates/lib/.gitignore.tpl +3 -0
  108. package/templates/lib/.prettierrc.json +8 -0
  109. package/templates/lib/index.html +1 -1
  110. package/templates/lib/package.json +39 -4
  111. package/templates/lib/{components → test/components}/button/button.spec.ts +3 -2
  112. package/templates/lib/test/components/button/button.spec.tsx +11 -0
  113. package/templates/lib/tsconfig.json +5 -1
  114. package/templates/lib/vitest.config.ts +1 -1
  115. package/templates/mobile/.gitignore.tpl +31 -0
  116. package/templates/mobile/.gitlab-ci.yml +3 -9
  117. package/templates/mobile/index.html +1 -1
  118. package/templates/mobile/package.json +14 -10
  119. package/templates/mobile/src/main.ts +5 -4
  120. package/templates/mobile/src/router/index.ts +17 -17
  121. package/templates/mobile/test/src/components/TheButton.spec.ts +15 -0
  122. package/templates/mobile/test/src/components/TheButton.spec.tsx +15 -0
  123. package/templates/mobile/tsconfig.json +3 -2
  124. package/templates/mobile/vitest.config.ts +2 -1
  125. package/templates/web/.gitignore.tpl +31 -0
  126. package/templates/web/.gitlab-ci.yml +3 -9
  127. package/templates/web/index.html +1 -1
  128. package/templates/web/package.json +14 -10
  129. package/templates/web/src/locales/index.ts +5 -0
  130. package/templates/web/src/locales/zh-CN.json +1 -0
  131. package/templates/web/src/main.ts +5 -2
  132. package/templates/web/src/router/index.ts +17 -17
  133. package/templates/web/src/styles/index.css +0 -0
  134. package/templates/web/src/styles/index.scss +0 -0
  135. package/templates/web/test/src/components/TheButton.spec.ts +15 -0
  136. package/templates/web/test/src/components/TheButton.spec.tsx +15 -0
  137. package/templates/web/tsconfig.json +3 -2
  138. package/templates/web/vitest.config.ts +2 -1
  139. package/lib/common/project-package-name.js +0 -5
  140. package/lib/common/project-package-name.js.map +0 -1
  141. package/templates/mobile/.changeset/README.md +0 -4
  142. package/templates/mobile/.changeset/config.json +0 -11
  143. package/templates/mobile/project.json +0 -4
  144. package/templates/mobile/src/components/TheButton.spec.ts +0 -8
  145. package/templates/web/.changeset/README.md +0 -4
  146. package/templates/web/.changeset/config.json +0 -11
  147. package/templates/web/project.json +0 -4
  148. package/templates/web/src/components/TheButton.spec.ts +0 -8
  149. package/templates/workspace/app/farris.config.mjs +0 -13
  150. package/templates/workspace/app/index.html +0 -12
  151. package/templates/workspace/app/package.json +0 -22
  152. package/templates/workspace/app/src/App.tsx +0 -11
  153. package/templates/workspace/app/src/main.ts +0 -12
  154. package/templates/workspace/app/src/router/index.ts +0 -16
  155. package/templates/workspace/app/src/views/home/composables/use-home.ts +0 -7
  156. package/templates/workspace/app/src/views/home/home.component.tsx +0 -15
  157. package/templates/workspace/app/src/views/home/index.ts +0 -4
  158. package/templates/workspace/app/tsconfig.json +0 -21
  159. package/templates/workspace/root/README.md +0 -28
  160. package/templates/workspace/root/package.json +0 -13
  161. package/templates/workspace/root/pnpm-workspace.yaml +0 -12
  162. /package/templates/{workspace/app → mobile}/src/locales/index.ts +0 -0
  163. /package/templates/{workspace/app → mobile}/src/locales/zh-CN.json +0 -0
  164. /package/templates/{workspace/app → mobile}/src/styles/index.css +0 -0
  165. /package/templates/{workspace/app → mobile}/src/styles/index.scss +0 -0
@@ -1,225 +1,278 @@
1
- import { existsSync, mkdirSync, readFileSync, rmSync, unlinkSync, writeFileSync } from 'node:fs';
2
- import { join, resolve } from 'node:path';
3
- import inquirer from 'inquirer';
4
- import { ExitCode, DEFAULT_CATALOG_VERSIONS, getDirname } from '../common/constant.js';
5
- import { applyCatalogDeps } from '../common/apply-catalog-deps.js';
6
- import { generateApp } from '../common/generate-app.js';
7
- import { fail, logInfo, sendJson, setJsonMode } from '../common/output.js';
8
- import { renderTemplateDir } from '../common/template-renderer.js';
9
- import { ALLOWED_TYPES, assertTargetDirectoryFree, CreateAppError, DEFAULT_LIB_FORMATS, resolvePackageName } from './create-app-options.js';
10
- export { parseCreateArgv } from './create-options.js';
11
- const DEFAULT_WORKSPACE = 'my-workspace';
12
- const DEFAULT_APP = 'app';
13
- function createTemplateDir() {
14
- return resolve(getDirname(import.meta.url), '../../templates/create');
15
- }
16
- function catalogVariables() {
17
- return {
18
- pnpmVersion: DEFAULT_CATALOG_VERSIONS.pnpm,
19
- farrisUiVueVersion: DEFAULT_CATALOG_VERSIONS['@farris/ui-vue'],
20
- farrisCliVersion: DEFAULT_CATALOG_VERSIONS['@farris/cli'],
21
- typescriptVersion: DEFAULT_CATALOG_VERSIONS.typescript,
22
- viteVersion: DEFAULT_CATALOG_VERSIONS.vite,
23
- vueVersion: DEFAULT_CATALOG_VERSIONS.vue,
24
- vueRouterVersion: DEFAULT_CATALOG_VERSIONS['vue-router'],
25
- vueTscVersion: DEFAULT_CATALOG_VERSIONS['vue-tsc'],
26
- sassVersion: DEFAULT_CATALOG_VERSIONS.sass
27
- };
28
- }
29
- function assertAppName(appName) {
30
- const trimmed = appName.trim();
31
- if (!trimmed || trimmed === '.' || trimmed === '..') {
32
- throw new CreateAppError('应用名称不能为空或为 . / ..');
33
- }
34
- if (trimmed.includes('/') || trimmed.includes('\\') || trimmed.includes('\0')) {
35
- throw new CreateAppError(`应用名称必须是单段目录名: ${appName}`);
36
- }
37
- }
38
- function assertProjectType(type) {
39
- if (!ALLOWED_TYPES.includes(type)) {
40
- throw new CreateAppError(`非法的工程类型: ${type},允许值为 ${ALLOWED_TYPES.join(', ')}`);
41
- }
42
- return type;
43
- }
44
- function rootTemplateVariables(createApp, appRel, pkgType = 'app') {
45
- if (createApp && appRel) {
46
- const artifactDir = pkgType === 'lib' ? `${appRel}/lib` : `${appRel}/dist`;
47
- const publishSteps = pkgType === 'lib'
48
- ? [' - cd dist', ' - npm publish']
49
- : [
50
- ` - cp ${appRel}/project.json dist/package.json`,
51
- ' - cd dist',
52
- ' - npm publish'
53
- ];
54
- return {
55
- rootDevScript: `pnpm --filter ./${appRel} run dev`,
56
- rootBuildScript: `pnpm --filter ./${appRel} run build`,
57
- rootTestScript: `pnpm --filter ./${appRel} run test`,
58
- ciBuildSteps: [
59
- ` - pnpm --filter ./${appRel} run build`,
60
- ' - mkdir -p dist',
61
- ` - cp -r ${artifactDir}/. dist/`
62
- ].join('\n'),
63
- ciPublishSteps: publishSteps.join('\n'),
64
- readmeBody: `pnpm workspace with one Farris ${pkgType} in \`${appRel}\`.`
65
- };
66
- }
67
- return {
68
- rootDevScript: 'pnpm --recursive --if-present run dev',
69
- rootBuildScript: 'pnpm --recursive --if-present run build',
70
- rootTestScript: 'pnpm --recursive --if-present run test',
71
- ciBuildSteps: '',
72
- ciPublishSteps: ' - echo "no app to publish"',
73
- readmeBody: 'pnpm workspace. Add an app under `packages/`.'
74
- };
75
- }
76
- export async function create(nameArg, options = {}) {
77
- const isJson = !!options.json;
78
- setJsonMode(isJson);
79
- const skipPrompt = !!(options.yes || options.json);
80
- try {
81
- let name = (nameArg ?? options.name ?? '').trim();
82
- let createApp = options.noApp ? false : skipPrompt || options.app != null;
83
- let appName = (options.app ?? '').trim() || DEFAULT_APP;
84
- let pkgType = 'app';
85
- if (!skipPrompt) {
86
- const prompt = inquirer.createPromptModule();
87
- if (!name) {
88
- const answers = await prompt([
89
- {
90
- type: 'input',
91
- name: 'name',
92
- message: '请输入 workspace 名称',
93
- default: DEFAULT_WORKSPACE
94
- }
95
- ]);
96
- name = String(answers.name).trim() || DEFAULT_WORKSPACE;
97
- }
98
- if (!options.noApp && options.app == null) {
99
- const answers = await prompt([
100
- {
101
- type: 'confirm',
102
- name: 'createApp',
103
- message: '是否现在创建一个工程?',
104
- default: true
105
- }
106
- ]);
107
- createApp = !!answers.createApp;
108
- if (createApp) {
109
- const typeAnswers = await prompt([
110
- {
111
- type: 'list',
112
- name: 'type',
113
- message: '请选择工程类型',
114
- choices: [...ALLOWED_TYPES],
115
- default: 'app'
116
- }
117
- ]);
118
- pkgType = assertProjectType(String(typeAnswers.type));
119
- const appAnswers = await prompt([
120
- {
121
- type: 'input',
122
- name: 'appName',
123
- message: '请输入工程名称',
124
- default: DEFAULT_APP
125
- }
126
- ]);
127
- appName = String(appAnswers.appName).trim() || DEFAULT_APP;
128
- }
129
- }
130
- }
131
- else if (!name) {
132
- name = DEFAULT_WORKSPACE;
133
- }
134
- if (options.noApp) {
135
- createApp = false;
136
- }
137
- assertTargetDirectoryFree(name);
138
- const cwd = process.cwd();
139
- const targetPath = resolve(cwd, name);
140
- const created = !existsSync(targetPath);
141
- let appPackageName;
142
- let appRel;
143
- if (createApp) {
144
- assertAppName(appName);
145
- appPackageName = resolvePackageName(appName);
146
- assertAppName(appPackageName);
147
- appRel = `packages/${appPackageName}`;
148
- }
149
- try {
150
- const rootRender = renderTemplateDir({
151
- sourceDir: createTemplateDir(),
152
- targetDir: targetPath,
153
- variables: {
154
- ...catalogVariables(),
155
- title: name,
156
- ...rootTemplateVariables(createApp, appRel, pkgType)
157
- }
158
- });
159
- if (rootRender.unreplacedPlaceholders.length > 0) {
160
- throw new Error(`根模板未替换: ${rootRender.unreplacedPlaceholders.map((p) => p.placeholder).join(', ')}`);
161
- }
162
- if (createApp && appRel && appPackageName) {
163
- generateApp({
164
- name: join(name, appRel).replace(/\\/g, '/'),
165
- packageName: appPackageName,
166
- type: pkgType,
167
- ...(pkgType === 'lib'
168
- ? { formats: [...DEFAULT_LIB_FORMATS] }
169
- : { platform: 'web', format: 'es' }),
170
- hints: false
171
- });
172
- const appGitlab = join(targetPath, appRel, '.gitlab-ci.yml');
173
- if (existsSync(appGitlab)) {
174
- unlinkSync(appGitlab);
175
- }
176
- const appPkgPath = join(targetPath, appRel, 'package.json');
177
- const appPkg = JSON.parse(readFileSync(appPkgPath, 'utf8'));
178
- applyCatalogDeps(appPkg);
179
- writeFileSync(appPkgPath, JSON.stringify(appPkg, null, 2) + '\n');
180
- }
181
- else {
182
- mkdirSync(join(targetPath, 'packages'), { recursive: true });
183
- }
184
- if (options.install) {
185
- const { runPnpmInstall } = await import('./workspace/create.js');
186
- const result = await runPnpmInstall(targetPath, isJson);
187
- if (!result.success) {
188
- throw new CreateAppError(result.error || 'pnpm install 失败');
189
- }
190
- }
191
- if (!isJson) {
192
- logInfo(`cd ${name}`);
193
- logInfo('pnpm install');
194
- if (createApp) {
195
- logInfo('pnpm dev');
196
- }
197
- }
198
- else {
199
- sendJson({
200
- command: 'create',
201
- ok: true,
202
- name,
203
- createdApp: createApp,
204
- ...(createApp ? { packageName: appPackageName, appDir: appRel, type: pkgType } : {}),
205
- target: targetPath
206
- });
207
- }
208
- }
209
- catch (inner) {
210
- if (created && existsSync(targetPath)) {
211
- rmSync(targetPath, { recursive: true, force: true });
212
- }
213
- throw inner;
214
- }
215
- }
216
- catch (error) {
217
- if (isJson) {
218
- const message = error instanceof Error ? error.message : String(error);
219
- const exitCode = error instanceof CreateAppError ? error.exitCode : ExitCode.GENERAL_ERROR;
220
- fail({ command: 'create', error: message, exitCode });
221
- }
222
- throw error;
223
- }
224
- }
1
+ import { existsSync, mkdirSync, readFileSync, rmSync, unlinkSync, writeFileSync } from 'node:fs';
2
+ import { basename, isAbsolute, join, relative, resolve } from 'node:path';
3
+ import inquirer from 'inquirer';
4
+ import { DEFAULT_CATALOG_VERSIONS, ExitCode, getDirname } from '../common/constant.js';
5
+ import { applyCatalogDeps } from '../common/apply-catalog-deps.js';
6
+ import { checkPlannedConflicts, inspectTarget } from '../common/safety.js';
7
+ import { collectTemplateOutputPaths, renderTemplateDir } from '../common/template-renderer.js';
8
+ import { CreateAppError } from '../common/create-app-target.js';
9
+ import { generateApp } from '../common/generate-app.js';
10
+ import { fail, printNextSteps, printSuccess, sendJson, setJsonMode } from '../common/output.js';
11
+ import { PROJECT_CONTAINERS, containerFor, deriveAppDir } from '../common/project-layout.js';
12
+ import { renderCommandTable, renderProjectList } from '../common/workspace-contract.js';
13
+ import { ALLOWED_TYPES, DEFAULT_LIB_FORMATS, resolvePackageName } from './create-app-options.js';
14
+ export { parseCreateArgv } from './create-options.js';
15
+ const DEFAULT_WORKSPACE = 'my-workspace';
16
+ const DEFAULT_APP = 'app';
17
+ function createTemplateDir() {
18
+ return resolve(getDirname(import.meta.url), '../../templates/create');
19
+ }
20
+ function catalogVariables() {
21
+ return {
22
+ pnpmVersion: DEFAULT_CATALOG_VERSIONS.pnpm,
23
+ farrisUiVueVersion: DEFAULT_CATALOG_VERSIONS['@farris/ui-vue'],
24
+ farrisCliVersion: DEFAULT_CATALOG_VERSIONS['@farris/cli'],
25
+ typescriptVersion: DEFAULT_CATALOG_VERSIONS.typescript,
26
+ viteVersion: DEFAULT_CATALOG_VERSIONS.vite,
27
+ vueVersion: DEFAULT_CATALOG_VERSIONS.vue,
28
+ vueRouterVersion: DEFAULT_CATALOG_VERSIONS['vue-router'],
29
+ vueTscVersion: DEFAULT_CATALOG_VERSIONS['vue-tsc'],
30
+ sassVersion: DEFAULT_CATALOG_VERSIONS.sass
31
+ };
32
+ }
33
+ function assertAppName(appName) {
34
+ const trimmed = appName.trim();
35
+ if (!trimmed || trimmed === '.' || trimmed === '..') {
36
+ throw new CreateAppError('应用名称不能为空或为 . / ..');
37
+ }
38
+ if (trimmed.includes('\0') || trimmed.includes('\\')) {
39
+ throw new CreateAppError(`应用名称必须是单段目录名或带 scope 的包名: ${appName}`);
40
+ }
41
+ // 允许 @scope/name(包名保留 scope,目录名由 deriveAppDir 推导),其余多段路径一律拒绝
42
+ if (trimmed.includes('/') && !/^@[^/]+\/[^/]+$/.test(trimmed)) {
43
+ throw new CreateAppError(`应用名称必须是单段目录名或带 scope 的包名: ${appName}`);
44
+ }
45
+ }
46
+ function assertProjectType(type) {
47
+ if (!ALLOWED_TYPES.includes(type)) {
48
+ throw new CreateAppError(`非法的工程类型: ${type},允许值为 ${ALLOWED_TYPES.join(', ')}`);
49
+ }
50
+ return type;
51
+ }
52
+ /**
53
+ * create 的目标路径:允许 `.`(就地生成,见设计文档 §9.2),仍禁止逃出 cwd。
54
+ */
55
+ function resolveCreateTarget(target, cwd = process.cwd()) {
56
+ const trimmed = (target ?? '').trim();
57
+ if (trimmed.includes('\0')) {
58
+ throw new CreateAppError('目标路径包含非法字符');
59
+ }
60
+ const resolved = resolve(cwd, trimmed);
61
+ const rel = relative(cwd, resolved);
62
+ if (rel.startsWith('..') || isAbsolute(rel)) {
63
+ throw new CreateAppError(`目标目录必须位于当前工作目录内: ${target}`);
64
+ }
65
+ return resolved;
66
+ }
67
+ function rootTemplateVariables(createApp, appRel, pkgType = 'app') {
68
+ if (createApp && appRel) {
69
+ const artifactDir = pkgType === 'lib' ? `${appRel}/lib` : `${appRel}/dist`;
70
+ return {
71
+ ciBuildSteps: [
72
+ ` - pnpm --filter ./${appRel} run build`,
73
+ ' - mkdir -p dist',
74
+ ` - cp -r ${artifactDir}/. dist/`
75
+ ].join('\n'),
76
+ ciPublishSteps: [' - cd dist', ' - npm publish'].join('\n'),
77
+ readmeBody: `pnpm workspace,包含一个 Farris ${pkgType}(\`${appRel}\`)。`
78
+ };
79
+ }
80
+ return {
81
+ ciBuildSteps: '',
82
+ ciPublishSteps: ' - echo "no app to publish"',
83
+ readmeBody: `pnpm workspace,可在 \`${PROJECT_CONTAINERS.app}\` / \`${PROJECT_CONTAINERS.lib}\` 下添加工程。`
84
+ };
85
+ }
86
+ export async function create(nameArg, options = {}) {
87
+ const isJson = !!options.json;
88
+ setJsonMode(isJson);
89
+ const skipPrompt = !!(options.yes || options.json);
90
+ try {
91
+ let name = (nameArg ?? options.name ?? '').trim();
92
+ let createApp = options.noApp ? false : skipPrompt || options.app != null;
93
+ let appName = (options.app ?? '').trim() || DEFAULT_APP;
94
+ let pkgType = 'app';
95
+ if (!skipPrompt) {
96
+ const prompt = inquirer.createPromptModule();
97
+ if (!name) {
98
+ const answers = await prompt([
99
+ {
100
+ type: 'input',
101
+ name: 'name',
102
+ message: '请输入 workspace 名称',
103
+ default: DEFAULT_WORKSPACE
104
+ }
105
+ ]);
106
+ name = String(answers.name).trim() || DEFAULT_WORKSPACE;
107
+ }
108
+ if (!options.noApp && options.app == null) {
109
+ const answers = await prompt([
110
+ {
111
+ type: 'confirm',
112
+ name: 'createApp',
113
+ message: '是否现在创建一个工程?',
114
+ default: true
115
+ }
116
+ ]);
117
+ createApp = !!answers.createApp;
118
+ if (createApp) {
119
+ const typeAnswers = await prompt([
120
+ {
121
+ type: 'list',
122
+ name: 'type',
123
+ message: '请选择工程类型',
124
+ choices: [...ALLOWED_TYPES],
125
+ default: 'app'
126
+ }
127
+ ]);
128
+ pkgType = assertProjectType(String(typeAnswers.type));
129
+ const appAnswers = await prompt([
130
+ {
131
+ type: 'input',
132
+ name: 'appName',
133
+ message: '请输入工程名称',
134
+ default: DEFAULT_APP
135
+ }
136
+ ]);
137
+ appName = String(appAnswers.appName).trim() || DEFAULT_APP;
138
+ }
139
+ }
140
+ }
141
+ else if (!name) {
142
+ name = DEFAULT_WORKSPACE;
143
+ }
144
+ if (options.noApp) {
145
+ createApp = false;
146
+ }
147
+ const cwd = process.cwd();
148
+ const targetArg = name;
149
+ const targetPath = resolveCreateTarget(name, cwd);
150
+ const workspaceTitle = targetArg === '.' ? basename(targetPath) : targetArg;
151
+ const inspect = inspectTarget(targetPath);
152
+ if (!inspect.canCreate) {
153
+ throw new CreateAppError(`目标目录不能用于创建 workspace,状态: ${inspect.status}${inspect.conflicts.length > 0 ? `,冲突项: ${inspect.conflicts.join(', ')}` : ''}`, ExitCode.TARGET_CONFLICT);
154
+ }
155
+ const created = !existsSync(targetPath);
156
+ let appPackageName;
157
+ let appDir;
158
+ let appRel;
159
+ if (createApp) {
160
+ assertAppName(appName);
161
+ appPackageName = resolvePackageName(appName);
162
+ assertAppName(appPackageName);
163
+ appDir = deriveAppDir(appPackageName);
164
+ if (!appDir || !/^[a-z0-9-_]+$/.test(appDir)) {
165
+ throw new CreateAppError(`无法从工程名 "${appPackageName}" 推导出合法的子目录名`);
166
+ }
167
+ appRel = `${containerFor(pkgType)}/${appDir}`;
168
+ }
169
+ const plannedProjects = appRel && appDir ? [{ type: pkgType, dir: appRel, name: appDir }] : [];
170
+ // 写入前冲突预检(设计文档 §9.1)。create 的子工程落在全新容器内,因此只需预检根模板。
171
+ const conflicts = checkPlannedConflicts(targetPath, collectTemplateOutputPaths(createTemplateDir()));
172
+ if (conflicts.length > 0 && !options.force) {
173
+ const shouldOverwrite = !isJson &&
174
+ !skipPrompt &&
175
+ (await inquirer.createPromptModule()([
176
+ {
177
+ type: 'confirm',
178
+ name: 'overwrite',
179
+ message: `以下 ${conflicts.length} 个文件已存在,是否覆盖?\n${conflicts.join('\n')}`,
180
+ default: false
181
+ }
182
+ ])).overwrite;
183
+ if (!shouldOverwrite) {
184
+ throw new CreateAppError(`目标目录包含将被模板写入的文件: ${conflicts.join(', ')}。请交互确认,或显式传入 --force 覆盖。`, ExitCode.TARGET_CONFLICT);
185
+ }
186
+ }
187
+ try {
188
+ const rootRender = renderTemplateDir({
189
+ sourceDir: createTemplateDir(),
190
+ targetDir: targetPath,
191
+ variables: {
192
+ ...catalogVariables(),
193
+ ...rootTemplateVariables(createApp, appRel, pkgType),
194
+ appContainer: PROJECT_CONTAINERS.app,
195
+ libContainer: PROJECT_CONTAINERS.lib,
196
+ commandTable: renderCommandTable(),
197
+ projectList: renderProjectList(plannedProjects),
198
+ title: workspaceTitle
199
+ }
200
+ });
201
+ if (rootRender.unreplacedPlaceholders.length > 0) {
202
+ throw new Error(`根模板未替换: ${rootRender.unreplacedPlaceholders.map((p) => p.placeholder).join(', ')}`);
203
+ }
204
+ // 两个容器目录必须同时存在(pnpm-workspace.yaml 的 glob 与 verifier 都要求);
205
+ // 空容器放 .gitkeep 使其可见且可提交(设计文档 §4.4)。
206
+ for (const container of [PROJECT_CONTAINERS.app, PROJECT_CONTAINERS.lib]) {
207
+ const containerDir = join(targetPath, container);
208
+ mkdirSync(containerDir, { recursive: true });
209
+ if (!appRel || !appRel.startsWith(`${container}/`)) {
210
+ writeFileSync(join(containerDir, '.gitkeep'), '');
211
+ }
212
+ }
213
+ if (createApp && appRel && appPackageName) {
214
+ generateApp({
215
+ name: join(targetPath, appRel).replace(/\\/g, '/'),
216
+ packageName: appPackageName,
217
+ title: workspaceTitle,
218
+ type: pkgType,
219
+ ...(pkgType === 'lib'
220
+ ? { formats: [...DEFAULT_LIB_FORMATS] }
221
+ : { platform: options.platform ?? 'web', format: options.format ?? 'es', style: options.style ?? 'css' }),
222
+ hints: false
223
+ });
224
+ // 根目录只保留一份 .gitlab-ci.yml
225
+ const appGitlab = join(targetPath, appRel, '.gitlab-ci.yml');
226
+ if (existsSync(appGitlab)) {
227
+ unlinkSync(appGitlab);
228
+ }
229
+ const appPkgPath = join(targetPath, appRel, 'package.json');
230
+ const appPkg = JSON.parse(readFileSync(appPkgPath, 'utf8'));
231
+ applyCatalogDeps(appPkg);
232
+ writeFileSync(appPkgPath, JSON.stringify(appPkg, null, 2) + '\n');
233
+ }
234
+ if (options.install) {
235
+ const { runPnpmInstall } = await import('./workspace/create.js');
236
+ const result = await runPnpmInstall(targetPath, isJson);
237
+ if (!result.success) {
238
+ throw new CreateAppError(result.error || 'pnpm install 失败');
239
+ }
240
+ }
241
+ if (isJson) {
242
+ sendJson({
243
+ command: 'create',
244
+ ok: true,
245
+ name: workspaceTitle,
246
+ createdApp: createApp,
247
+ ...(createApp ? { packageName: appPackageName, appDir: appRel, type: pkgType } : {}),
248
+ target: targetPath
249
+ });
250
+ }
251
+ else {
252
+ printSuccess(`工作空间已创建 ${targetPath}`);
253
+ printNextSteps({
254
+ targetArg,
255
+ targetDir: targetPath,
256
+ cwd,
257
+ installed: !!options.install,
258
+ appPackageName
259
+ });
260
+ }
261
+ }
262
+ catch (inner) {
263
+ if (created && existsSync(targetPath)) {
264
+ rmSync(targetPath, { recursive: true, force: true });
265
+ }
266
+ throw inner;
267
+ }
268
+ }
269
+ catch (error) {
270
+ if (isJson) {
271
+ const message = error instanceof Error ? error.message : String(error);
272
+ const exitCode = error instanceof CreateAppError ? error.exitCode : ExitCode.GENERAL_ERROR;
273
+ fail({ command: 'create', error: message, exitCode });
274
+ }
275
+ throw error;
276
+ }
277
+ }
225
278
  //# sourceMappingURL=create.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"create.js","sourceRoot":"","sources":["../../src/commands/create.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"create.js","sourceRoot":"","sources":["../../src/commands/create.ts"],"names":[],"mappings":"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"}
@@ -1,19 +1,19 @@
1
- import { createServer, mergeConfig } from 'vite';
2
- import { getViteConfig } from '../common/get-vite-config.js';
3
- export const devServe = async (options) => {
4
- const { port = 1337, host = true } = options;
5
- const config = await getViteConfig();
6
- const devConfig = mergeConfig(config, {
7
- configFile: false,
8
- mode: 'dev',
9
- server: {
10
- port,
11
- host,
12
- hmr: true
13
- }
14
- });
15
- const server = await createServer(devConfig);
16
- await server.listen();
17
- server.printUrls();
18
- };
1
+ import { createServer, mergeConfig } from 'vite';
2
+ import { getViteConfig } from '../common/get-vite-config.js';
3
+ export const devServe = async (options) => {
4
+ const { port = 1337, host = true } = options;
5
+ const config = await getViteConfig();
6
+ const devConfig = mergeConfig(config, {
7
+ configFile: false,
8
+ mode: 'dev',
9
+ server: {
10
+ port,
11
+ host,
12
+ hmr: true
13
+ }
14
+ });
15
+ const server = await createServer(devConfig);
16
+ await server.listen();
17
+ server.printUrls();
18
+ };
19
19
  //# sourceMappingURL=dev-serve.js.map