@coze-arch/cli 0.0.1-alpha.b0f2c2 → 0.0.1-alpha.b41a94

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 (158) hide show
  1. package/README.md +1 -0
  2. package/lib/__templates__/expo/.cozeproj/scripts/dev_run.sh +13 -12
  3. package/lib/__templates__/expo/.cozeproj/scripts/server_dev_run.sh +9 -8
  4. package/lib/__templates__/expo/client/components/Screen.tsx +2 -2
  5. package/lib/__templates__/expo/client/eslint.config.mjs +7 -0
  6. package/lib/__templates__/expo/client/metro.config.js +3 -0
  7. package/lib/__templates__/expo/client/package.json +35 -35
  8. package/lib/__templates__/expo/client/screens/demo/index.tsx +3 -3
  9. package/lib/__templates__/expo/client/scripts/install-missing-deps.js +10 -10
  10. package/lib/__templates__/expo/eslint-plugins/forbid-emoji/index.js +9 -0
  11. package/lib/__templates__/expo/eslint-plugins/forbid-emoji/rule.js +112 -0
  12. package/lib/__templates__/expo/eslint-plugins/forbid-emoji/tech.md +94 -0
  13. package/lib/__templates__/expo/eslint-plugins/restrict-linear-gradient/index.js +9 -0
  14. package/lib/__templates__/expo/eslint-plugins/restrict-linear-gradient/rule.js +120 -0
  15. package/lib/__templates__/expo/eslint-plugins/restrict-linear-gradient/tech.md +58 -0
  16. package/lib/__templates__/expo/package.json +1 -1
  17. package/lib/__templates__/expo/patches/{expo@54.0.32.patch → expo@54.0.33.patch} +3 -2
  18. package/lib/__templates__/expo/pnpm-lock.yaml +340 -1736
  19. package/lib/__templates__/expo/server/package.json +9 -7
  20. package/lib/__templates__/expo/server/src/index.ts +1 -0
  21. package/lib/__templates__/expo/template.config.js +56 -0
  22. package/lib/__templates__/native-static/.coze +11 -0
  23. package/lib/__templates__/native-static/index.html +33 -0
  24. package/lib/__templates__/native-static/styles/main.css +136 -0
  25. package/lib/__templates__/native-static/template.config.js +22 -0
  26. package/lib/__templates__/nextjs/README.md +5 -0
  27. package/lib/__templates__/nextjs/eslint.config.mjs +5 -0
  28. package/lib/__templates__/nextjs/next.config.ts +1 -2
  29. package/lib/__templates__/nextjs/package.json +5 -6
  30. package/lib/__templates__/nextjs/pnpm-lock.yaml +1145 -109
  31. package/lib/__templates__/nextjs/scripts/build.sh +4 -1
  32. package/lib/__templates__/nextjs/scripts/dev.sh +8 -2
  33. package/lib/__templates__/nextjs/scripts/start.sh +7 -1
  34. package/lib/__templates__/nextjs/src/app/layout.tsx +1 -1
  35. package/lib/__templates__/nextjs/src/app/page.tsx +17 -60
  36. package/lib/__templates__/nextjs/src/server.ts +35 -0
  37. package/lib/__templates__/nextjs/template.config.js +49 -14
  38. package/lib/__templates__/nextjs/tsconfig.json +1 -1
  39. package/lib/__templates__/nuxt-vue/.coze +12 -0
  40. package/lib/__templates__/nuxt-vue/README.md +73 -0
  41. package/lib/__templates__/nuxt-vue/_gitignore +24 -0
  42. package/lib/__templates__/nuxt-vue/_npmrc +23 -0
  43. package/lib/__templates__/nuxt-vue/app/app.vue +6 -0
  44. package/lib/__templates__/nuxt-vue/app/pages/index.vue +23 -0
  45. package/lib/__templates__/nuxt-vue/assets/css/main.css +24 -0
  46. package/lib/__templates__/nuxt-vue/nuxt.config.ts +116 -0
  47. package/lib/__templates__/nuxt-vue/package.json +35 -0
  48. package/lib/__templates__/nuxt-vue/pnpm-lock.yaml +8759 -0
  49. package/lib/__templates__/nuxt-vue/postcss.config.mjs +8 -0
  50. package/lib/__templates__/nuxt-vue/public/favicon.ico +0 -0
  51. package/lib/__templates__/nuxt-vue/public/robots.txt +2 -0
  52. package/lib/__templates__/nuxt-vue/scripts/build.sh +14 -0
  53. package/lib/__templates__/nuxt-vue/scripts/dev.sh +39 -0
  54. package/lib/__templates__/nuxt-vue/scripts/prepare.sh +14 -0
  55. package/lib/__templates__/nuxt-vue/scripts/start.sh +21 -0
  56. package/lib/__templates__/nuxt-vue/server/api/hello.ts +10 -0
  57. package/lib/__templates__/nuxt-vue/server/middleware/logger.ts +10 -0
  58. package/lib/__templates__/nuxt-vue/server/routes/health.ts +10 -0
  59. package/lib/__templates__/nuxt-vue/tailwind.config.js +13 -0
  60. package/lib/__templates__/nuxt-vue/template.config.js +87 -0
  61. package/lib/__templates__/nuxt-vue/tsconfig.json +18 -0
  62. package/lib/__templates__/taro/.coze +1 -1
  63. package/lib/__templates__/taro/.cozeproj/scripts/deploy_build.sh +2 -2
  64. package/lib/__templates__/taro/.cozeproj/scripts/deploy_run.sh +4 -3
  65. package/lib/__templates__/taro/.cozeproj/scripts/dev_build.sh +0 -15
  66. package/lib/__templates__/taro/.cozeproj/scripts/dev_run.sh +117 -24
  67. package/lib/__templates__/taro/.cozeproj/scripts/pack.sh +24 -1
  68. package/lib/__templates__/taro/README.md +138 -62
  69. package/lib/__templates__/taro/config/index.ts +105 -41
  70. package/lib/__templates__/taro/config/prod.ts +4 -5
  71. package/lib/__templates__/taro/eslint.config.mjs +82 -4
  72. package/lib/__templates__/taro/package.json +22 -13
  73. package/lib/__templates__/taro/patches/@tarojs__plugin-mini-ci@4.1.9.patch +30 -0
  74. package/lib/__templates__/taro/pnpm-lock.yaml +1307 -423
  75. package/lib/__templates__/taro/server/package.json +3 -1
  76. package/lib/__templates__/taro/server/src/main.ts +14 -2
  77. package/lib/__templates__/taro/src/app.css +141 -37
  78. package/lib/__templates__/taro/src/app.tsx +9 -0
  79. package/lib/__templates__/taro/src/components/ui/accordion.tsx +159 -0
  80. package/lib/__templates__/taro/src/components/ui/alert-dialog.tsx +260 -0
  81. package/lib/__templates__/taro/src/components/ui/alert.tsx +60 -0
  82. package/lib/__templates__/taro/src/components/ui/aspect-ratio.tsx +36 -0
  83. package/lib/__templates__/taro/src/components/ui/avatar.tsx +84 -0
  84. package/lib/__templates__/taro/src/components/ui/badge.tsx +37 -0
  85. package/lib/__templates__/taro/src/components/ui/breadcrumb.tsx +117 -0
  86. package/lib/__templates__/taro/src/components/ui/button-group.tsx +83 -0
  87. package/lib/__templates__/taro/src/components/ui/button.tsx +67 -0
  88. package/lib/__templates__/taro/src/components/ui/calendar.tsx +394 -0
  89. package/lib/__templates__/taro/src/components/ui/card.tsx +108 -0
  90. package/lib/__templates__/taro/src/components/ui/carousel.tsx +228 -0
  91. package/lib/__templates__/taro/src/components/ui/checkbox.tsx +58 -0
  92. package/lib/__templates__/taro/src/components/ui/code-block.tsx +169 -0
  93. package/lib/__templates__/taro/src/components/ui/collapsible.tsx +71 -0
  94. package/lib/__templates__/taro/src/components/ui/command.tsx +385 -0
  95. package/lib/__templates__/taro/src/components/ui/context-menu.tsx +614 -0
  96. package/lib/__templates__/taro/src/components/ui/dialog.tsx +256 -0
  97. package/lib/__templates__/taro/src/components/ui/drawer.tsx +192 -0
  98. package/lib/__templates__/taro/src/components/ui/dropdown-menu.tsx +561 -0
  99. package/lib/__templates__/taro/src/components/ui/field.tsx +228 -0
  100. package/lib/__templates__/taro/src/components/ui/hover-card.tsx +282 -0
  101. package/lib/__templates__/taro/src/components/ui/input-group.tsx +197 -0
  102. package/lib/__templates__/taro/src/components/ui/input-otp.tsx +136 -0
  103. package/lib/__templates__/taro/src/components/ui/input.tsx +56 -0
  104. package/lib/__templates__/taro/src/components/ui/label.tsx +24 -0
  105. package/lib/__templates__/taro/src/components/ui/menubar.tsx +595 -0
  106. package/lib/__templates__/taro/src/components/ui/navigation-menu.tsx +264 -0
  107. package/lib/__templates__/taro/src/components/ui/pagination.tsx +118 -0
  108. package/lib/__templates__/taro/src/components/ui/popover.tsx +291 -0
  109. package/lib/__templates__/taro/src/components/ui/portal.tsx +19 -0
  110. package/lib/__templates__/taro/src/components/ui/progress.tsx +28 -0
  111. package/lib/__templates__/taro/src/components/ui/radio-group.tsx +64 -0
  112. package/lib/__templates__/taro/src/components/ui/resizable.tsx +346 -0
  113. package/lib/__templates__/taro/src/components/ui/scroll-area.tsx +34 -0
  114. package/lib/__templates__/taro/src/components/ui/select.tsx +438 -0
  115. package/lib/__templates__/taro/src/components/ui/separator.tsx +30 -0
  116. package/lib/__templates__/taro/src/components/ui/sheet.tsx +262 -0
  117. package/lib/__templates__/taro/src/components/ui/skeleton.tsx +17 -0
  118. package/lib/__templates__/taro/src/components/ui/slider.tsx +203 -0
  119. package/lib/__templates__/taro/src/components/ui/sonner.tsx +1 -0
  120. package/lib/__templates__/taro/src/components/ui/switch.tsx +55 -0
  121. package/lib/__templates__/taro/src/components/ui/table.tsx +142 -0
  122. package/lib/__templates__/taro/src/components/ui/tabs.tsx +114 -0
  123. package/lib/__templates__/taro/src/components/ui/textarea.tsx +54 -0
  124. package/lib/__templates__/taro/src/components/ui/toast.tsx +517 -0
  125. package/lib/__templates__/taro/src/components/ui/toggle-group.tsx +120 -0
  126. package/lib/__templates__/taro/src/components/ui/toggle.tsx +77 -0
  127. package/lib/__templates__/taro/src/components/ui/tooltip.tsx +455 -0
  128. package/lib/__templates__/taro/src/index.html +20 -1
  129. package/lib/__templates__/taro/src/lib/hooks/use-keyboard-offset.ts +37 -0
  130. package/lib/__templates__/taro/src/lib/measure.ts +115 -0
  131. package/lib/__templates__/taro/src/lib/platform.ts +12 -0
  132. package/lib/__templates__/taro/src/lib/utils.ts +6 -0
  133. package/lib/__templates__/taro/src/presets/dev-debug.ts +23 -0
  134. package/lib/__templates__/taro/src/presets/h5-container.tsx +15 -0
  135. package/lib/__templates__/taro/src/presets/h5-navbar.tsx +238 -0
  136. package/lib/__templates__/taro/src/presets/h5-styles.ts +220 -0
  137. package/lib/__templates__/taro/src/presets/index.tsx +18 -0
  138. package/lib/__templates__/templates.json +28 -22
  139. package/lib/__templates__/vite/README.md +190 -11
  140. package/lib/__templates__/vite/_gitignore +1 -0
  141. package/lib/__templates__/vite/eslint.config.mjs +6 -1
  142. package/lib/__templates__/vite/package.json +14 -3
  143. package/lib/__templates__/vite/pnpm-lock.yaml +820 -1593
  144. package/lib/__templates__/vite/scripts/build.sh +4 -1
  145. package/lib/__templates__/vite/scripts/dev.sh +9 -2
  146. package/lib/__templates__/vite/scripts/start.sh +9 -3
  147. package/lib/__templates__/vite/server/routes/index.ts +31 -0
  148. package/lib/__templates__/vite/server/server.ts +65 -0
  149. package/lib/__templates__/vite/server/vite.ts +67 -0
  150. package/lib/__templates__/vite/src/main.ts +17 -47
  151. package/lib/__templates__/vite/template.config.js +49 -14
  152. package/lib/__templates__/vite/tsconfig.json +4 -3
  153. package/lib/__templates__/vite/vite.config.ts +5 -0
  154. package/lib/cli.js +160 -159
  155. package/package.json +7 -3
  156. package/lib/__templates__/taro/src/app.ts +0 -14
  157. package/lib/__templates__/taro/src/utils/h5-styles.ts +0 -22
  158. package/lib/__templates__/taro/src/utils/wx-debug.ts +0 -23
@@ -0,0 +1,120 @@
1
+ const LINEAR_GRADIENT_RE = /linear-gradient/i
2
+
3
+ function getPropertyKeyName(property) {
4
+ if (!property || property.type !== 'Property') return null
5
+ if (property.key.type === 'Identifier') return property.key.name
6
+ if (property.key.type === 'Literal' && typeof property.key.value === 'string') {
7
+ return property.key.value
8
+ }
9
+ return null
10
+ }
11
+
12
+ function getStaticStringValue(node) {
13
+ if (!node) return null
14
+ if (node.type === 'Literal' && typeof node.value === 'string') return node.value
15
+ if (node.type === 'TemplateLiteral') {
16
+ return node.quasis.map(quasi => quasi.value?.cooked || '').join('')
17
+ }
18
+ return null
19
+ }
20
+
21
+ function isLinearGradientString(text) {
22
+ if (!text) return false
23
+ return LINEAR_GRADIENT_RE.test(text)
24
+ }
25
+
26
+ function checkStyleObjectExpression(objectExpression, report) {
27
+ if (!objectExpression || objectExpression.type !== 'ObjectExpression') return
28
+ for (const property of objectExpression.properties) {
29
+ if (!property || property.type !== 'Property') continue
30
+ const keyName = getPropertyKeyName(property)
31
+ if (keyName !== 'backgroundColor') continue
32
+ const valueText = getStaticStringValue(property.value)
33
+ if (isLinearGradientString(valueText)) {
34
+ report(property.key || property)
35
+ }
36
+ }
37
+ }
38
+
39
+ function isStyleSheetMethodCall(node, methodName) {
40
+ if (!node || node.type !== 'CallExpression') return false
41
+ const callee = node.callee
42
+ if (!callee || callee.type !== 'MemberExpression') return false
43
+ if (callee.object.type !== 'Identifier' || callee.object.name !== 'StyleSheet') return false
44
+ if (callee.property.type === 'Identifier') return callee.property.name === methodName
45
+ return false
46
+ }
47
+
48
+ function checkStyleExpression(expression, report) {
49
+ if (!expression) return
50
+ if (expression.type === 'ObjectExpression') {
51
+ checkStyleObjectExpression(expression, report)
52
+ return
53
+ }
54
+ if (expression.type === 'ArrayExpression') {
55
+ for (const element of expression.elements) {
56
+ if (!element) continue
57
+ if (element.type === 'SpreadElement') {
58
+ checkStyleExpression(element.argument, report)
59
+ } else {
60
+ checkStyleExpression(element, report)
61
+ }
62
+ }
63
+ return
64
+ }
65
+ // 例:StyleSheet.flatten([styles.a, { backgroundColor: 'linear-gradient(...)' }])
66
+ if (isStyleSheetMethodCall(expression, 'flatten')) {
67
+ const arg = expression.arguments[0]
68
+ checkStyleExpression(arg, report)
69
+ return
70
+ }
71
+ // 例:StyleSheet.compose(styles.a, { backgroundColor: `linear-gradient(${angle},#fff,#000)` })
72
+ if (isStyleSheetMethodCall(expression, 'compose')) {
73
+ const [first, second] = expression.arguments
74
+ checkStyleExpression(first, report)
75
+ checkStyleExpression(second, report)
76
+ }
77
+ }
78
+
79
+ module.exports = {
80
+ meta: {
81
+ type: 'problem',
82
+ docs: {
83
+ description: 'Disallow linear-gradient string in backgroundColor',
84
+ recommended: 'error',
85
+ },
86
+ schema: [],
87
+ messages: {
88
+ noLinearGradientBackgroundColor:
89
+ 'backgroundColor 和 linear-gradient 无法一起使用,请将 backgroundColor 改为 experimental_backgroundImage',
90
+ },
91
+ },
92
+
93
+ create(context) {
94
+ function report(node) {
95
+ context.report({ node, messageId: 'noLinearGradientBackgroundColor' })
96
+ }
97
+
98
+ return {
99
+ CallExpression(node) {
100
+ if (!isStyleSheetMethodCall(node, 'create')) return
101
+ const firstArg = node.arguments[0]
102
+ if (!firstArg || firstArg.type !== 'ObjectExpression') return
103
+
104
+ checkStyleObjectExpression(firstArg, report)
105
+
106
+ for (const property of firstArg.properties) {
107
+ if (!property || property.type !== 'Property') continue
108
+ if (!property.value || property.value.type !== 'ObjectExpression') continue
109
+ checkStyleObjectExpression(property.value, report)
110
+ }
111
+ },
112
+
113
+ JSXAttribute(node) {
114
+ if (!node.name || node.name.name !== 'style') return
115
+ if (!node.value || node.value.type !== 'JSXExpressionContainer') return
116
+ checkStyleExpression(node.value.expression, report)
117
+ },
118
+ }
119
+ },
120
+ }
@@ -0,0 +1,58 @@
1
+ # restrict-linear-gradient 技术设计
2
+
3
+ ## 目标
4
+ - 禁止在 backgroundColor 中使用 linear-gradient 字符串
5
+ - 覆盖 StyleSheet.create 与 JSX style 的常见写法
6
+ - 实现轻量、易维护,不引入新依赖
7
+
8
+ ## 规则命名与对外形态
9
+ - 插件目录:expo/eslint-plugins/restrict-linear-gradient
10
+ - 规则名:restrict-linear-gradient/no-linear-gradient-backgroundcolor
11
+ - 规则类型:problem
12
+ - 默认等级:error
13
+
14
+ ## 规则行为定义
15
+ ### 报错
16
+ 当以下任一位置出现 backgroundColor 且值包含 linear-gradient( 时,报错:
17
+ - StyleSheet.create 的样式对象中
18
+ - JSX 元素 style 属性内的对象或数组成员
19
+
20
+ ### 不报错
21
+ 以下场景不触发:
22
+ - 非 backgroundColor 的属性
23
+ - backgroundColor 的非字符串值
24
+ - 模板字符串包含表达式的动态值
25
+ - 与 style 无关的对象字面量
26
+
27
+ ## 检测策略
28
+ ### StyleSheet.create
29
+ 遍历 StyleSheet.create 的首个参数对象,检查:
30
+ - 顶层 backgroundColor
31
+ - 每个样式项对应的对象内的 backgroundColor
32
+
33
+ ### JSX style
34
+ 定位 JSXAttribute(name=style) 后,检查表达式:
35
+ - ObjectExpression
36
+ - ArrayExpression 的各元素
37
+ - StyleSheet.flatten / StyleSheet.compose 的参数
38
+
39
+ ## 线性渐变识别
40
+ 使用正则 /linear-gradient/i 检测字符串字面量与模板字符串静态片段。
41
+
42
+ ## 报错信息
43
+ - messageId: noLinearGradientBackgroundColor
44
+ - 文案:backgroundColor 和 linear-gradient 无法一起使用,请将 backgroundColor 改为 experimental_backgroundImage
45
+
46
+ ## 典型示例
47
+ ### 触发
48
+ - StyleSheet.create({ a: { backgroundColor: 'linear-gradient(135deg,#F97316 0%,#FB923C 100%)' } })
49
+ - <View style={{ backgroundColor: "linear-gradient(135deg,#F97316 0%,#FB923C 100%)" }} />
50
+ - <View style={[{ backgroundColor: `linear-gradient(135deg,#F97316 0%,#FB923C 100%)` }]} />
51
+
52
+ ### 不触发
53
+ - { background: 'linear-gradient(...)' }
54
+ - { backgroundColor: someVar }
55
+
56
+ ## 性能考虑
57
+ - 仅扫描目标节点与静态字符串
58
+ - 早返回空节点与非字符串值
@@ -19,7 +19,7 @@
19
19
  "esbuild": "0.27.2"
20
20
  },
21
21
  "patchedDependencies": {
22
- "expo@54.0.32": "patches/expo@54.0.32.patch"
22
+ "expo@54.0.33": "patches/expo@54.0.33.patch"
23
23
  }
24
24
  }
25
25
  }
@@ -1,8 +1,8 @@
1
1
  diff --git a/src/async-require/hmr.ts b/src/async-require/hmr.ts
2
- index 33ce50ee2950c40d2b0553b148710f1e24e44f3d..a13d6f2da10dea858019cc991c21753f64f01fd0 100644
2
+ index 33ce50ee2950c40d2b0553b148710f1e24e44f3d..3d78cb02dd7e96ac9727a2935d8178f2c7e95982 100644
3
3
  --- a/src/async-require/hmr.ts
4
4
  +++ b/src/async-require/hmr.ts
5
- @@ -216,6 +216,39 @@ const HMRClient: HMRClientNativeInterface = {
5
+ @@ -216,6 +216,40 @@ const HMRClient: HMRClientNativeInterface = {
6
6
 
7
7
  client.on('update-done', () => {
8
8
  hideLoading();
@@ -39,6 +39,7 @@ index 33ce50ee2950c40d2b0553b148710f1e24e44f3d..a13d6f2da10dea858019cc991c21753f
39
39
  + checkServerAndReload(6);
40
40
  + }, 35_000);
41
41
  + }
42
+ + console.log('[HMR] Update done.');
42
43
  });
43
44
 
44
45
  client.on('error', (data: { type: string; message: string }) => {