@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
@@ -0,0 +1,6 @@
1
+ import { addProject } from './add-project.js';
2
+ /** 向当前 workspace 添加应用 → applications/<name> */
3
+ export function addApp(name, options = {}) {
4
+ return addProject('app', name, options);
5
+ }
6
+ //# sourceMappingURL=add-app.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"add-app.js","sourceRoot":"","sources":["../../src/commands/add-app.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAA0B,MAAM,kBAAkB,CAAC;AAItE,+CAA+C;AAC/C,MAAM,UAAU,MAAM,CAAC,IAAa,EAAE,UAA6B,EAAE;IACnE,OAAO,UAAU,CAAC,KAAK,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;AAC1C,CAAC"}
@@ -0,0 +1,6 @@
1
+ import { addProject } from './add-project.js';
2
+ /** 向当前 workspace 添加组件库 → libraries/<name> */
3
+ export function addLib(name, options = {}) {
4
+ return addProject('lib', name, options);
5
+ }
6
+ //# sourceMappingURL=add-lib.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"add-lib.js","sourceRoot":"","sources":["../../src/commands/add-lib.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAA0B,MAAM,kBAAkB,CAAC;AAItE,6CAA6C;AAC7C,MAAM,UAAU,MAAM,CAAC,IAAa,EAAE,UAA6B,EAAE;IACnE,OAAO,UAAU,CAAC,KAAK,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;AAC1C,CAAC"}
@@ -0,0 +1,194 @@
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 { createSpinner, fail, logWarn, printNextSteps, printSuccess, sendJson, setJsonMode } from '../common/output.js';
16
+ const DEFAULT_LIB_FORMATS = ['es', 'cjs', 'umd'];
17
+ function projectKindLabel(type) {
18
+ return type === 'lib' ? '组件库' : '应用';
19
+ }
20
+ function parseFormats(raw) {
21
+ if (!raw) {
22
+ return [...DEFAULT_LIB_FORMATS];
23
+ }
24
+ const parts = raw
25
+ .split(',')
26
+ .map((part) => part.trim())
27
+ .filter(Boolean);
28
+ if (parts.length === 0) {
29
+ throw new CreateAppError('非法的 --formats: 不能为空');
30
+ }
31
+ return parts;
32
+ }
33
+ /**
34
+ * `[name]` 是可选位置参数:TTY 下未提供则只问工程名;非交互模式(-y / --json)直接报错,
35
+ * 不隐式取默认名,避免覆盖意外(设计文档 §5.1)。
36
+ */
37
+ async function resolveProjectName(type, nameArg, options) {
38
+ const provided = (nameArg ?? '').trim();
39
+ if (provided) {
40
+ return provided;
41
+ }
42
+ if (options.json || !process.stdout.isTTY) {
43
+ throw new CreateAppError(`非交互模式必须显式指定${projectKindLabel(type)}名称: farris-cli add-${type} <name>`);
44
+ }
45
+ const answers = await inquirer.createPromptModule()([
46
+ { type: 'input', name: 'name', message: `请输入${projectKindLabel(type)}名称` }
47
+ ]);
48
+ const name = String(answers.name ?? '').trim();
49
+ if (!name) {
50
+ throw new CreateAppError('名称不能为空');
51
+ }
52
+ return name;
53
+ }
54
+ export async function addProject(type, nameArg, options = {}) {
55
+ const isJson = !!options.json;
56
+ const command = `add-${type}`;
57
+ setJsonMode(isJson);
58
+ try {
59
+ if (type === 'app' && (options.router !== undefined || options.routerMode !== undefined)) {
60
+ logWarn('--router / --router-mode 已废弃:新 app 模板始终包含路由,参数被忽略。');
61
+ }
62
+ const name = await resolveProjectName(type, nameArg, options);
63
+ if (!validatePackageName(name)) {
64
+ throw new CreateAppError(`非法的工程包名: "${name}"`);
65
+ }
66
+ const cwd = options.cwd ?? process.cwd();
67
+ const wsRoot = findWorkspaceRoot(cwd);
68
+ if (!wsRoot) {
69
+ throw new CreateAppError('当前目录或上级目录未找到 pnpm workspace(缺少 pnpm-workspace.yaml)。请先执行 npm create farris。');
70
+ }
71
+ const dir = deriveAppDir(name);
72
+ if (!dir || !/^[a-z0-9-_]+$/.test(dir)) {
73
+ throw new CreateAppError(`无法从工程名 "${name}" 推导出合法的子目录名`);
74
+ }
75
+ const projectRel = `${containerFor(type)}/${dir}`;
76
+ const projectTargetDir = join(wsRoot, projectRel);
77
+ if (existsSync(projectTargetDir)) {
78
+ throw new CreateAppError(`工程目录已存在: ${projectRel}`, ExitCode.TARGET_CONFLICT);
79
+ }
80
+ const duplicated = listProjects(wsRoot).find((project) => project.name === dir);
81
+ if (duplicated) {
82
+ throw new CreateAppError(`同名工程已存在: ${duplicated.dir}(目录名 ${dir} 在 workspace 内必须唯一)`, ExitCode.TARGET_CONFLICT);
83
+ }
84
+ const style = options.style ?? 'css';
85
+ const platform = options.platform ?? 'web';
86
+ const manifest = resolveTemplate(type === 'lib' ? { type: 'lib' } : { type: 'app', platform });
87
+ const templateDir = getTemplateDir(manifest.id);
88
+ const filter = manifest.id === 'lib' ? undefined : appTemplateFilter(style);
89
+ const variables = buildTemplateVariables({
90
+ packageName: name,
91
+ title: options.title,
92
+ style,
93
+ format: options.format ?? 'es',
94
+ formats: type === 'lib' ? parseFormats(options.formats) : undefined,
95
+ platform: type === 'app' ? platform : undefined
96
+ });
97
+ // 目标目录必定是全新的,因此这里的预检当前恒为空;保留它是为了让 add-* 与
98
+ // create / workspace create 共用同一条「写入前冲突预检」路径(设计文档 §9.1)。
99
+ const conflicts = checkPlannedConflicts(projectTargetDir, collectTemplateOutputPaths(templateDir, filter));
100
+ if (conflicts.length > 0 && !options.force) {
101
+ throw new CreateAppError(`目标工程目录包含将被模板写入的文件: ${conflicts.join(', ')}。请显式传入 --force 覆盖。`, ExitCode.TARGET_CONFLICT);
102
+ }
103
+ const transaction = new Transaction();
104
+ const spinner = createSpinner(`正在向 workspace 添加${projectKindLabel(type)} ${name}...`);
105
+ spinner.start();
106
+ try {
107
+ mkdirSync(projectTargetDir, { recursive: true });
108
+ transaction.recordCreatedDir(projectTargetDir);
109
+ const render = renderTemplateDir({
110
+ sourceDir: templateDir,
111
+ targetDir: projectTargetDir,
112
+ variables,
113
+ filter
114
+ });
115
+ if (render.unreplacedPlaceholders.length > 0) {
116
+ throw new Error(`模板渲染出现未替换占位符: ${render.unreplacedPlaceholders
117
+ .map((item) => `${item.file} (${item.placeholder})`)
118
+ .join(', ')}`);
119
+ }
120
+ render.filesCreated.forEach((file) => transaction.prepareWrite(file));
121
+ // 真实版本 → "catalog:"
122
+ const projectPkgPath = join(projectTargetDir, 'package.json');
123
+ const projectPkg = JSON.parse(readFileSync(projectPkgPath, 'utf8'));
124
+ applyCatalogDeps(projectPkg);
125
+ writeFileSync(projectPkgPath, JSON.stringify(projectPkg, null, 2) + '\n');
126
+ // 仅根目录保留一份 .gitlab-ci.yml
127
+ const projectGitlab = join(projectTargetDir, '.gitlab-ci.yml');
128
+ if (existsSync(projectGitlab)) {
129
+ unlinkSync(projectGitlab);
130
+ }
131
+ // app 不参与 changesets 发版(lib 保留)
132
+ if (type === 'app') {
133
+ const changesetDir = join(projectTargetDir, '.changeset');
134
+ if (existsSync(changesetDir)) {
135
+ rmSync(changesetDir, { recursive: true, force: true });
136
+ }
137
+ }
138
+ // 子工程清单保持新鲜;失败只告警,不作为失败原因(设计文档 §8.1 第 3 条)
139
+ if (!refreshAgentsProjectList(wsRoot)) {
140
+ logWarn(`未能在 AGENTS.md 中刷新子工程清单,请手动补充 ${projectRel}`);
141
+ }
142
+ const verifyResult = verifyWorkspace(wsRoot);
143
+ if (!verifyResult.ok) {
144
+ throw new Error(`Workspace 校验失败: ${verifyResult.errors.join('; ')}`);
145
+ }
146
+ transaction.commit();
147
+ spinner.succeed(`${projectKindLabel(type)} ${name} 添加成功!`);
148
+ let installed = false;
149
+ if (options.install) {
150
+ const { runPnpmInstall } = await import('./workspace/create.js');
151
+ const result = await runPnpmInstall(wsRoot, isJson);
152
+ installed = result.success;
153
+ if (!result.success) {
154
+ logWarn(`\n提示: 依赖安装出现异常 (${result.error}),请稍后手动执行 "pnpm install"`);
155
+ }
156
+ }
157
+ if (isJson) {
158
+ sendJson({
159
+ command,
160
+ ok: true,
161
+ workspaceRoot: wsRoot,
162
+ name,
163
+ type,
164
+ projectDir: projectRel,
165
+ installed,
166
+ filesCreated: render.filesCreated
167
+ });
168
+ return;
169
+ }
170
+ printSuccess(`已在 ${projectRel} 创建${projectKindLabel(type)} ${name}`);
171
+ printNextSteps({
172
+ targetArg: '.',
173
+ targetDir: wsRoot,
174
+ cwd,
175
+ installed,
176
+ appPackageName: name
177
+ });
178
+ }
179
+ catch (error) {
180
+ spinner.fail('添加失败,正在回滚...');
181
+ transaction.rollback();
182
+ throw error;
183
+ }
184
+ }
185
+ catch (error) {
186
+ if (isJson) {
187
+ const message = error instanceof Error ? error.message : String(error);
188
+ const exitCode = error instanceof CreateAppError ? error.exitCode : ExitCode.GENERAL_ERROR;
189
+ fail({ command, error: message, exitCode });
190
+ }
191
+ throw error;
192
+ }
193
+ }
194
+ //# sourceMappingURL=add-project.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"add-project.js","sourceRoot":"","sources":["../../src/commands/add-project.ts"],"names":[],"mappings":"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"}
@@ -1,51 +1,58 @@
1
- import { existsSync, mkdirSync, readFileSync, 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
- throw new Error('未找到可构建的组件(components/*/index.ts)');
14
- }
15
- const componentOutDir = farris.componentOutDir || './package/components';
16
- const outDir = farris.outDir || 'lib';
17
- // Relative to Vite root. Absolute Windows paths get realpath'd (f: → F:)
18
- // and break plugin-vue SFC subrequests.
19
- const entry = Object.fromEntries(names.map((name) => [name, `components/${name}/index.ts`]));
20
- const spinner = ora('build components begin').start();
21
- spinner.text = 'building components';
22
- await buildCommon({
23
- ...options,
24
- type: 'component',
25
- config: {
26
- publicDir: '',
27
- build: {
28
- emptyOutDir: false,
29
- lib: { entry },
30
- outDir: resolve(CWD, componentOutDir)
31
- }
32
- }
33
- });
34
- const cssFiles = [];
35
- for (const name of names) {
36
- const scss = resolve(CWD, 'components', name, 'src', `${name}.scss`);
37
- if (!existsSync(scss)) {
38
- continue;
39
- }
40
- const outfile = resolve(CWD, componentOutDir, name, 'index.css');
41
- await buildCss({ ...options, entry: scss, outfile, showSpinner: false });
42
- cssFiles.push(outfile);
43
- }
44
- if (cssFiles.length > 0) {
45
- const aggregateDir = resolve(CWD, outDir);
46
- mkdirSync(aggregateDir, { recursive: true });
47
- writeFileSync(resolve(aggregateDir, 'index.css'), cssFiles.map((file) => readFileSync(file, 'utf-8')).join('\n'));
48
- }
49
- spinner.succeed('build components success');
50
- }
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
+ throw new Error('未找到可构建的组件(components/*/index.ts)');
14
+ }
15
+ const componentOutDir = farris.componentOutDir || './package/components';
16
+ const outDir = farris.outDir || 'lib';
17
+ // 干净构建:不依赖用户脚本清理上一版产物(设计文档 §7.4)。
18
+ // 只清理组件产物目录与聚合样式,保留 build-lib -ep 已写入的 lib/ 根产物。
19
+ // 用调用时的 process.cwd()(与上面的 listLibComponents 一致),不用模块加载时固化的 CWD,
20
+ // 避免在非项目根目录下误删同名路径。
21
+ const projectRoot = process.cwd();
22
+ rmSync(resolve(projectRoot, componentOutDir), { recursive: true, force: true });
23
+ rmSync(resolve(projectRoot, outDir, 'index.css'), { force: true });
24
+ // Relative to Vite root. Absolute Windows paths get realpath'd (f: → F:)
25
+ // and break plugin-vue SFC subrequests.
26
+ const entry = Object.fromEntries(names.map((name) => [name, `components/${name}/index.ts`]));
27
+ const spinner = ora('build components begin').start();
28
+ spinner.text = 'building components';
29
+ await buildCommon({
30
+ ...options,
31
+ type: 'component',
32
+ config: {
33
+ publicDir: '',
34
+ build: {
35
+ emptyOutDir: false,
36
+ lib: { entry },
37
+ outDir: resolve(CWD, componentOutDir)
38
+ }
39
+ }
40
+ });
41
+ const cssFiles = [];
42
+ for (const name of names) {
43
+ const scss = resolve(CWD, 'components', name, 'src', `${name}.scss`);
44
+ if (!existsSync(scss)) {
45
+ continue;
46
+ }
47
+ const outfile = resolve(CWD, componentOutDir, name, 'index.css');
48
+ await buildCss({ ...options, entry: scss, outfile, showSpinner: false });
49
+ cssFiles.push(outfile);
50
+ }
51
+ if (cssFiles.length > 0) {
52
+ const aggregateDir = resolve(CWD, outDir);
53
+ mkdirSync(aggregateDir, { recursive: true });
54
+ writeFileSync(resolve(aggregateDir, 'index.css'), cssFiles.map((file) => readFileSync(file, 'utf-8')).join('\n'));
55
+ }
56
+ spinner.succeed('build components success');
57
+ }
51
58
  //# 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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"}
@@ -1,39 +1,39 @@
1
- import { build } from "esbuild";
2
- import { sassPlugin } from 'esbuild-sass-plugin';
3
- import path from 'node:path';
4
- import { CWD } from "../common/constant.js";
5
- import ora from "ora";
6
- const replaceUrl = (source, pathname, entry) => {
7
- const basedir = path.dirname(pathname);
8
- const entrydir = path.resolve(CWD, path.dirname(entry));
9
- const relativedir = path.relative(entrydir, basedir);
10
- const regExp = /(url\(['"]?)(\.\.?\/[^'")]+['"]?)(\))/g;
11
- return source.replace(regExp, (substring, ...args) => `url(./${path.join(relativedir, args[1]).replaceAll('\\', '/')})`);
12
- };
13
- export async function buildCss(options) {
14
- const { entry, outfile, minify = false, showSpinner = true } = options;
15
- const spinner = ora(`build css begin`).start();
16
- spinner.text = `building css`;
17
- if (!showSpinner) {
18
- spinner.stop();
19
- }
20
- await build({
21
- entryPoints: [entry],
22
- outfile,
23
- minify,
24
- bundle: true,
25
- logLevel: 'error',
26
- plugins: [sassPlugin({
27
- precompile(source, pathname) {
28
- return replaceUrl(source, pathname, entry);
29
- }
30
- })],
31
- loader: {
32
- '.ttf': 'dataurl'
33
- }
34
- });
35
- if (showSpinner) {
36
- spinner.succeed(`build css success`);
37
- }
38
- }
1
+ import { build } from "esbuild";
2
+ import { sassPlugin } from 'esbuild-sass-plugin';
3
+ import path from 'node:path';
4
+ import { CWD } from "../common/constant.js";
5
+ import ora from "ora";
6
+ const replaceUrl = (source, pathname, entry) => {
7
+ const basedir = path.dirname(pathname);
8
+ const entrydir = path.resolve(CWD, path.dirname(entry));
9
+ const relativedir = path.relative(entrydir, basedir);
10
+ const regExp = /(url\(['"]?)(\.\.?\/[^'")]+['"]?)(\))/g;
11
+ return source.replace(regExp, (substring, ...args) => `url(./${path.join(relativedir, args[1]).replaceAll('\\', '/')})`);
12
+ };
13
+ export async function buildCss(options) {
14
+ const { entry, outfile, minify = false, showSpinner = true } = options;
15
+ const spinner = ora(`build css begin`).start();
16
+ spinner.text = `building css`;
17
+ if (!showSpinner) {
18
+ spinner.stop();
19
+ }
20
+ await build({
21
+ entryPoints: [entry],
22
+ outfile,
23
+ minify,
24
+ bundle: true,
25
+ logLevel: 'error',
26
+ plugins: [sassPlugin({
27
+ precompile(source, pathname) {
28
+ return replaceUrl(source, pathname, entry);
29
+ }
30
+ })],
31
+ loader: {
32
+ '.ttf': 'dataurl'
33
+ }
34
+ });
35
+ if (showSpinner) {
36
+ spinner.succeed(`build css success`);
37
+ }
38
+ }
39
39
  //# sourceMappingURL=build-css.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"build-css.js","sourceRoot":"","sources":["../../src/commands/build-css.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,GAAG,EAAE,MAAM,uBAAuB,CAAC;AAC5C,OAAO,GAAG,MAAM,KAAK,CAAC;AAEtB,MAAM,UAAU,GAAG,CAAC,MAAc,EAAE,QAAgB,EAAE,KAAa,EAAC,EAAE;IACpE,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACvC,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;IACxD,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IACrD,MAAM,MAAM,GAAG,wCAAwC,CAAC;IACxD,OAAO,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,SAAS,EAAE,GAAG,IAAI,EAAC,EAAE,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;AAC1H,CAAC,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,OAAY;IACzC,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,GAAG,KAAK,EAAE,WAAW,GAAG,IAAI,EAAE,GAAG,OAAO,CAAC;IAEvE,MAAM,OAAO,GAAG,GAAG,CAAC,iBAAiB,CAAC,CAAC,KAAK,EAAE,CAAC;IAC/C,OAAO,CAAC,IAAI,GAAG,cAAc,CAAC;IAE9B,IAAG,CAAC,WAAW,EAAE,CAAC;QAChB,OAAO,CAAC,IAAI,EAAE,CAAC;IACjB,CAAC;IAGD,MAAM,KAAK,CAAC;QACV,WAAW,EAAE,CAAC,KAAK,CAAC;QACpB,OAAO;QACP,MAAM;QACN,MAAM,EAAE,IAAI;QACZ,QAAQ,EAAE,OAAO;QACjB,OAAO,EAAE,CAAC,UAAU,CAAC;gBACnB,UAAU,CAAC,MAAM,EAAE,QAAQ;oBACzB,OAAO,UAAU,CAAC,MAAM,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;gBAC7C,CAAC;aACF,CAAC,CAAC;QACH,MAAM,EAAE;YACN,MAAM,EAAE,SAAS;SAClB;KACF,CAAC,CAAC;IAEH,IAAG,WAAW,EAAE,CAAC;QACf,OAAO,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC;IACvC,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"build-css.js","sourceRoot":"","sources":["../../src/commands/build-css.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,GAAG,EAAE,MAAM,uBAAuB,CAAC;AAC5C,OAAO,GAAG,MAAM,KAAK,CAAC;AAEtB,MAAM,UAAU,GAAG,CAAC,MAAc,EAAE,QAAgB,EAAE,KAAa,EAAC,EAAE;IACpE,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACvC,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;IACxD,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IACrD,MAAM,MAAM,GAAG,wCAAwC,CAAC;IACxD,OAAO,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,SAAS,EAAE,GAAG,IAAI,EAAC,EAAE,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;AAC1H,CAAC,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,OAAY;IACzC,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,GAAG,KAAK,EAAE,WAAW,GAAG,IAAI,EAAE,GAAG,OAAO,CAAC;IAEvE,MAAM,OAAO,GAAG,GAAG,CAAC,iBAAiB,CAAC,CAAC,KAAK,EAAE,CAAC;IAC/C,OAAO,CAAC,IAAI,GAAG,cAAc,CAAC;IAE9B,IAAG,CAAC,WAAW,EAAE;QACf,OAAO,CAAC,IAAI,EAAE,CAAC;KAChB;IAGD,MAAM,KAAK,CAAC;QACV,WAAW,EAAE,CAAC,KAAK,CAAC;QACpB,OAAO;QACP,MAAM;QACN,MAAM,EAAE,IAAI;QACZ,QAAQ,EAAE,OAAO;QACjB,OAAO,EAAE,CAAC,UAAU,CAAC;gBACnB,UAAU,CAAC,MAAM,EAAE,QAAQ;oBACzB,OAAO,UAAU,CAAC,MAAM,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;gBAC7C,CAAC;aACF,CAAC,CAAC;QACH,MAAM,EAAE;YACN,MAAM,EAAE,SAAS;SAClB;KACF,CAAC,CAAC;IAEH,IAAG,WAAW,EAAE;QACd,OAAO,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC;KACtC;AACH,CAAC"}
@@ -1,26 +1,31 @@
1
- import ora from 'ora';
2
- import { resolve } from 'node:path';
3
- import { buildCommon } from "./build.js";
4
- import { generateTypes } from "../plugins/dts.js";
5
- import { createPackageJson } from '../plugins/create-package-json.js';
6
- import { getFarrisConfigAsync } from '../common/get-farris-config.js';
7
- import { CWD } from '../common/constant.js';
8
- export async function buildLib(options) {
9
- const { dts = true, emitPackage } = options;
10
- const farrisConfig = await getFarrisConfigAsync(options.configFile);
11
- const outDir = farrisConfig.outDir || 'lib';
12
- const typesDir = resolve(CWD, outDir, 'types');
13
- const config = {
14
- publicDir: '',
15
- plugins: [
16
- dts && generateTypes('./components', typesDir),
17
- emitPackage && createPackageJson()
18
- ]
19
- };
20
- const spinner = ora(`build lib begin`).start();
21
- spinner.text = `building lib`;
22
- await buildCommon({ ...options, config, type: 'lib' });
23
- spinner.succeed(`build lib success`);
24
- }
25
- ;
1
+ import ora from 'ora';
2
+ import { resolve } from 'node:path';
3
+ import { buildCommon } from "./build.js";
4
+ import { generateTypes } from "../plugins/dts.js";
5
+ import { createPackageJson } from '../plugins/create-package-json.js';
6
+ import { getFarrisConfigAsync } from '../common/get-farris-config.js';
7
+ import { CWD } from '../common/constant.js';
8
+ export async function buildLib(options) {
9
+ const { dts = true, emitPackage } = options;
10
+ const farrisConfig = await getFarrisConfigAsync(options.configFile);
11
+ const outDir = farrisConfig.outDir || 'lib';
12
+ const typesDir = resolve(CWD, outDir, 'types');
13
+ const config = {
14
+ publicDir: '',
15
+ build: {
16
+ // 干净构建:产物目录不接受上一版的残留文件(设计文档 §7.4)。
17
+ // lib 的 outDir 位于 vite root 内,显式声明后不依赖 vite 的默认值。
18
+ emptyOutDir: true
19
+ },
20
+ plugins: [
21
+ dts && generateTypes('./components', typesDir),
22
+ emitPackage && createPackageJson()
23
+ ]
24
+ };
25
+ const spinner = ora(`build lib begin`).start();
26
+ spinner.text = `building lib`;
27
+ await buildCommon({ ...options, config, type: 'lib' });
28
+ spinner.succeed(`build lib success`);
29
+ }
30
+ ;
26
31
  //# sourceMappingURL=build-lib.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"build-lib.js","sourceRoot":"","sources":["../../src/commands/build-lib.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,WAAW,EAAsB,MAAM,YAAY,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AACtE,OAAO,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAC;AACtE,OAAO,EAAE,GAAG,EAAE,MAAM,uBAAuB,CAAC;AAQ5C,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,OAAwB;IACrD,MAAM,EAAE,GAAG,GAAG,IAAI,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC;IAC5C,MAAM,YAAY,GAAG,MAAM,oBAAoB,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IACpE,MAAM,MAAM,GAAG,YAAY,CAAC,MAAM,IAAI,KAAK,CAAC;IAC5C,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/C,MAAM,MAAM,GAAG;QACb,SAAS,EAAE,EAAE;QACb,OAAO,EAAE;YACP,GAAG,IAAI,aAAa,CAAC,cAAc,EAAE,QAAQ,CAAC;YAC9C,WAAW,IAAI,iBAAiB,EAAE;SACnC;KACF,CAAC;IACF,MAAM,OAAO,GAAG,GAAG,CAAC,iBAAiB,CAAC,CAAC,KAAK,EAAE,CAAC;IAE/C,OAAO,CAAC,IAAI,GAAG,cAAc,CAAC;IAE9B,MAAM,WAAW,CAAC,EAAE,GAAG,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IAEvD,OAAO,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC;AACvC,CAAC;AAAA,CAAC"}
1
+ {"version":3,"file":"build-lib.js","sourceRoot":"","sources":["../../src/commands/build-lib.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,WAAW,EAAsB,MAAM,YAAY,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AACtE,OAAO,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAC;AACtE,OAAO,EAAE,GAAG,EAAE,MAAM,uBAAuB,CAAC;AAQ5C,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,OAAwB;IACrD,MAAM,EAAE,GAAG,GAAG,IAAI,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC;IAC5C,MAAM,YAAY,GAAG,MAAM,oBAAoB,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IACpE,MAAM,MAAM,GAAG,YAAY,CAAC,MAAM,IAAI,KAAK,CAAC;IAC5C,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/C,MAAM,MAAM,GAAG;QACb,SAAS,EAAE,EAAE;QACb,KAAK,EAAE;YACL,mCAAmC;YACnC,kDAAkD;YAClD,WAAW,EAAE,IAAI;SAClB;QACD,OAAO,EAAE;YACP,GAAG,IAAI,aAAa,CAAC,cAAc,EAAE,QAAQ,CAAC;YAC9C,WAAW,IAAI,iBAAiB,EAAE;SACnC;KACF,CAAC;IACF,MAAM,OAAO,GAAG,GAAG,CAAC,iBAAiB,CAAC,CAAC,KAAK,EAAE,CAAC;IAE/C,OAAO,CAAC,IAAI,GAAG,cAAc,CAAC;IAE9B,MAAM,WAAW,CAAC,EAAE,GAAG,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IAEvD,OAAO,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC;AACvC,CAAC;AAAA,CAAC"}
@@ -1,15 +1,20 @@
1
- import { build, mergeConfig, loadConfigFromFile } from 'vite';
2
- import { getViteConfig } from '../common/get-vite-config.js';
3
- export async function buildCommon(options, loadFile = true) {
4
- const { configFile, viteConfigFile, config = {}, type, base, mode = 'production' } = options;
5
- if (!loadFile) {
6
- await build(config);
7
- return config;
8
- }
9
- const viteConfig = await loadConfigFromFile({ command: 'build', mode }, viteConfigFile);
10
- const defaultConfig = await getViteConfig(type, configFile, { base, mode });
11
- const finalConfig = mergeConfig(mergeConfig(defaultConfig, viteConfigFile && viteConfig?.config ? viteConfig.config : {}), config);
12
- await build(finalConfig);
13
- return finalConfig;
14
- }
1
+ import { build, mergeConfig, loadConfigFromFile } from 'vite';
2
+ import { getViteConfig } from '../common/get-vite-config.js';
3
+ import { createAppPackageJson } from '../plugins/create-app-package-json.js';
4
+ export async function buildCommon(options, loadFile = true) {
5
+ const { configFile, viteConfigFile, config = {}, type, base, mode = 'production', emitPackage } = options;
6
+ if (!loadFile) {
7
+ await build(config);
8
+ return config;
9
+ }
10
+ const viteConfig = await loadConfigFromFile({ command: 'build', mode }, viteConfigFile);
11
+ const defaultConfig = await getViteConfig(type, configFile, { base, mode });
12
+ const plugins = [...(config.plugins ?? [])];
13
+ if (emitPackage && type === 'app') {
14
+ plugins.push(createAppPackageJson());
15
+ }
16
+ const finalConfig = mergeConfig(mergeConfig(defaultConfig, viteConfigFile && viteConfig?.config ? viteConfig.config : {}), { ...config, plugins });
17
+ await build(finalConfig);
18
+ return finalConfig;
19
+ }
15
20
  //# sourceMappingURL=build.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"build.js","sourceRoot":"","sources":["../../src/commands/build.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,MAAM,CAAC;AAC9D,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAW7D,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,OAA2B,EAAE,QAAQ,GAAG,IAAI;IAC5E,MAAM,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,GAAG,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,GAAG,YAAY,EAAE,GAAG,OAAO,CAAC;IAE7F,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,MAAM,KAAK,CAAC,MAAM,CAAC,CAAC;QACpB,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,MAAM,UAAU,GAAG,MAAM,kBAAkB,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,cAAc,CAAC,CAAC;IAExF,MAAM,aAAa,GAAG,MAAM,aAAa,CAAC,IAAI,EAAE,UAAU,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;IAE5E,MAAM,WAAW,GAAG,WAAW,CAC7B,WAAW,CAAC,aAAa,EAAE,cAAc,IAAI,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EACzF,MAAM,CACP,CAAC;IAEF,MAAM,KAAK,CAAC,WAAW,CAAC,CAAC;IAEzB,OAAO,WAAW,CAAC;AACrB,CAAC"}
1
+ {"version":3,"file":"build.js","sourceRoot":"","sources":["../../src/commands/build.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,MAAM,CAAC;AAC9D,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,EAAE,oBAAoB,EAAE,MAAM,uCAAuC,CAAC;AAa7E,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,OAA2B,EAAE,QAAQ,GAAG,IAAI;IAC5E,MAAM,EACJ,UAAU,EACV,cAAc,EACd,MAAM,GAAG,EAAE,EACX,IAAI,EACJ,IAAI,EACJ,IAAI,GAAG,YAAY,EACnB,WAAW,EACZ,GAAG,OAAO,CAAC;IAEZ,IAAI,CAAC,QAAQ,EAAE;QACb,MAAM,KAAK,CAAC,MAAM,CAAC,CAAC;QACpB,OAAO,MAAM,CAAC;KACf;IAED,MAAM,UAAU,GAAG,MAAM,kBAAkB,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,cAAc,CAAC,CAAC;IAExF,MAAM,aAAa,GAAG,MAAM,aAAa,CAAC,IAAI,EAAE,UAAU,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;IAE5E,MAAM,OAAO,GAAU,CAAC,GAAG,CAAE,MAAM,CAAC,OAAiB,IAAI,EAAE,CAAC,CAAC,CAAC;IAC9D,IAAI,WAAW,IAAI,IAAI,KAAK,KAAK,EAAE;QACjC,OAAO,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC,CAAC;KACtC;IAED,MAAM,WAAW,GAAG,WAAW,CAC7B,WAAW,CAAC,aAAa,EAAE,cAAc,IAAI,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EACzF,EAAE,GAAG,MAAM,EAAE,OAAO,EAAE,CACvB,CAAC;IAEF,MAAM,KAAK,CAAC,WAAW,CAAC,CAAC;IAEzB,OAAO,WAAW,CAAC;AACrB,CAAC"}