@farris/cli 2.3.8 → 2.3.9

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 (108) hide show
  1. package/lib/commands/add-app.js +5 -5
  2. package/lib/commands/add-lib.js +5 -5
  3. package/lib/commands/add-micro.js +11 -11
  4. package/lib/commands/add-project.js +196 -196
  5. package/lib/commands/add-project.js.map +1 -1
  6. package/lib/commands/build-components.js +60 -60
  7. package/lib/commands/build-components.js.map +1 -1
  8. package/lib/commands/build-css.js +38 -38
  9. package/lib/commands/build-css.js.map +1 -1
  10. package/lib/commands/build-lib.js +30 -30
  11. package/lib/commands/build.js +19 -19
  12. package/lib/commands/build.js.map +1 -1
  13. package/lib/commands/create-app-options.js +85 -85
  14. package/lib/commands/create-app-options.js.map +1 -1
  15. package/lib/commands/create-app.js +131 -131
  16. package/lib/commands/create-app.js.map +1 -1
  17. package/lib/commands/create-options.js +58 -58
  18. package/lib/commands/create-options.js.map +1 -1
  19. package/lib/commands/create.js +341 -341
  20. package/lib/commands/create.js.map +1 -1
  21. package/lib/commands/dev-serve.js +18 -18
  22. package/lib/commands/extract-i18n.js +74 -74
  23. package/lib/commands/extract-i18n.js.map +1 -1
  24. package/lib/commands/generate/api.js +124 -124
  25. package/lib/commands/generate/api.js.map +1 -1
  26. package/lib/commands/generate/common.js +101 -101
  27. package/lib/commands/generate/common.js.map +1 -1
  28. package/lib/commands/generate/component.js +156 -156
  29. package/lib/commands/generate/component.js.map +1 -1
  30. package/lib/commands/generate/view.js +168 -168
  31. package/lib/commands/generate/view.js.map +1 -1
  32. package/lib/commands/preview-serve.js +16 -16
  33. package/lib/commands/workspace/add-app.js +15 -15
  34. package/lib/commands/workspace/add-app.js.map +1 -1
  35. package/lib/commands/workspace/create.js +62 -62
  36. package/lib/commands/workspace/create.js.map +1 -1
  37. package/lib/commands/workspace/inspect.js +30 -30
  38. package/lib/commands/workspace/inspect.js.map +1 -1
  39. package/lib/commands/workspace/verify.js +38 -38
  40. package/lib/commands/workspace/verify.js.map +1 -1
  41. package/lib/common/agents-doc.js +33 -33
  42. package/lib/common/agents-doc.js.map +1 -1
  43. package/lib/common/apply-catalog-deps.js +15 -15
  44. package/lib/common/apply-catalog-deps.js.map +1 -1
  45. package/lib/common/component-file-name.js +3 -3
  46. package/lib/common/constant.js +85 -84
  47. package/lib/common/constant.js.map +1 -1
  48. package/lib/common/create-app-target.js +46 -46
  49. package/lib/common/create-app-target.js.map +1 -1
  50. package/lib/common/generate-app.js +106 -106
  51. package/lib/common/generate-app.js.map +1 -1
  52. package/lib/common/get-dependencies.js +9 -9
  53. package/lib/common/get-farris-config.js +25 -25
  54. package/lib/common/get-farris-config.js.map +1 -1
  55. package/lib/common/get-version.js +6 -6
  56. package/lib/common/get-vite-config.js +192 -192
  57. package/lib/common/get-vite-config.js.map +1 -1
  58. package/lib/common/lib-package-exports.js +24 -24
  59. package/lib/common/lib-package-exports.js.map +1 -1
  60. package/lib/common/list-lib-components.js +23 -23
  61. package/lib/common/list-lib-components.js.map +1 -1
  62. package/lib/common/output.js +164 -164
  63. package/lib/common/output.js.map +1 -1
  64. package/lib/common/project-layout.js +155 -155
  65. package/lib/common/project-layout.js.map +1 -1
  66. package/lib/common/safety.js +172 -172
  67. package/lib/common/safety.js.map +1 -1
  68. package/lib/common/template-manifest.js +18 -18
  69. package/lib/common/template-manifest.js.map +1 -1
  70. package/lib/common/template-renderer.js +114 -114
  71. package/lib/common/template-renderer.js.map +1 -1
  72. package/lib/common/transaction.js +83 -83
  73. package/lib/common/transaction.js.map +1 -1
  74. package/lib/common/verifier.js +187 -187
  75. package/lib/common/verifier.js.map +1 -1
  76. package/lib/common/workspace-contract.js +191 -191
  77. package/lib/common/workspace-contract.js.map +1 -1
  78. package/lib/config/vite-app.js +13 -13
  79. package/lib/config/vite-common.js +20 -20
  80. package/lib/config/vite-common.js.map +1 -1
  81. package/lib/config/vite-component.js +32 -32
  82. package/lib/config/vite-component.js.map +1 -1
  83. package/lib/config/vite-lib.js +26 -26
  84. package/lib/index.js +261 -261
  85. package/lib/plugins/create-app-package-json.js +23 -23
  86. package/lib/plugins/create-component-style.js +44 -44
  87. package/lib/plugins/create-package-json.js +48 -48
  88. package/lib/plugins/create-package-json.js.map +1 -1
  89. package/lib/plugins/dts.js +8 -8
  90. package/lib/plugins/html-system.js +9 -9
  91. package/lib/plugins/mock.js +240 -292
  92. package/lib/plugins/mock.js.map +1 -1
  93. package/lib/plugins/msw-adapter.js +141 -0
  94. package/lib/plugins/msw-adapter.js.map +1 -0
  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 +6 -1
  99. package/templates/create/AGENTS.md +4 -3
  100. package/templates/micro/mock/README.md +39 -26
  101. package/templates/micro/mock/tsconfig.json +10 -0
  102. package/templates/micro/package.json +1 -0
  103. package/templates/mobile/mock/README.md +39 -26
  104. package/templates/mobile/mock/tsconfig.json +10 -0
  105. package/templates/mobile/package.json +1 -0
  106. package/templates/web/mock/README.md +39 -26
  107. package/templates/web/mock/tsconfig.json +10 -0
  108. package/templates/web/package.json +1 -0
@@ -1,156 +1,156 @@
1
- import { existsSync, readFileSync, readdirSync, statSync } from 'node:fs';
2
- import { dirname, join, resolve } from 'node:path';
3
- /** 分层容器:工程类型 → 容器目录名。全仓库唯一来源(写入只用它)。 */
4
- export const PROJECT_CONTAINERS = { app: 'app', lib: 'lib' };
5
- /** 全部容器名,供安全校验识别 workspace 元数据目录。 */
6
- export const CONTAINERS = Object.values(PROJECT_CONTAINERS);
7
- /** 容器命名 → 工程类型;非 app/lib 返回 null(旧容器名一律不再识别)。 */
8
- export function containerType(container) {
9
- if (container === PROJECT_CONTAINERS.app) {
10
- return 'app';
11
- }
12
- if (container === PROJECT_CONTAINERS.lib) {
13
- return 'lib';
14
- }
15
- return null;
16
- }
17
- export function containerFor(type) {
18
- // 微应用也是「可部署的应用」:与 app 同在 app/ 容器
19
- return type === 'micro' ? PROJECT_CONTAINERS.app : PROJECT_CONTAINERS[type];
20
- }
21
- export function resolveProjectPath(wsRoot, type, dir) {
22
- return join(wsRoot, containerFor(type), dir);
23
- }
24
- /** 读工程 package.json 的 farris.type(当前只有 micro 会写,用于与普通应用区分)。 */
25
- function readDeclaredType(projectDir) {
26
- const pkgPath = join(projectDir, 'package.json');
27
- if (!existsSync(pkgPath)) {
28
- return undefined;
29
- }
30
- try {
31
- const declared = JSON.parse(readFileSync(pkgPath, 'utf-8'))?.farris?.type;
32
- return declared === 'app' || declared === 'lib' || declared === 'micro' ? declared : undefined;
33
- }
34
- catch {
35
- return undefined;
36
- }
37
- }
38
- /**
39
- * 解析 pnpm-workspace.yaml 的 packages 列表。
40
- * 只识别 `- "dir/*"` 形式,不引入 yaml 依赖;结构超出该形式时返回空数组,由调用方回退。
41
- */
42
- export function parsePackagesBlock(content) {
43
- const globs = [];
44
- let inPackages = false;
45
- for (const rawLine of content.split(/\r?\n/)) {
46
- const line = rawLine.replace(/#.*$/, '');
47
- if (/^packages\s*:\s*$/.test(line)) {
48
- inPackages = true;
49
- continue;
50
- }
51
- if (!inPackages || line.trim() === '') {
52
- continue;
53
- }
54
- if (/^\S/.test(line)) {
55
- // 回到顶层键,packages 块结束
56
- inPackages = false;
57
- continue;
58
- }
59
- const match = line.match(/^\s*-\s*["']?([^"'\s]+)["']?\s*$/);
60
- if (match) {
61
- globs.push(match[1]);
62
- }
63
- }
64
- return globs;
65
- }
66
- /**
67
- * 读出 workspace 的待扫描 glob。解析不到时回退到两个约定容器目录,并置 fallback=true。
68
- */
69
- export function readWorkspaceGlobs(wsRoot) {
70
- const convention = CONTAINERS.map((container) => `${container}/*`);
71
- const yamlPath = join(wsRoot, 'pnpm-workspace.yaml');
72
- if (!existsSync(yamlPath)) {
73
- return { globs: convention, fallback: true };
74
- }
75
- const parsed = parsePackagesBlock(readFileSync(yamlPath, 'utf-8'));
76
- if (parsed.length === 0) {
77
- return { globs: convention, fallback: true };
78
- }
79
- return { globs: parsed, fallback: false };
80
- }
81
- /**
82
- * 扫描 workspace 内的工程:只识别 app/ 与 lib/ 两个容器。
83
- * 其它容器(如历史的 packages/)一律跳过,不再按工程证据推断类型。
84
- */
85
- export function listProjects(wsRoot) {
86
- const { globs } = readWorkspaceGlobs(wsRoot);
87
- const entries = [];
88
- const seen = new Set();
89
- for (const glob of globs) {
90
- const match = glob.match(/^([^/]+)\/\*$/);
91
- if (!match) {
92
- continue;
93
- }
94
- const container = match[1];
95
- const type = containerType(container);
96
- if (!type) {
97
- continue;
98
- }
99
- const containerDir = join(wsRoot, container);
100
- if (!existsSync(containerDir) || !statSync(containerDir).isDirectory()) {
101
- continue;
102
- }
103
- for (const name of readdirSync(containerDir).sort()) {
104
- const projectDir = join(containerDir, name);
105
- if (!statSync(projectDir).isDirectory()) {
106
- continue;
107
- }
108
- const dir = `${container}/${name}`;
109
- if (seen.has(dir)) {
110
- continue;
111
- }
112
- seen.add(dir);
113
- // 容器给默认类型;工程 package.json 的 farris.type 可覆盖(micro 与 app 同容器)
114
- entries.push({ type: readDeclaredType(projectDir) ?? type, dir, name });
115
- }
116
- }
117
- return entries;
118
- }
119
- /**
120
- * 从包名推导目录名(去掉 scope 并转为合法 kebab-case)
121
- */
122
- export function deriveAppDir(name) {
123
- const withoutScope = name.replace(/^@[^/]+\//, '');
124
- return withoutScope
125
- .toLowerCase()
126
- .replace(/[^a-z0-9-_]/g, '-')
127
- .replace(/^-+|-+$/g, '');
128
- }
129
- /**
130
- * 校验 npm 包名有效性
131
- */
132
- export function validatePackageName(name) {
133
- if (!name || typeof name !== 'string') {
134
- return false;
135
- }
136
- return /^(@[a-z0-9-~][a-z0-9-._~]*\/)?[a-z0-9-~][a-z0-9-._~]*$/.test(name);
137
- }
138
- /**
139
- * 向上查找 Workspace 根目录(同时含 pnpm-workspace.yaml 与 package.json)。
140
- */
141
- export function findWorkspaceRoot(startDir = process.cwd()) {
142
- let current = resolve(startDir);
143
- while (true) {
144
- if (existsSync(join(current, 'pnpm-workspace.yaml')) &&
145
- existsSync(join(current, 'package.json'))) {
146
- return current;
147
- }
148
- const parent = dirname(current);
149
- if (parent === current) {
150
- break;
151
- }
152
- current = parent;
153
- }
154
- return null;
155
- }
1
+ import { existsSync, readFileSync, readdirSync, statSync } from 'node:fs';
2
+ import { dirname, join, resolve } from 'node:path';
3
+ /** 分层容器:工程类型 → 容器目录名。全仓库唯一来源(写入只用它)。 */
4
+ export const PROJECT_CONTAINERS = { app: 'app', lib: 'lib' };
5
+ /** 全部容器名,供安全校验识别 workspace 元数据目录。 */
6
+ export const CONTAINERS = Object.values(PROJECT_CONTAINERS);
7
+ /** 容器命名 → 工程类型;非 app/lib 返回 null(旧容器名一律不再识别)。 */
8
+ export function containerType(container) {
9
+ if (container === PROJECT_CONTAINERS.app) {
10
+ return 'app';
11
+ }
12
+ if (container === PROJECT_CONTAINERS.lib) {
13
+ return 'lib';
14
+ }
15
+ return null;
16
+ }
17
+ export function containerFor(type) {
18
+ // 微应用也是「可部署的应用」:与 app 同在 app/ 容器
19
+ return type === 'micro' ? PROJECT_CONTAINERS.app : PROJECT_CONTAINERS[type];
20
+ }
21
+ export function resolveProjectPath(wsRoot, type, dir) {
22
+ return join(wsRoot, containerFor(type), dir);
23
+ }
24
+ /** 读工程 package.json 的 farris.type(当前只有 micro 会写,用于与普通应用区分)。 */
25
+ function readDeclaredType(projectDir) {
26
+ const pkgPath = join(projectDir, 'package.json');
27
+ if (!existsSync(pkgPath)) {
28
+ return undefined;
29
+ }
30
+ try {
31
+ const declared = JSON.parse(readFileSync(pkgPath, 'utf-8'))?.farris?.type;
32
+ return declared === 'app' || declared === 'lib' || declared === 'micro' ? declared : undefined;
33
+ }
34
+ catch {
35
+ return undefined;
36
+ }
37
+ }
38
+ /**
39
+ * 解析 pnpm-workspace.yaml 的 packages 列表。
40
+ * 只识别 `- "dir/*"` 形式,不引入 yaml 依赖;结构超出该形式时返回空数组,由调用方回退。
41
+ */
42
+ export function parsePackagesBlock(content) {
43
+ const globs = [];
44
+ let inPackages = false;
45
+ for (const rawLine of content.split(/\r?\n/)) {
46
+ const line = rawLine.replace(/#.*$/, '');
47
+ if (/^packages\s*:\s*$/.test(line)) {
48
+ inPackages = true;
49
+ continue;
50
+ }
51
+ if (!inPackages || line.trim() === '') {
52
+ continue;
53
+ }
54
+ if (/^\S/.test(line)) {
55
+ // 回到顶层键,packages 块结束
56
+ inPackages = false;
57
+ continue;
58
+ }
59
+ const match = line.match(/^\s*-\s*["']?([^"'\s]+)["']?\s*$/);
60
+ if (match) {
61
+ globs.push(match[1]);
62
+ }
63
+ }
64
+ return globs;
65
+ }
66
+ /**
67
+ * 读出 workspace 的待扫描 glob。解析不到时回退到两个约定容器目录,并置 fallback=true。
68
+ */
69
+ export function readWorkspaceGlobs(wsRoot) {
70
+ const convention = CONTAINERS.map((container) => `${container}/*`);
71
+ const yamlPath = join(wsRoot, 'pnpm-workspace.yaml');
72
+ if (!existsSync(yamlPath)) {
73
+ return { globs: convention, fallback: true };
74
+ }
75
+ const parsed = parsePackagesBlock(readFileSync(yamlPath, 'utf-8'));
76
+ if (parsed.length === 0) {
77
+ return { globs: convention, fallback: true };
78
+ }
79
+ return { globs: parsed, fallback: false };
80
+ }
81
+ /**
82
+ * 扫描 workspace 内的工程:只识别 app/ 与 lib/ 两个容器。
83
+ * 其它容器(如历史的 packages/)一律跳过,不再按工程证据推断类型。
84
+ */
85
+ export function listProjects(wsRoot) {
86
+ const { globs } = readWorkspaceGlobs(wsRoot);
87
+ const entries = [];
88
+ const seen = new Set();
89
+ for (const glob of globs) {
90
+ const match = glob.match(/^([^/]+)\/\*$/);
91
+ if (!match) {
92
+ continue;
93
+ }
94
+ const container = match[1];
95
+ const type = containerType(container);
96
+ if (!type) {
97
+ continue;
98
+ }
99
+ const containerDir = join(wsRoot, container);
100
+ if (!existsSync(containerDir) || !statSync(containerDir).isDirectory()) {
101
+ continue;
102
+ }
103
+ for (const name of readdirSync(containerDir).sort()) {
104
+ const projectDir = join(containerDir, name);
105
+ if (!statSync(projectDir).isDirectory()) {
106
+ continue;
107
+ }
108
+ const dir = `${container}/${name}`;
109
+ if (seen.has(dir)) {
110
+ continue;
111
+ }
112
+ seen.add(dir);
113
+ // 容器给默认类型;工程 package.json 的 farris.type 可覆盖(micro 与 app 同容器)
114
+ entries.push({ type: readDeclaredType(projectDir) ?? type, dir, name });
115
+ }
116
+ }
117
+ return entries;
118
+ }
119
+ /**
120
+ * 从包名推导目录名(去掉 scope 并转为合法 kebab-case)
121
+ */
122
+ export function deriveAppDir(name) {
123
+ const withoutScope = name.replace(/^@[^/]+\//, '');
124
+ return withoutScope
125
+ .toLowerCase()
126
+ .replace(/[^a-z0-9-_]/g, '-')
127
+ .replace(/^-+|-+$/g, '');
128
+ }
129
+ /**
130
+ * 校验 npm 包名有效性
131
+ */
132
+ export function validatePackageName(name) {
133
+ if (!name || typeof name !== 'string') {
134
+ return false;
135
+ }
136
+ return /^(@[a-z0-9-~][a-z0-9-._~]*\/)?[a-z0-9-~][a-z0-9-._~]*$/.test(name);
137
+ }
138
+ /**
139
+ * 向上查找 Workspace 根目录(同时含 pnpm-workspace.yaml 与 package.json)。
140
+ */
141
+ export function findWorkspaceRoot(startDir = process.cwd()) {
142
+ let current = resolve(startDir);
143
+ while (true) {
144
+ if (existsSync(join(current, 'pnpm-workspace.yaml')) &&
145
+ existsSync(join(current, 'package.json'))) {
146
+ return current;
147
+ }
148
+ const parent = dirname(current);
149
+ if (parent === current) {
150
+ break;
151
+ }
152
+ current = parent;
153
+ }
154
+ return null;
155
+ }
156
156
  //# sourceMappingURL=project-layout.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"project-layout.js","sourceRoot":"","sources":["../../src/common/project-layout.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"project-layout.js","sourceRoot":"","sources":["../../src/common/project-layout.ts"],"names":[],"mappings":"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"}