@kmlckj/licos-ai-cli 0.0.41 → 0.0.43

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.
@@ -20,27 +20,31 @@ pnpm remove <package> # 移除依赖
20
20
  - `src/` 下禁止直接使用 `process.env`,不要使用 `__PUBLIC_PATH__`。请求前缀使用全局 `PROJECT_DOMAIN`,构建平台判断使用全局 `LICOS_TARO_ENV`。
21
21
  - 不要在业务代码里使用裸标识符 `TARO_ENV`。如需展示文字 “TARO_ENV”,只作为普通中文/英文说明文本使用,不要把它当作变量读取。
22
22
  - Taro API 只允许单次导入,统一写 `import Taro, { useLoad } from '@tarojs/taro'`,不要同时写 `import { useLoad } from '@tarojs/taro'` 和 `import Taro from '@tarojs/taro'`。
23
+ - 如果页面只使用 `useLoad`,不要导入默认 `Taro` 对象,直接写 `import { useLoad } from '@tarojs/taro'`。只有实际调用 `Taro.xxx()` 时才使用 `import Taro, { useLoad } from '@tarojs/taro'`。
23
24
  - React hooks 必须从 `react` 导入,例如 `import { useMemo, useState } from 'react'`;不要从 `@tarojs/taro` 导入 `useState`、`useEffect`、`useMemo`。
24
25
  - 不要重复导入同一个包。`@tarojs/taro`、`@tarojs/components`、`react`、`lucide-react-taro` 每个文件最多一个 import 语句。
26
+ - 不要在 JSX 属性里写多行 inline 函数。先定义命名函数,再传给属性,例如 `const refreshStatus = () => { ... }` 和 `<Button onClick={refreshStatus}>`,避免 ESLint JSX 对齐错误。
25
27
  - 需要在 `src/` 展示构建环境或项目域名时,直接读取全局常量:`LICOS_TARO_ENV || 'unknown'`、`PROJECT_DOMAIN || ''`,不要写 `process.env.TARO_ENV` 或 `process.env.PROJECT_DOMAIN`。
26
28
  - 需要引用 `src/assets/...` 源码资源时使用 ESM import,例如 `import logoUrl from '@/assets/images/logo.svg'`,不要在 `src/` 中写 CommonJS `require(...)`。
27
29
  - 根目录 `assets/` 是 H5 公开静态目录,不是 `@/assets` 源码别名。放在根 `assets/images/foo.svg` 的文件必须用相对 URL `assets/images/foo.svg`,不要写 `import foo from '@/assets/images/foo.svg'`。只有文件真实存在于 `src/assets/...` 时,才允许从 `@/assets/...` 导入。
28
30
  - 部署路径是 IP + `/p/{projectId}/` 子路径,页面中禁止写根路径 `/assets/...` 或上级路径 `../assets/...`。根目录 `assets/` 文件只能写成相对 URL `assets/...`,否则部署后资源会 404。
31
+ - 静态资源不要通过 `Network.request`、`Taro.request` 或 `fetch` 访问。根 `assets/` 文件直接用于 `<Image src="assets/...">`、链接或页面展示;`Network.request` 只用于 `/api/...` 业务接口。
29
32
  - 不要使用浏览器 DOM 全局做资源探测。禁止 `window`、`document`、`new Image()`、`window.Image`、`globalThis.Image`;图片状态通过 Taro `<Image onLoad onError />` 或直接渲染处理。
30
33
  - 从第三方图标包导入前必须确认导出存在;不确定时优先使用已验证的 `Package`、`Globe`、`Cpu`、`Layers` 等基础图标,避免引入不存在的命名导出导致构建失败。
31
34
  - 禁止输出不完整模板字符串、占位引号或非法 TS 字符串,例如 `"""`、未闭合的引号、未转义的英文单引号。文案中包含引号时使用反引号或正确转义。
32
35
  - 创建或测试小程序时,必须替换默认 `src/pages/index/index.tsx` 为实际首页,或把 `src/app.config.ts` 的第一个页面改为实际入口;不要新增测试页后保留默认占位首页。
36
+ - 完成前必须确认 `src/pages/index/index.tsx` 没有重复 import、未使用 import/变量、未闭合 JSX 或多行 inline 属性导致的格式错误。
33
37
 
34
38
  正确示例:
35
39
 
36
40
  ```tsx
37
41
  import { View, Text, Image } from '@tarojs/components'
38
- import Taro, { useLoad } from '@tarojs/taro'
42
+ import { useLoad } from '@tarojs/taro'
39
43
  import { Textarea } from '@/components/ui/textarea'
40
44
 
41
45
  export default function IndexPage() {
42
46
  useLoad(() => {
43
- Taro.setNavigationBarTitle({ title: '首页' })
47
+ console.log('page loaded')
44
48
  })
45
49
 
46
50
  const envName = LICOS_TARO_ENV || 'unknown'
@@ -67,6 +71,7 @@ export default function IndexPage() {
67
71
  - 根目录 `assets/` 文件在页面中只能写相对 URL,例如 `assets/images/logo.svg`。
68
72
  - 禁止写 `/assets/images/logo.svg`,它会绕过 `/p/{projectId}/` base path。
69
73
  - 禁止写 `../assets/images/logo.svg`,不同页面层级下容易解析错误。
74
+ - 禁止写 `Network.request({ url: '/assets/...' })` 或 `Network.request({ url: 'assets/...' })`。静态资源不是 API 请求。
70
75
  - 完成前必须自查 `src/`,不能残留 `/assets/`、`../assets/` 或 Tailwind 小数类名。
71
76
 
72
77
  **强制规则**:图片、视频等静态资源必须通过 TOS 对象存储管理,代码中使用 TOS 返回的 URL 引用。
@@ -84,6 +84,12 @@ const baseRestrictedSyntaxRules = [
84
84
  message:
85
85
  '部署路径兼容性:根目录 assets 资源必须使用相对 URL(如 assets/logo.svg),禁止 /assets/... 或 ../assets/...,否则部署到 /p/{projectId}/ 子路径后资源会 404。',
86
86
  },
87
+ {
88
+ selector:
89
+ "CallExpression[callee.object.name='Network'][callee.property.name='request'] Property[key.name='url'] > Literal[value=/^(?:\\/|\\.\\.\\/)?assets\\//]",
90
+ message:
91
+ '工程规范:静态资源不能通过 Network.request 访问。根目录 assets 资源应直接作为相对 URL 用于 Image src 或页面展示;Network.request 只用于 /api/... 业务接口。',
92
+ },
87
93
  {
88
94
  selector:
89
95
  ":matches(JSXAttribute[name.name='className'], CallExpression[callee.name=/^(cn|cva)$/]) :matches(Literal[value=/\\:has\\(/], TemplateElement[value.raw=/\\:has\\(/])",
package/lib/cli.js CHANGED
@@ -2109,7 +2109,7 @@ const EventBuilder = {
2109
2109
  };
2110
2110
 
2111
2111
  var name = "@kmlckj/licos-ai-cli";
2112
- var version = "0.0.41";
2112
+ var version = "0.0.43";
2113
2113
  var description = "LICOS AI coding workspace CLI - project template engine and dev tools";
2114
2114
  var license = "MIT";
2115
2115
  var author = "kmlckj";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kmlckj/licos-ai-cli",
3
- "version": "0.0.41",
3
+ "version": "0.0.43",
4
4
  "description": "LICOS AI coding workspace CLI - project template engine and dev tools",
5
5
  "license": "MIT",
6
6
  "author": "kmlckj",