@coze-arch/cli 0.0.3-beta.1 → 0.0.5

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.
@@ -0,0 +1,77 @@
1
+ # Expo App + Express.js
2
+
3
+ ## 目录结构规范(严格遵循)
4
+
5
+ 当前仓库是一个 monorepo(基于 pnpm 的 workspace)
6
+
7
+ - Expo 代码在 client 目录,Express.js 代码在 server 目录
8
+ - 本模板默认无 Tab Bar,可按需改造
9
+
10
+ 目录结构说明
11
+
12
+ ├── server/ # 服务端代码根目录 (Express.js)
13
+ | ├── src/
14
+ │ │ └── index.ts # Express 入口文件
15
+ | └── package.json # 服务端 package.json
16
+ ├── client/ # React Native 前端代码
17
+ │ ├── app/ # Expo Router 路由目录(仅路由配置)
18
+ │ │ ├── _layout.tsx # 根布局文件(必需,务必阅读)
19
+ │ │ ├── home.tsx # 首页
20
+ │ │ └── index.tsx # re-export home.tsx
21
+ │ ├── screens/ # 页面实现目录(与 app/ 路由对应)
22
+ │ │ └── demo/ # demo 示例页面
23
+ │ │ ├── index.tsx # 页面组件实现
24
+ │ │ └── styles.ts # 页面样式
25
+ │ ├── components/ # 可复用组件
26
+ │ │ └── Screen.tsx # 页面容器组件(必用)
27
+ │ ├── hooks/ # 自定义 Hooks
28
+ │ ├── contexts/ # React Context 代码
29
+ │ ├── constants/ # 常量定义(如主题配置)
30
+ │ ├── utils/ # 工具函数
31
+ │ ├── assets/ # 静态资源
32
+ | └── package.json # Expo 应用 package.json
33
+ ├── package.json
34
+ ├── .cozeproj # 预置脚手架脚本(禁止修改)
35
+ └── .coze # 配置文件(禁止修改)
36
+
37
+ ## 依赖管理与模块导入规范
38
+
39
+ ### 依赖安装
40
+ **禁止**使用 `npm` 或 `yarn`,按目录区分安装命令:
41
+
42
+ | 目录 | 安装命令 | 说明 |
43
+ |------|----------|------|
44
+ | `client/` | `npx expo install <package>` | Expo 会自动选择与 SDK 兼容的版本 |
45
+ | `server/` | `pnpm add <package>` | 使用 pnpm 管理后端依赖 |
46
+
47
+ ```bash
48
+ # client 目录(Expo 项目)
49
+ cd client && npx expo install expo-camera expo-image-picker
50
+
51
+ # server 目录(Express 项目)
52
+ cd server && pnpm add axios cors
53
+ ```
54
+
55
+ **网络问题处理**:`npx expo install` 可能因网络原因失败,失败时重试 2 次,仍失败则改用 `pnpm add` 安装
56
+
57
+ ## Expo 开发规范
58
+
59
+ ### 路径别名
60
+
61
+ Expo 配置了 `@/` 路径别名指向 `client/` 目录:
62
+
63
+ ```tsx
64
+ // 正确
65
+ import { Screen } from '@/components/Screen';
66
+
67
+ // 避免相对路径
68
+ import { Screen } from '../../../components/Screen';
69
+ ```
70
+
71
+ ## 本地开发
72
+
73
+ 运行 coze dev 可以同时启动前端和后端服务,如果端口已占用,该命令会先杀掉占用端口的进程再启动,也可以用来重启前端和后端服务
74
+
75
+ ```bash
76
+ coze dev
77
+ ```
@@ -34,22 +34,25 @@
34
34
  ├── .cozeproj # 预置脚手架脚本(禁止修改)
35
35
  └── .coze # 配置文件(禁止修改)
36
36
 
37
- ## 安装依赖
37
+ ## 依赖管理与模块导入规范
38
38
 
39
- ### 命令
39
+ ### 依赖安装
40
+ **禁止**使用 `npm` 或 `yarn`,按目录区分安装命令:
40
41
 
41
- ```bash
42
- pnpm i
43
- ```
44
-
45
- ### 新增依赖约束
42
+ | 目录 | 安装命令 | 说明 |
43
+ |------|----------|------|
44
+ | `client/` | `npx expo install <package>` | Expo 会自动选择与 SDK 兼容的版本 |
45
+ | `server/` | `pnpm add <package>` | 使用 pnpm 管理后端依赖 |
46
46
 
47
- 如果需要新增依赖,需在 client 和 server 各自的目录添加(原因:隔离前后端的依赖),禁止在根目录直接安装依赖
47
+ ```bash
48
+ # client 目录(Expo 项目)
49
+ cd client && npx expo install expo-camera expo-image-picker
48
50
 
49
- ### 新增依赖标准流程
51
+ # server 目录(Express 项目)
52
+ cd server && pnpm add axios cors
53
+ ```
50
54
 
51
- - 编辑 `client/package.json` `server/package.json`
52
- - 在根目录执行 `pnpm i`
55
+ **网络问题处理**:`npx expo install` 可能因网络原因失败,失败时重试 2 次,仍失败则改用 `pnpm add` 安装
53
56
 
54
57
  ## Expo 开发规范
55
58
 
@@ -33,9 +33,15 @@ export const AuthProvider: React.FC<{ children: ReactNode }> = ({ children }) =>
33
33
  token: null,
34
34
  isAuthenticated: false,
35
35
  isLoading: false,
36
- login: async (token: string) => {},
37
- logout: async () => {},
38
- updateUser: () => {},
36
+
37
+ // 登录逻辑,根据项目实际情况实现
38
+ login: async (token: string) => {}, // eslint-disable-line @typescript-eslint/no-empty-function
39
+
40
+ // 登出逻辑,根据项目实际情况实现
41
+ logout: async () => {}, // eslint-disable-line @typescript-eslint/no-empty-function
42
+
43
+ // 更新用户信息,根据项目实际情况实现
44
+ updateUser: () => {}, // eslint-disable-line @typescript-eslint/no-empty-function
39
45
  };
40
46
  return <AuthContext.Provider value={value}>{children}</AuthContext.Provider>;
41
47
  };
@@ -100,6 +100,9 @@ export default [
100
100
  },
101
101
  ],
102
102
  'reactnative/wrap-horizontal-scrollview-inside-view': ['error'],
103
+ 'no-empty-function': 'off',
104
+ '@typescript-eslint/no-empty-function': 'error',
105
+ 'no-warning-comments': ['error', { terms: ['TODO'], location: 'start' }],
103
106
  },
104
107
  },
105
108