@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 +1 @@
1
- {"version":3,"file":"get-farris-config.js","sourceRoot":"","sources":["../../src/common/get-farris-config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,UAAmB;IAC5D,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAC1B,MAAM,QAAQ,GAAG,UAAU,KAAK,SAAS,IAAI,UAAU,KAAK,EAAE,CAAC;IAC/D,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC;IAE3E,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC1B,IAAI,QAAQ,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CAAC,YAAY,QAAQ,EAAE,CAAC,CAAC;QAC1C,CAAC;QACD,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC;QAC1D,IAAI,MAAM,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;YACjC,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;QAC5C,CAAC;QACD,OAAO,MAAM,CAAC,OAAO,CAAC;IACxB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,KAAK,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC/D,MAAM,IAAI,KAAK,CAAC,iCAAiC,QAAQ,MAAM,KAAK,EAAE,CAAC,CAAC;IAC1E,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"get-farris-config.js","sourceRoot":"","sources":["../../src/common/get-farris-config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,UAAmB;IAC5D,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAC1B,MAAM,QAAQ,GAAG,UAAU,KAAK,SAAS,IAAI,UAAU,KAAK,EAAE,CAAC;IAC/D,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC;IAE3E,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE;QACzB,IAAI,QAAQ,EAAE;YACZ,MAAM,IAAI,KAAK,CAAC,YAAY,QAAQ,EAAE,CAAC,CAAC;SACzC;QACD,OAAO,EAAE,CAAC;KACX;IAED,IAAI;QACF,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC;QAC1D,IAAI,MAAM,CAAC,OAAO,KAAK,SAAS,EAAE;YAChC,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;SAC3C;QACD,OAAO,MAAM,CAAC,OAAO,CAAC;KACvB;IAAC,OAAO,GAAG,EAAE;QACZ,MAAM,KAAK,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC/D,MAAM,IAAI,KAAK,CAAC,iCAAiC,QAAQ,MAAM,KAAK,EAAE,CAAC,CAAC;KACzE;AACH,CAAC"}
@@ -1,7 +1,7 @@
1
- import { createRequire } from 'node:module';
2
- const require = createRequire(import.meta.url);
3
- const packageJson = require('../../package.json');
4
- export const getVersion = () => {
5
- return packageJson.version;
6
- };
1
+ import { createRequire } from 'node:module';
2
+ const require = createRequire(import.meta.url);
3
+ const packageJson = require('../../package.json');
4
+ export const getVersion = () => {
5
+ return packageJson.version;
6
+ };
7
7
  //# sourceMappingURL=get-version.js.map
@@ -1,107 +1,107 @@
1
- import { mergeConfig, loadEnv } from 'vite';
2
- import { getFarrisConfigAsync } from './get-farris-config.js';
3
- import { getDependencies } from '../common/get-dependencies.js';
4
- import cssInjectedByJsPlugin from 'vite-plugin-css-injected-by-js';
5
- import { logWarn } from './output.js';
6
- import { CWD } from './constant.js';
7
- /**
8
- * 解析有效 Base 及其来源
9
- */
10
- export function resolveEffectiveBase(options) {
11
- const { cliBase, mode = 'production', configBase, configPublicPath, cwd = CWD } = options;
12
- // 1. CLI --base
13
- if (cliBase !== undefined && cliBase !== '') {
14
- return { effectiveBase: cliBase, baseSource: 'cli' };
15
- }
16
- // 2. VITE_BASE_URL (通过 loadEnv 加载当前 mode 的 .env 或环境变量)
17
- const env = loadEnv(mode, cwd, '');
18
- const envBase = env.VITE_BASE_URL || process.env.VITE_BASE_URL;
19
- if (envBase !== undefined && envBase !== '') {
20
- return { effectiveBase: envBase, baseSource: 'env' };
21
- }
22
- // 3. farris.config.mjs.base
23
- if (configBase !== undefined && configBase !== '') {
24
- if (configPublicPath !== undefined) {
25
- logWarn('[WARN] farris.config.mjs 中同时存在 base 和 publicPath,优先使用 base,publicPath 已弃用。');
26
- }
27
- return { effectiveBase: configBase, baseSource: 'config.base' };
28
- }
29
- // 4. farris.config.mjs.publicPath (兼容别名)
30
- if (configPublicPath !== undefined && configPublicPath !== '') {
31
- logWarn('[WARN] farris.config.mjs 中的 publicPath 已弃用,请在配置文件中改用 base。');
32
- return { effectiveBase: configPublicPath, baseSource: 'config.publicPath' };
33
- }
34
- // 5. 默认根路径
35
- return { effectiveBase: '/', baseSource: 'default' };
36
- }
37
- /**
38
- * 校验 Base 与 RouterMode 兼容性
39
- */
40
- export function validateBaseAndRouterMode(base, routerMode) {
41
- const isRelative = base.startsWith('.') || (!base.startsWith('/') && !base.startsWith('http://') && !base.startsWith('https://'));
42
- if (isRelative && routerMode === 'history') {
43
- throw new Error(`[Error] 配置冲突: 相对路径 base ("${base}") 无法与 history 路由模式 ("routerMode: 'history'") 同时使用。在 history 模式下必须使用绝对路径 base (如 "/"),或者切换为 hash 路由模式。`);
44
- }
45
- }
46
- const formatFarrisConfig = (farrisConfig, type, cliOptions = {}) => {
47
- const { lib, format, target, minify = true, outDir, externals = { include: [], exclude: [] }, externalDependencies, plugins = [], alias, server, cssInjected, packageName = '@farris/mobile-ui-vue', base: configBase, publicPath: configPublicPath, routerMode } = farrisConfig;
48
- // 解析 base
49
- const { effectiveBase } = resolveEffectiveBase({
50
- cliBase: cliOptions.base,
51
- mode: cliOptions.mode,
52
- configBase,
53
- configPublicPath
54
- });
55
- // 校验 base 与 routerMode
56
- if (type === 'app') {
57
- validateBaseAndRouterMode(effectiveBase, routerMode);
58
- }
59
- const dependencies = externalDependencies ? getDependencies() : [];
60
- let external = externals.include ? [...externals.include, ...dependencies] : dependencies;
61
- external = external.filter((item) => !externals.exclude?.includes(item));
62
- const libFormats = lib && typeof lib === 'object' ? lib.formats : undefined;
63
- const hasLibFormats = Array.isArray(libFormats) && libFormats.length > 0;
64
- const resolvedFormat = hasLibFormats ? libFormats[0] : format;
65
- if (resolvedFormat) {
66
- process.env.FARRIS_FORMAT = resolvedFormat;
67
- }
68
- if (cssInjected) {
69
- plugins.push(cssInjectedByJsPlugin());
70
- }
71
- if (packageName) {
72
- process.env.PackageName = packageName;
73
- }
74
- // Rollup format 转换:systemjs -> system
75
- const rollupFormat = resolvedFormat === 'systemjs' ? 'system' : resolvedFormat;
76
- const viteConfig = {
77
- base: effectiveBase,
78
- build: {
79
- target,
80
- minify,
81
- lib: type === 'lib' ? lib : undefined,
82
- rollupOptions: {
83
- output: hasLibFormats ? {} : { format: rollupFormat },
84
- external: externals.filter ? externals.filter(external) : external
85
- },
86
- outDir
87
- },
88
- server,
89
- plugins,
90
- resolve: {
91
- alias
92
- }
93
- };
94
- return viteConfig;
95
- };
96
- const formatViteConfig = async (type, configFile, cliOptions = {}) => {
97
- const { viteConfig = {}, ...farrisConfig } = await getFarrisConfigAsync(configFile);
98
- const customViteConfig = formatFarrisConfig(farrisConfig, type, cliOptions);
99
- return mergeConfig(customViteConfig, viteConfig);
100
- };
101
- const getViteConfig = async (type = 'app', configFile, cliOptions = {}) => {
102
- const viteConfig = await formatViteConfig(type, configFile, cliOptions);
103
- const { default: defaultViteConfig } = await import(`../config/vite-${type}.js`);
104
- return mergeConfig(defaultViteConfig, viteConfig);
105
- };
106
- export { getViteConfig };
1
+ import { mergeConfig, loadEnv } from 'vite';
2
+ import { getFarrisConfigAsync } from './get-farris-config.js';
3
+ import { getDependencies } from '../common/get-dependencies.js';
4
+ import cssInjectedByJsPlugin from 'vite-plugin-css-injected-by-js';
5
+ import { logWarn } from './output.js';
6
+ import { CWD } from './constant.js';
7
+ /**
8
+ * 解析有效 Base 及其来源
9
+ */
10
+ export function resolveEffectiveBase(options) {
11
+ const { cliBase, mode = 'production', configBase, configPublicPath, cwd = CWD } = options;
12
+ // 1. CLI --base
13
+ if (cliBase !== undefined && cliBase !== '') {
14
+ return { effectiveBase: cliBase, baseSource: 'cli' };
15
+ }
16
+ // 2. VITE_BASE_URL (通过 loadEnv 加载当前 mode 的 .env 或环境变量)
17
+ const env = loadEnv(mode, cwd, '');
18
+ const envBase = env.VITE_BASE_URL || process.env.VITE_BASE_URL;
19
+ if (envBase !== undefined && envBase !== '') {
20
+ return { effectiveBase: envBase, baseSource: 'env' };
21
+ }
22
+ // 3. farris.config.mjs.base
23
+ if (configBase !== undefined && configBase !== '') {
24
+ if (configPublicPath !== undefined) {
25
+ logWarn('[WARN] farris.config.mjs 中同时存在 base 和 publicPath,优先使用 base,publicPath 已弃用。');
26
+ }
27
+ return { effectiveBase: configBase, baseSource: 'config.base' };
28
+ }
29
+ // 4. farris.config.mjs.publicPath (兼容别名)
30
+ if (configPublicPath !== undefined && configPublicPath !== '') {
31
+ logWarn('[WARN] farris.config.mjs 中的 publicPath 已弃用,请在配置文件中改用 base。');
32
+ return { effectiveBase: configPublicPath, baseSource: 'config.publicPath' };
33
+ }
34
+ // 5. 默认根路径
35
+ return { effectiveBase: '/', baseSource: 'default' };
36
+ }
37
+ /**
38
+ * 校验 Base 与 RouterMode 兼容性
39
+ */
40
+ export function validateBaseAndRouterMode(base, routerMode) {
41
+ const isRelative = base.startsWith('.') || (!base.startsWith('/') && !base.startsWith('http://') && !base.startsWith('https://'));
42
+ if (isRelative && routerMode === 'history') {
43
+ throw new Error(`[Error] 配置冲突: 相对路径 base ("${base}") 无法与 history 路由模式 ("routerMode: 'history'") 同时使用。在 history 模式下必须使用绝对路径 base (如 "/"),或者切换为 hash 路由模式。`);
44
+ }
45
+ }
46
+ const formatFarrisConfig = (farrisConfig, type, cliOptions = {}) => {
47
+ const { lib, format, target, minify = true, outDir, externals = { include: [], exclude: [] }, externalDependencies, plugins = [], alias, server, cssInjected, packageName = '@farris/mobile-ui-vue', base: configBase, publicPath: configPublicPath, routerMode } = farrisConfig;
48
+ // 解析 base
49
+ const { effectiveBase } = resolveEffectiveBase({
50
+ cliBase: cliOptions.base,
51
+ mode: cliOptions.mode,
52
+ configBase,
53
+ configPublicPath
54
+ });
55
+ // 校验 base 与 routerMode
56
+ if (type === 'app') {
57
+ validateBaseAndRouterMode(effectiveBase, routerMode);
58
+ }
59
+ const dependencies = externalDependencies ? getDependencies() : [];
60
+ let external = externals.include ? [...externals.include, ...dependencies] : dependencies;
61
+ external = external.filter((item) => !externals.exclude?.includes(item));
62
+ const libFormats = lib && typeof lib === 'object' ? lib.formats : undefined;
63
+ const hasLibFormats = Array.isArray(libFormats) && libFormats.length > 0;
64
+ const resolvedFormat = hasLibFormats ? libFormats[0] : format;
65
+ if (resolvedFormat) {
66
+ process.env.FARRIS_FORMAT = resolvedFormat;
67
+ }
68
+ if (cssInjected) {
69
+ plugins.push(cssInjectedByJsPlugin());
70
+ }
71
+ if (packageName) {
72
+ process.env.PackageName = packageName;
73
+ }
74
+ // Rollup format 转换:systemjs -> system
75
+ const rollupFormat = resolvedFormat === 'systemjs' ? 'system' : resolvedFormat;
76
+ const viteConfig = {
77
+ base: effectiveBase,
78
+ build: {
79
+ target,
80
+ minify,
81
+ lib: type === 'lib' ? lib : undefined,
82
+ rollupOptions: {
83
+ output: hasLibFormats ? {} : { format: rollupFormat },
84
+ external: externals.filter ? externals.filter(external) : external
85
+ },
86
+ outDir
87
+ },
88
+ server,
89
+ plugins,
90
+ resolve: {
91
+ alias
92
+ }
93
+ };
94
+ return viteConfig;
95
+ };
96
+ const formatViteConfig = async (type, configFile, cliOptions = {}) => {
97
+ const { viteConfig = {}, ...farrisConfig } = await getFarrisConfigAsync(configFile);
98
+ const customViteConfig = formatFarrisConfig(farrisConfig, type, cliOptions);
99
+ return mergeConfig(customViteConfig, viteConfig);
100
+ };
101
+ const getViteConfig = async (type = 'app', configFile, cliOptions = {}) => {
102
+ const viteConfig = await formatViteConfig(type, configFile, cliOptions);
103
+ const { default: defaultViteConfig } = await import(`../config/vite-${type}.js`);
104
+ return mergeConfig(defaultViteConfig, viteConfig);
105
+ };
106
+ export { getViteConfig };
107
107
  //# sourceMappingURL=get-vite-config.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"get-vite-config.js","sourceRoot":"","sources":["../../src/common/get-vite-config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"get-vite-config.js","sourceRoot":"","sources":["../../src/common/get-vite-config.ts"],"names":[],"mappings":"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"}
@@ -1,25 +1,25 @@
1
- export function buildLibPackageExports(componentNames, seen) {
2
- const root = { types: './types/index.d.ts' };
3
- if (seen.has('es')) {
4
- root.import = './index.esm.js';
5
- }
6
- // 只有真正产出 CommonJS 时才承诺 require。UMD 产物是 .js,在 type: module
7
- // 的包里会被当作 ESM 解析,require() 只会静默拿到空对象。
8
- if (seen.has('cjs')) {
9
- root.require = './index.cjs';
10
- }
11
- const exports = {
12
- '.': root,
13
- './style.css': './index.css',
14
- './index.css': './index.css'
15
- };
16
- componentNames.forEach((name) => {
17
- exports[`./${name}`] = {
18
- types: `./types/${name}/index.d.ts`,
19
- import: `./components/${name}/index.esm.js`
20
- };
21
- exports[`./${name}/style.css`] = `./components/${name}/index.css`;
22
- });
23
- return { sideEffects: ['**/*.css'], exports };
24
- }
1
+ export function buildLibPackageExports(componentNames, seen) {
2
+ const root = { types: './types/index.d.ts' };
3
+ if (seen.has('es')) {
4
+ root.import = './index.esm.js';
5
+ }
6
+ // 只有真正产出 CommonJS 时才承诺 require。UMD 产物是 .js,在 type: module
7
+ // 的包里会被当作 ESM 解析,require() 只会静默拿到空对象。
8
+ if (seen.has('cjs')) {
9
+ root.require = './index.cjs';
10
+ }
11
+ const exports = {
12
+ '.': root,
13
+ './style.css': './index.css',
14
+ './index.css': './index.css'
15
+ };
16
+ componentNames.forEach((name) => {
17
+ exports[`./${name}`] = {
18
+ types: `./types/${name}/index.d.ts`,
19
+ import: `./components/${name}/index.esm.js`
20
+ };
21
+ exports[`./${name}/style.css`] = `./components/${name}/index.css`;
22
+ });
23
+ return { sideEffects: ['**/*.css'], exports };
24
+ }
25
25
  //# sourceMappingURL=lib-package-exports.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"lib-package-exports.js","sourceRoot":"","sources":["../../src/common/lib-package-exports.ts"],"names":[],"mappings":"AAMA,MAAM,UAAU,sBAAsB,CACpC,cAAwB,EACxB,IAAiB;IAKjB,MAAM,IAAI,GAAmB,EAAE,KAAK,EAAE,oBAAoB,EAAE,CAAC;IAC7D,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;QACnB,IAAI,CAAC,MAAM,GAAG,gBAAgB,CAAC;IACjC,CAAC;IACD,0DAA0D;IAC1D,sCAAsC;IACtC,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;QACpB,IAAI,CAAC,OAAO,GAAG,aAAa,CAAC;IAC/B,CAAC;IAED,MAAM,OAAO,GAA4C;QACvD,GAAG,EAAE,IAAI;QACT,aAAa,EAAE,aAAa;QAC5B,aAAa,EAAE,aAAa;KAC7B,CAAC;IACF,cAAc,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;QAC9B,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC,GAAG;YACrB,KAAK,EAAE,WAAW,IAAI,aAAa;YACnC,MAAM,EAAE,gBAAgB,IAAI,eAAe;SAC5C,CAAC;QACF,OAAO,CAAC,KAAK,IAAI,YAAY,CAAC,GAAG,gBAAgB,IAAI,YAAY,CAAC;IACpE,CAAC,CAAC,CAAC;IACH,OAAO,EAAE,WAAW,EAAE,CAAC,UAAU,CAAC,EAAE,OAAO,EAAE,CAAC;AAChD,CAAC"}
1
+ {"version":3,"file":"lib-package-exports.js","sourceRoot":"","sources":["../../src/common/lib-package-exports.ts"],"names":[],"mappings":"AAMA,MAAM,UAAU,sBAAsB,CACpC,cAAwB,EACxB,IAAiB;IAKjB,MAAM,IAAI,GAAmB,EAAE,KAAK,EAAE,oBAAoB,EAAE,CAAC;IAC7D,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;QAClB,IAAI,CAAC,MAAM,GAAG,gBAAgB,CAAC;KAChC;IACD,0DAA0D;IAC1D,sCAAsC;IACtC,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;QACnB,IAAI,CAAC,OAAO,GAAG,aAAa,CAAC;KAC9B;IAED,MAAM,OAAO,GAA4C;QACvD,GAAG,EAAE,IAAI;QACT,aAAa,EAAE,aAAa;QAC5B,aAAa,EAAE,aAAa;KAC7B,CAAC;IACF,cAAc,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;QAC9B,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC,GAAG;YACrB,KAAK,EAAE,WAAW,IAAI,aAAa;YACnC,MAAM,EAAE,gBAAgB,IAAI,eAAe;SAC5C,CAAC;QACF,OAAO,CAAC,KAAK,IAAI,YAAY,CAAC,GAAG,gBAAgB,IAAI,YAAY,CAAC;IACpE,CAAC,CAAC,CAAC;IACH,OAAO,EAAE,WAAW,EAAE,CAAC,UAAU,CAAC,EAAE,OAAO,EAAE,CAAC;AAChD,CAAC"}
@@ -1,24 +1,24 @@
1
- import { existsSync, lstatSync, readdirSync } from 'node:fs';
2
- import { join } from 'node:path';
3
- export const DEFAULT_EXCLUDE_COMPONENTS = [
4
- 'property-panel',
5
- 'dynamic-resolver',
6
- 'dynamic-view'
7
- ];
8
- export function listLibComponents(rootDir, exclude = DEFAULT_EXCLUDE_COMPONENTS) {
9
- const componentsDir = join(rootDir, 'components');
10
- if (!existsSync(componentsDir) || !lstatSync(componentsDir).isDirectory()) {
11
- return [];
12
- }
13
- const skip = new Set(exclude);
14
- return readdirSync(componentsDir)
15
- .filter((name) => {
16
- if (skip.has(name)) {
17
- return false;
18
- }
19
- const dir = join(componentsDir, name);
20
- return lstatSync(dir).isDirectory() && existsSync(join(dir, 'index.ts'));
21
- })
22
- .sort();
23
- }
1
+ import { existsSync, lstatSync, readdirSync } from 'node:fs';
2
+ import { join } from 'node:path';
3
+ export const DEFAULT_EXCLUDE_COMPONENTS = [
4
+ 'property-panel',
5
+ 'dynamic-resolver',
6
+ 'dynamic-view'
7
+ ];
8
+ export function listLibComponents(rootDir, exclude = DEFAULT_EXCLUDE_COMPONENTS) {
9
+ const componentsDir = join(rootDir, 'components');
10
+ if (!existsSync(componentsDir) || !lstatSync(componentsDir).isDirectory()) {
11
+ return [];
12
+ }
13
+ const skip = new Set(exclude);
14
+ return readdirSync(componentsDir)
15
+ .filter((name) => {
16
+ if (skip.has(name)) {
17
+ return false;
18
+ }
19
+ const dir = join(componentsDir, name);
20
+ return lstatSync(dir).isDirectory() && existsSync(join(dir, 'index.ts'));
21
+ })
22
+ .sort();
23
+ }
24
24
  //# sourceMappingURL=list-lib-components.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"list-lib-components.js","sourceRoot":"","sources":["../../src/common/list-lib-components.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAC7D,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,MAAM,CAAC,MAAM,0BAA0B,GAAG;IACxC,gBAAgB;IAChB,kBAAkB;IAClB,cAAc;CACf,CAAC;AAEF,MAAM,UAAU,iBAAiB,CAC/B,OAAe,EACf,UAAoB,0BAA0B;IAE9C,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;IAClD,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC;QAC1E,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC;IAC9B,OAAO,WAAW,CAAC,aAAa,CAAC;SAC9B,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE;QACf,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YACnB,OAAO,KAAK,CAAC;QACf,CAAC;QACD,MAAM,GAAG,GAAG,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;QACtC,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,IAAI,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC,CAAC;IAC3E,CAAC,CAAC;SACD,IAAI,EAAE,CAAC;AACZ,CAAC"}
1
+ {"version":3,"file":"list-lib-components.js","sourceRoot":"","sources":["../../src/common/list-lib-components.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAC7D,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,MAAM,CAAC,MAAM,0BAA0B,GAAG;IACxC,gBAAgB;IAChB,kBAAkB;IAClB,cAAc;CACf,CAAC;AAEF,MAAM,UAAU,iBAAiB,CAC/B,OAAe,EACf,UAAoB,0BAA0B;IAE9C,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;IAClD,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC,WAAW,EAAE,EAAE;QACzE,OAAO,EAAE,CAAC;KACX;IACD,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC;IAC9B,OAAO,WAAW,CAAC,aAAa,CAAC;SAC9B,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE;QACf,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;YAClB,OAAO,KAAK,CAAC;SACd;QACD,MAAM,GAAG,GAAG,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;QACtC,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,IAAI,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC,CAAC;IAC3E,CAAC,CAAC;SACD,IAAI,EAAE,CAAC;AACZ,CAAC"}
@@ -1,95 +1,165 @@
1
- import ora from 'ora';
2
- import { SCHEMA_VERSION, ExitCode } from './constant.js';
3
- let isJsonMode = false;
4
- export function setJsonMode(value) {
5
- isJsonMode = !!value;
6
- }
7
- export function getJsonMode() {
8
- return isJsonMode;
9
- }
10
- /**
11
- * 统一输出 JSON 信封到 stdout,并以指定退出码结束进程或返回信封
12
- */
13
- export function sendJson(envelope, exitCode) {
14
- const result = {
15
- schemaVersion: SCHEMA_VERSION,
16
- ok: envelope.ok !== undefined ? envelope.ok : true,
17
- command: envelope.command || 'unknown',
18
- ...envelope
19
- };
20
- process.stdout.write(JSON.stringify(result, null, 2) + '\n');
21
- if (exitCode !== undefined) {
22
- process.exit(exitCode);
23
- }
24
- }
25
- /**
26
- * 输出日志或进度信息:在 JSON 模式下重定向至 stderr,在普通模式下输出至 stdout
27
- */
28
- export function logInfo(message) {
29
- if (isJsonMode) {
30
- process.stderr.write(`[INFO] ${message}\n`);
31
- }
32
- else {
33
- console.log(message);
34
- }
35
- }
36
- export function logWarn(message) {
37
- if (isJsonMode) {
38
- process.stderr.write(`[WARN] ${message}\n`);
39
- }
40
- else {
41
- console.warn(`\x1b[33m${message}\x1b[0m`);
42
- }
43
- }
44
- export function logError(message) {
45
- if (isJsonMode) {
46
- process.stderr.write(`[ERROR] ${message}\n`);
47
- }
48
- else {
49
- console.error(`\x1b[31m${message}\x1b[0m`);
50
- }
51
- }
52
- /**
53
- * 失败处理:统一支持 JSON 信封和控制台输出
54
- */
55
- export function fail(options) {
56
- const { command, error, exitCode = ExitCode.GENERAL_ERROR, extra = {} } = options;
57
- if (isJsonMode) {
58
- sendJson({
59
- command,
60
- ok: false,
61
- error,
62
- ...extra
63
- }, exitCode);
64
- }
65
- else {
66
- logError(`\n✖ 错误: ${error}`);
67
- process.exit(exitCode);
68
- }
69
- process.exit(exitCode);
70
- }
71
- /**
72
- * 创建 Spinner(在 JSON 模式下静默)
73
- */
74
- export function createSpinner(text) {
75
- if (isJsonMode) {
76
- return {
77
- start: () => ({ text }),
78
- succeed: (t) => {
79
- if (t) {
80
- process.stderr.write(`[SUCCESS] ${t}\n`);
81
- }
82
- },
83
- fail: (t) => {
84
- if (t) {
85
- process.stderr.write(`[FAIL] ${t}\n`);
86
- }
87
- },
88
- stop: () => { },
89
- text
90
- };
91
- }
92
- const spinner = ora(text);
93
- return spinner;
94
- }
1
+ import ora from 'ora';
2
+ import { resolve } from 'node:path';
3
+ import { SCHEMA_VERSION, ExitCode } from './constant.js';
4
+ import { PROJECT_CONTAINERS } from './project-layout.js';
5
+ import { PROJECT_SCRIPT_CONTRACT, ROOT_SCRIPT_CONTRACT, cliScriptCommand, cliScriptTarget, rootScriptCommand } from './workspace-contract.js';
6
+ let isJsonMode = false;
7
+ export function setJsonMode(value) {
8
+ isJsonMode = !!value;
9
+ }
10
+ export function getJsonMode() {
11
+ return isJsonMode;
12
+ }
13
+ /**
14
+ * 统一输出 JSON 信封到 stdout,并以指定退出码结束进程或返回信封
15
+ */
16
+ export function sendJson(envelope, exitCode) {
17
+ const result = {
18
+ schemaVersion: SCHEMA_VERSION,
19
+ ok: envelope.ok !== undefined ? envelope.ok : true,
20
+ command: envelope.command || 'unknown',
21
+ ...envelope
22
+ };
23
+ process.stdout.write(JSON.stringify(result, null, 2) + '\n');
24
+ if (exitCode !== undefined) {
25
+ process.exit(exitCode);
26
+ }
27
+ }
28
+ /**
29
+ * 输出日志或进度信息:在 JSON 模式下重定向至 stderr,在普通模式下输出至 stdout
30
+ */
31
+ export function logInfo(message) {
32
+ if (isJsonMode) {
33
+ process.stderr.write(`[INFO] ${message}\n`);
34
+ }
35
+ else {
36
+ console.log(message);
37
+ }
38
+ }
39
+ export function logWarn(message) {
40
+ if (isJsonMode) {
41
+ process.stderr.write(`[WARN] ${message}\n`);
42
+ }
43
+ else {
44
+ console.warn(message);
45
+ }
46
+ }
47
+ export function logError(message) {
48
+ if (isJsonMode) {
49
+ process.stderr.write(`[ERROR] ${message}\n`);
50
+ }
51
+ else {
52
+ console.error(message);
53
+ }
54
+ }
55
+ /**
56
+ * 失败处理:统一支持 JSON 信封和控制台输出
57
+ */
58
+ export function fail(options) {
59
+ const { command, error, exitCode = ExitCode.GENERAL_ERROR, extra = {} } = options;
60
+ if (isJsonMode) {
61
+ sendJson({
62
+ command,
63
+ ok: false,
64
+ error,
65
+ ...extra
66
+ }, exitCode);
67
+ }
68
+ else {
69
+ logError(`\n✖ 错误: ${error}`);
70
+ process.exit(exitCode);
71
+ }
72
+ process.exit(exitCode);
73
+ }
74
+ /**
75
+ * 创建 Spinner(在 JSON 模式下静默)
76
+ */
77
+ export function createSpinner(text) {
78
+ if (isJsonMode) {
79
+ return {
80
+ start: () => ({ text }),
81
+ succeed: (t) => {
82
+ if (t) {
83
+ process.stderr.write(`[SUCCESS] ${t}\n`);
84
+ }
85
+ },
86
+ fail: (t) => {
87
+ if (t) {
88
+ process.stderr.write(`[FAIL] ${t}\n`);
89
+ }
90
+ },
91
+ stop: () => { },
92
+ text
93
+ };
94
+ }
95
+ const spinner = ora(text);
96
+ return spinner;
97
+ }
98
+ const INDENT = ' ';
99
+ const COMMAND_COLUMN_WIDTH = 30;
100
+ const DESCRIPTION_COLUMN_WIDTH = 18;
101
+ /** 粗略计算显示宽度:CJK 与全角按 2 列计,保证命令区块对齐。 */
102
+ function displayWidth(text) {
103
+ let width = 0;
104
+ for (const char of text) {
105
+ const code = char.codePointAt(0) ?? 0;
106
+ const isWide = code >= 0x1100 &&
107
+ (code <= 0x115f ||
108
+ (code >= 0x2e80 && code <= 0xa4cf) ||
109
+ (code >= 0xac00 && code <= 0xd7a3) ||
110
+ (code >= 0xf900 && code <= 0xfaff) ||
111
+ (code >= 0xfe30 && code <= 0xfe6f) ||
112
+ (code >= 0xff00 && code <= 0xff60) ||
113
+ (code >= 0xffe0 && code <= 0xffe6));
114
+ width += isWide ? 2 : 1;
115
+ }
116
+ return width;
117
+ }
118
+ function padColumns(command, description) {
119
+ const commandPad = Math.max(1, COMMAND_COLUMN_WIDTH - displayWidth(command));
120
+ const descriptionPad = Math.max(1, DESCRIPTION_COLUMN_WIDTH - displayWidth(description));
121
+ return `${command}${' '.repeat(commandPad)}# ${description}${' '.repeat(descriptionPad)}`;
122
+ }
123
+ function rootScriptLine(item) {
124
+ if (item.kind === 'cli') {
125
+ const command = cliScriptCommand(item.script, item.sampleArg);
126
+ const target = cliScriptTarget(item.containerKey, item.sampleArg);
127
+ return `${padColumns(command, item.description)}→ ${target}`;
128
+ }
129
+ return padColumns(rootScriptCommand(item.script), item.description);
130
+ }
131
+ function quoteIfNeeded(value) {
132
+ return /\s/.test(value) ? `"${value}"` : value;
133
+ }
134
+ export function printSuccess(summary) {
135
+ logInfo(`✔ ${summary}`);
136
+ }
137
+ /**
138
+ * 统一收尾提示:结果行 → 接下来 → 两个「常用命令」区块。
139
+ * 收录边界由 workspace-contract.ts 的脚本契约决定,脚本契约变化时提示随之变化。
140
+ */
141
+ export function printNextSteps(input) {
142
+ const lines = [''];
143
+ lines.push('接下来:');
144
+ lines.push('');
145
+ if (resolve(input.cwd, input.targetArg) !== resolve(input.cwd)) {
146
+ lines.push(`${INDENT}cd ${quoteIfNeeded(input.targetArg)}`);
147
+ }
148
+ if (!input.installed) {
149
+ lines.push(`${INDENT}pnpm install`);
150
+ }
151
+ if (input.appPackageName) {
152
+ lines.push(`${INDENT}pnpm --filter ${input.appPackageName} dev`);
153
+ }
154
+ lines.push('');
155
+ lines.push('| 常用命令 · 在 workspace 根目录执行');
156
+ lines.push('');
157
+ ROOT_SCRIPT_CONTRACT.forEach((item) => lines.push(`${INDENT}${rootScriptLine(item)}`));
158
+ lines.push('');
159
+ lines.push(`| 常用命令 · 在具体工程目录内执行(如 cd ${PROJECT_CONTAINERS.app}/app)`);
160
+ lines.push('');
161
+ PROJECT_SCRIPT_CONTRACT.forEach((item) => lines.push(`${INDENT}${padColumns(rootScriptCommand(item.script), item.description)}`));
162
+ lines.push('');
163
+ logInfo(lines.join('\n'));
164
+ }
95
165
  //# sourceMappingURL=output.js.map