ylyx-cli 1.0.16 → 1.1.1

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 (289) hide show
  1. package/README.md +313 -276
  2. package/bin/ylyx.js +176 -168
  3. package/lib/config.js +325 -283
  4. package/lib/deploy.js +509 -529
  5. package/lib/environments.js +111 -0
  6. package/lib/generator.js +192 -192
  7. package/lib/index.js +113 -113
  8. package/lib/interactive.js +87 -87
  9. package/lib/remote.js +179 -179
  10. package/lib/template.js +174 -174
  11. package/lib/utils.js +148 -148
  12. package/package.json +61 -59
  13. package/templates/react-app/files/.gitignore +22 -0
  14. package/templates/react-app/files/README.md +23 -23
  15. package/templates/react-app/files/package.json +28 -28
  16. package/templates/react-app/files/public/index.html +11 -11
  17. package/templates/react-app/files/src/App.css +15 -15
  18. package/templates/react-app/files/src/App.js +15 -15
  19. package/templates/react-app/files/src/index.css +10 -10
  20. package/templates/react-app/files/src/index.js +11 -11
  21. package/templates/react-app/template.json +11 -11
  22. package/templates/react-component/files/Component.module.css +5 -5
  23. package/templates/react-component/files/Component.tsx +31 -31
  24. package/templates/react-component/files/index.ts +2 -2
  25. package/templates/react-component/template.json +48 -48
  26. package/templates/vue-app/files/.editorconfig +14 -14
  27. package/templates/vue-app/files/.env.development +21 -21
  28. package/templates/vue-app/files/.env.production +18 -18
  29. package/templates/vue-app/files/.eslintignore +5 -5
  30. package/templates/vue-app/files/.eslintrc.js +267 -267
  31. package/templates/vue-app/files/.gitignore +24 -0
  32. package/templates/vue-app/files/.prettierignore +11 -11
  33. package/templates/vue-app/files/.travis.yml +5 -5
  34. package/templates/vue-app/files/.vscode/extensions.json +7 -7
  35. package/templates/vue-app/files/.vscode/settings.json +39 -39
  36. package/templates/vue-app/files/LICENSE +191 -191
  37. package/templates/vue-app/files/README.md +87 -87
  38. package/templates/vue-app/files/babel.config.js +11 -11
  39. package/templates/vue-app/files/jest.config.js +24 -24
  40. package/templates/vue-app/files/package.json +136 -136
  41. package/templates/vue-app/files/plopfile.js +7 -7
  42. package/templates/vue-app/files/postcss.config.js +5 -5
  43. package/templates/vue-app/files/public/default.js +25 -25
  44. package/templates/vue-app/files/public/index.html +26 -26
  45. package/templates/vue-app/files/src/App.vue +54 -54
  46. package/templates/vue-app/files/src/api/bigDataV/index.js +198 -198
  47. package/templates/vue-app/files/src/api/data.js +42 -42
  48. package/templates/vue-app/files/src/api/dataArchive/index.js +186 -186
  49. package/templates/vue-app/files/src/api/generator/genConfig.js +16 -16
  50. package/templates/vue-app/files/src/api/generator/generator.js +32 -32
  51. package/templates/vue-app/files/src/api/indexManagement/index.js +39 -39
  52. package/templates/vue-app/files/src/api/institutionMonitor/index.js +396 -396
  53. package/templates/vue-app/files/src/api/institutionSet/index.js +120 -120
  54. package/templates/vue-app/files/src/api/login.js +44 -44
  55. package/templates/vue-app/files/src/api/selfStatistics/index.js +50 -50
  56. package/templates/vue-app/files/src/api/system/code.js +15 -15
  57. package/templates/vue-app/files/src/api/system/dict.js +34 -34
  58. package/templates/vue-app/files/src/api/system/dictDetail.js +52 -52
  59. package/templates/vue-app/files/src/api/system/equipment.js +35 -35
  60. package/templates/vue-app/files/src/api/system/examManage.js +49 -49
  61. package/templates/vue-app/files/src/api/system/examProject.js +48 -48
  62. package/templates/vue-app/files/src/api/system/hosModel.js +35 -35
  63. package/templates/vue-app/files/src/api/system/hospital.js +88 -88
  64. package/templates/vue-app/files/src/api/system/job.js +40 -40
  65. package/templates/vue-app/files/src/api/system/menu.js +67 -67
  66. package/templates/vue-app/files/src/api/system/model.js +42 -42
  67. package/templates/vue-app/files/src/api/system/risConfig.js +9 -9
  68. package/templates/vue-app/files/src/api/system/role.js +64 -64
  69. package/templates/vue-app/files/src/api/system/sysSet.js +19 -19
  70. package/templates/vue-app/files/src/api/system/timing.js +41 -41
  71. package/templates/vue-app/files/src/api/system/user.js +121 -121
  72. package/templates/vue-app/files/src/api/tools/alipay.js +25 -25
  73. package/templates/vue-app/files/src/api/tools/email.js +24 -24
  74. package/templates/vue-app/files/src/api/tools/localStorage.js +27 -27
  75. package/templates/vue-app/files/src/api/tools/qiniu.js +40 -40
  76. package/templates/vue-app/files/src/assets/css/font-awesome.css +2342 -2342
  77. package/templates/vue-app/files/src/assets/css/font-awesome.min.css +2336 -2336
  78. package/templates/vue-app/files/src/assets/fonts/fontawesome-webfont.svg +2671 -2671
  79. package/templates/vue-app/files/src/assets/icons/index.js +9 -9
  80. package/templates/vue-app/files/src/assets/icons/svg/hospital.svg +1 -1
  81. package/templates/vue-app/files/src/assets/icons/svg/hospital1.svg +1 -1
  82. package/templates/vue-app/files/src/assets/icons/svg/loginOne.svg +35 -35
  83. package/templates/vue-app/files/src/assets/icons/svg/loginOneWhite.svg +19 -19
  84. package/templates/vue-app/files/src/assets/icons/svg/loginOr.svg +93 -93
  85. package/templates/vue-app/files/src/assets/icons/svg/loginUp.svg +96 -96
  86. package/templates/vue-app/files/src/assets/icons/svg/monitor.svg +1 -1
  87. package/templates/vue-app/files/src/assets/icons/svg/offline.svg +1 -1
  88. package/templates/vue-app/files/src/assets/icons/svg/online.svg +1 -1
  89. package/templates/vue-app/files/src/assets/icons/svg/system.svg +1 -1
  90. package/templates/vue-app/files/src/assets/icons/svgo.yml +21 -21
  91. package/templates/vue-app/files/src/assets/styles/btn.scss +103 -103
  92. package/templates/vue-app/files/src/assets/styles/eladmin.scss +124 -124
  93. package/templates/vue-app/files/src/assets/styles/element-ui.scss +217 -217
  94. package/templates/vue-app/files/src/assets/styles/element-variables.scss +31 -31
  95. package/templates/vue-app/files/src/assets/styles/global.scss +73 -73
  96. package/templates/vue-app/files/src/assets/styles/index.scss +220 -220
  97. package/templates/vue-app/files/src/assets/styles/mixin.scss +60 -60
  98. package/templates/vue-app/files/src/assets/styles/publicStyle.scss +224 -224
  99. package/templates/vue-app/files/src/assets/styles/sidebar.scss +239 -239
  100. package/templates/vue-app/files/src/assets/styles/transition.scss +48 -48
  101. package/templates/vue-app/files/src/assets/styles/variables.scss +44 -44
  102. package/templates/vue-app/files/src/common/flexible.js +145 -145
  103. package/templates/vue-app/files/src/components/Breadcrumb/index.vue +87 -87
  104. package/templates/vue-app/files/src/components/Crud/CRUD.operation.vue +248 -248
  105. package/templates/vue-app/files/src/components/Crud/Pagination.vue +20 -20
  106. package/templates/vue-app/files/src/components/Crud/RR.operation.vue +39 -39
  107. package/templates/vue-app/files/src/components/Crud/UD.operation.vue +106 -106
  108. package/templates/vue-app/files/src/components/Crud/crud.js +907 -907
  109. package/templates/vue-app/files/src/components/Crud/user/UR.operation.vue +154 -154
  110. package/templates/vue-app/files/src/components/DateRangePicker/index.vue +42 -42
  111. package/templates/vue-app/files/src/components/DateRangePickerProhibitNext/index.vue +42 -42
  112. package/templates/vue-app/files/src/components/DateRangePickerProhibitTodayNext/index.vue +48 -48
  113. package/templates/vue-app/files/src/components/Dict/Dict.js +31 -31
  114. package/templates/vue-app/files/src/components/Dict/index.js +29 -29
  115. package/templates/vue-app/files/src/components/Doc/index.vue +16 -16
  116. package/templates/vue-app/files/src/components/Echarts/BarChart.vue +115 -115
  117. package/templates/vue-app/files/src/components/Echarts/Category.vue +768 -768
  118. package/templates/vue-app/files/src/components/Echarts/Funnel.vue +120 -120
  119. package/templates/vue-app/files/src/components/Echarts/Gauge.vue +74 -74
  120. package/templates/vue-app/files/src/components/Echarts/Graph.vue +101 -101
  121. package/templates/vue-app/files/src/components/Echarts/HeatMap.vue +301 -301
  122. package/templates/vue-app/files/src/components/Echarts/Line3D.vue +110 -110
  123. package/templates/vue-app/files/src/components/Echarts/PieChart.vue +84 -84
  124. package/templates/vue-app/files/src/components/Echarts/Point.vue +161 -161
  125. package/templates/vue-app/files/src/components/Echarts/RadarChart.vue +123 -123
  126. package/templates/vue-app/files/src/components/Echarts/Rich.vue +160 -160
  127. package/templates/vue-app/files/src/components/Echarts/Sankey.vue +114 -114
  128. package/templates/vue-app/files/src/components/Echarts/Scatter.vue +192 -192
  129. package/templates/vue-app/files/src/components/Echarts/Sunburst.vue +127 -127
  130. package/templates/vue-app/files/src/components/Echarts/ThemeRiver.vue +233 -233
  131. package/templates/vue-app/files/src/components/Echarts/WordCloud.vue +201 -201
  132. package/templates/vue-app/files/src/components/GithubCorner/index.vue +55 -55
  133. package/templates/vue-app/files/src/components/Hamburger/index.vue +44 -44
  134. package/templates/vue-app/files/src/components/HeaderSearch/index.vue +196 -196
  135. package/templates/vue-app/files/src/components/IconSelect/index.vue +74 -74
  136. package/templates/vue-app/files/src/components/IconSelect/requireIcons.js +10 -10
  137. package/templates/vue-app/files/src/components/Iframe/index.vue +30 -30
  138. package/templates/vue-app/files/src/components/JavaEdit/index.vue +78 -78
  139. package/templates/vue-app/files/src/components/Pagination/index.vue +100 -100
  140. package/templates/vue-app/files/src/components/PanThumb/index.vue +149 -149
  141. package/templates/vue-app/files/src/components/ParentView/index.vue +3 -3
  142. package/templates/vue-app/files/src/components/Permission/index.js +13 -13
  143. package/templates/vue-app/files/src/components/Permission/permission.js +21 -21
  144. package/templates/vue-app/files/src/components/RightPanel/index.vue +149 -149
  145. package/templates/vue-app/files/src/components/Screenfull/index.vue +60 -60
  146. package/templates/vue-app/files/src/components/SizeSelect/index.vue +60 -60
  147. package/templates/vue-app/files/src/components/SvgIcon/index.vue +66 -66
  148. package/templates/vue-app/files/src/components/ThemePicker/index.vue +177 -177
  149. package/templates/vue-app/files/src/components/UploadExcel/index.vue +149 -149
  150. package/templates/vue-app/files/src/components/WaterMark/setWaterMark.js +68 -68
  151. package/templates/vue-app/files/src/components/WaterMark/waterMark.vue +69 -69
  152. package/templates/vue-app/files/src/components/Xgplayer/index.vue +49 -49
  153. package/templates/vue-app/files/src/components/YamlEdit/index.vue +81 -81
  154. package/templates/vue-app/files/src/layout/components/AppMain.vue +67 -67
  155. package/templates/vue-app/files/src/layout/components/Navbar.vue +209 -209
  156. package/templates/vue-app/files/src/layout/components/Settings/index.vue +125 -125
  157. package/templates/vue-app/files/src/layout/components/Sidebar/FixiOSBug.js +26 -26
  158. package/templates/vue-app/files/src/layout/components/Sidebar/Item.vue +29 -29
  159. package/templates/vue-app/files/src/layout/components/Sidebar/Link.vue +35 -35
  160. package/templates/vue-app/files/src/layout/components/Sidebar/Logo.vue +93 -93
  161. package/templates/vue-app/files/src/layout/components/Sidebar/SidebarItem.vue +104 -104
  162. package/templates/vue-app/files/src/layout/components/Sidebar/index.vue +79 -79
  163. package/templates/vue-app/files/src/layout/components/TagsView/ScrollPane.vue +90 -90
  164. package/templates/vue-app/files/src/layout/components/TagsView/index.vue +299 -299
  165. package/templates/vue-app/files/src/layout/components/index.js +5 -5
  166. package/templates/vue-app/files/src/layout/index.vue +119 -119
  167. package/templates/vue-app/files/src/layout/mixin/ResizeHandler.js +45 -45
  168. package/templates/vue-app/files/src/main.js +89 -89
  169. package/templates/vue-app/files/src/mixins/crud.js +348 -348
  170. package/templates/vue-app/files/src/router/index.js +156 -156
  171. package/templates/vue-app/files/src/router/routers.js +203 -203
  172. package/templates/vue-app/files/src/settings.js +57 -57
  173. package/templates/vue-app/files/src/store/getters.js +29 -29
  174. package/templates/vue-app/files/src/store/index.js +25 -25
  175. package/templates/vue-app/files/src/store/modules/api.js +33 -33
  176. package/templates/vue-app/files/src/store/modules/app.js +55 -55
  177. package/templates/vue-app/files/src/store/modules/permission.js +79 -79
  178. package/templates/vue-app/files/src/store/modules/register.js +17 -17
  179. package/templates/vue-app/files/src/store/modules/settings.js +46 -46
  180. package/templates/vue-app/files/src/store/modules/tagsView.js +168 -168
  181. package/templates/vue-app/files/src/store/modules/user.js +119 -119
  182. package/templates/vue-app/files/src/utils/auth.js +18 -18
  183. package/templates/vue-app/files/src/utils/base64ToFile.js +27 -27
  184. package/templates/vue-app/files/src/utils/clipboard.js +36 -36
  185. package/templates/vue-app/files/src/utils/datetime.js +289 -289
  186. package/templates/vue-app/files/src/utils/getBlobFile.js +10 -10
  187. package/templates/vue-app/files/src/utils/getTime.js +29 -29
  188. package/templates/vue-app/files/src/utils/index.js +520 -520
  189. package/templates/vue-app/files/src/utils/permission.js +29 -29
  190. package/templates/vue-app/files/src/utils/pinyin.js +450 -450
  191. package/templates/vue-app/files/src/utils/request.js +139 -139
  192. package/templates/vue-app/files/src/utils/rsaEncrypt.js +37 -37
  193. package/templates/vue-app/files/src/utils/shortcuts.js +210 -210
  194. package/templates/vue-app/files/src/utils/upload.js +12 -12
  195. package/templates/vue-app/files/src/utils/validate.js +262 -262
  196. package/templates/vue-app/files/src/views/components/Echarts.vue +124 -124
  197. package/templates/vue-app/files/src/views/components/Editor.vue +75 -75
  198. package/templates/vue-app/files/src/views/components/MarkDown.vue +44 -44
  199. package/templates/vue-app/files/src/views/components/UVideo.vue +37 -37
  200. package/templates/vue-app/files/src/views/components/YamlEdit.vue +206 -206
  201. package/templates/vue-app/files/src/views/components/camera/camera.vue +115 -115
  202. package/templates/vue-app/files/src/views/components/camera/cameraTest.vue +158 -158
  203. package/templates/vue-app/files/src/views/components/excel/upload-excel.vue +41 -41
  204. package/templates/vue-app/files/src/views/components/icons/element-icons.js +74 -74
  205. package/templates/vue-app/files/src/views/components/icons/index.vue +106 -106
  206. package/templates/vue-app/files/src/views/components/icons/svg-icons.js +10 -10
  207. package/templates/vue-app/files/src/views/components/scroll/index.vue +107 -107
  208. package/templates/vue-app/files/src/views/components/scrollFull/index.vue +99 -99
  209. package/templates/vue-app/files/src/views/dashboard/LineChart.vue +138 -138
  210. package/templates/vue-app/files/src/views/dashboard/PanelGroup.vue +173 -173
  211. package/templates/vue-app/files/src/views/dashboard/mixins/resize.js +57 -57
  212. package/templates/vue-app/files/src/views/dataArchive/delTable.vue +354 -354
  213. package/templates/vue-app/files/src/views/dataArchive/exportDetail.vue +121 -121
  214. package/templates/vue-app/files/src/views/dataArchive/exportList.vue +160 -160
  215. package/templates/vue-app/files/src/views/dataArchive/index.vue +2104 -2104
  216. package/templates/vue-app/files/src/views/features/401.vue +83 -83
  217. package/templates/vue-app/files/src/views/features/404.vue +226 -226
  218. package/templates/vue-app/files/src/views/features/redirect.vue +12 -12
  219. package/templates/vue-app/files/src/views/generator/config.vue +348 -348
  220. package/templates/vue-app/files/src/views/generator/index.vue +143 -143
  221. package/templates/vue-app/files/src/views/generator/preview.vue +39 -39
  222. package/templates/vue-app/files/src/views/home.vue +80 -80
  223. package/templates/vue-app/files/src/views/indexManagement/index.vue +422 -422
  224. package/templates/vue-app/files/src/views/indexManagement/other.vue +286 -286
  225. package/templates/vue-app/files/src/views/institutionMonitor/components/LineChart.vue +191 -191
  226. package/templates/vue-app/files/src/views/institutionMonitor/index.scss +339 -339
  227. package/templates/vue-app/files/src/views/institutionMonitor/index.vue +1385 -1385
  228. package/templates/vue-app/files/src/views/institutionMonitor/mixins/resize.js +57 -57
  229. package/templates/vue-app/files/src/views/institutionMonitor/monitorDetail/checkProjectCode.vue +267 -267
  230. package/templates/vue-app/files/src/views/institutionMonitor/monitorDetail/imageAbnormalMonitor.vue +361 -361
  231. package/templates/vue-app/files/src/views/institutionMonitor/monitorDetail/index.vue +686 -686
  232. package/templates/vue-app/files/src/views/institutionMonitor/monitorDetail/leakageAnomaly.vue +270 -270
  233. package/templates/vue-app/files/src/views/institutionMonitor/monitorDetail/moveMonitore.vue +114 -114
  234. package/templates/vue-app/files/src/views/institutionMonitor/monitorDetail/qualityMonitore.vue +338 -338
  235. package/templates/vue-app/files/src/views/institutionSet/cloudSet.vue +534 -534
  236. package/templates/vue-app/files/src/views/institutionSet/index.vue +2550 -2550
  237. package/templates/vue-app/files/src/views/login.vue +243 -243
  238. package/templates/vue-app/files/src/views/qualityLogin.vue +280 -280
  239. package/templates/vue-app/files/src/views/selfStatistics/components/LineChart.vue +296 -296
  240. package/templates/vue-app/files/src/views/selfStatistics/hospitalDetail/index.vue +533 -533
  241. package/templates/vue-app/files/src/views/selfStatistics/index.scss +447 -447
  242. package/templates/vue-app/files/src/views/selfStatistics/index.vue +903 -903
  243. package/templates/vue-app/files/src/views/selfStatistics/mixins/resize.js +57 -57
  244. package/templates/vue-app/files/src/views/selfStatistics/monitorDetail/index.vue +285 -285
  245. package/templates/vue-app/files/src/views/selfStatistics/offlineDetail/index.vue +104 -104
  246. package/templates/vue-app/files/src/views/selfStatistics/selfActiveDetail/index.vue +104 -104
  247. package/templates/vue-app/files/src/views/selfStatistics/selfMonitorDetail/index.vue +420 -420
  248. package/templates/vue-app/files/src/views/selfStatistics/setWaterMark/setWaterMark.js +68 -68
  249. package/templates/vue-app/files/src/views/selfStatistics/setWaterMark/waterMark.vue +69 -69
  250. package/templates/vue-app/files/src/views/system/dept/index.vue +144 -144
  251. package/templates/vue-app/files/src/views/system/dict/dictDetail.vue +146 -146
  252. package/templates/vue-app/files/src/views/system/dict/index.vue +159 -159
  253. package/templates/vue-app/files/src/views/system/examModality/index.vue +174 -174
  254. package/templates/vue-app/files/src/views/system/examPart/index.vue +184 -184
  255. package/templates/vue-app/files/src/views/system/examProject/index.vue +321 -321
  256. package/templates/vue-app/files/src/views/system/examine/index.vue +66 -66
  257. package/templates/vue-app/files/src/views/system/job/index.vue +119 -119
  258. package/templates/vue-app/files/src/views/system/job/module/form.vue +72 -72
  259. package/templates/vue-app/files/src/views/system/job/module/header.vue +48 -48
  260. package/templates/vue-app/files/src/views/system/menu/index.vue +327 -327
  261. package/templates/vue-app/files/src/views/system/model/index.vue +285 -285
  262. package/templates/vue-app/files/src/views/system/role/index.vue +434 -434
  263. package/templates/vue-app/files/src/views/system/sysSet/index.vue +84 -84
  264. package/templates/vue-app/files/src/views/system/timing/index.vue +289 -289
  265. package/templates/vue-app/files/src/views/system/timing/log.vue +143 -143
  266. package/templates/vue-app/files/src/views/system/user/admin.vue +414 -414
  267. package/templates/vue-app/files/src/views/system/user/center/updateEmail.vue +146 -146
  268. package/templates/vue-app/files/src/views/system/user/center/updatePass.vue +168 -168
  269. package/templates/vue-app/files/src/views/system/user/center.vue +140 -140
  270. package/templates/vue-app/files/src/views/system/user/index.vue +972 -972
  271. package/templates/vue-app/files/src/views/systemSet/role/index.vue +314 -314
  272. package/templates/vue-app/files/src/views/systemSet/user/admin.vue +414 -414
  273. package/templates/vue-app/files/src/views/systemSet/user/center/updateEmail.vue +146 -146
  274. package/templates/vue-app/files/src/views/systemSet/user/center/updatePass.vue +115 -115
  275. package/templates/vue-app/files/src/views/systemSet/user/center.vue +351 -351
  276. package/templates/vue-app/files/src/views/systemSet/user/index.vue +928 -928
  277. package/templates/vue-app/files/src/views/tools/aliPay/config.vue +102 -102
  278. package/templates/vue-app/files/src/views/tools/aliPay/index.vue +48 -48
  279. package/templates/vue-app/files/src/views/tools/aliPay/toPay.vue +91 -91
  280. package/templates/vue-app/files/src/views/tools/email/config.vue +91 -91
  281. package/templates/vue-app/files/src/views/tools/email/index.vue +42 -42
  282. package/templates/vue-app/files/src/views/tools/email/send.vue +159 -159
  283. package/templates/vue-app/files/src/views/tools/storage/index.vue +35 -35
  284. package/templates/vue-app/files/src/views/tools/storage/local/index.vue +207 -207
  285. package/templates/vue-app/files/src/views/tools/storage/qiniu/form.vue +108 -108
  286. package/templates/vue-app/files/src/views/tools/storage/qiniu/index.vue +241 -241
  287. package/templates/vue-app/files/src/views/tools/swagger/index.vue +14 -14
  288. package/templates/vue-app/files/vue.config.js +173 -173
  289. package/templates/vue-app/template.json +29 -29
package/README.md CHANGED
@@ -1,276 +1,313 @@
1
- # YLYX CLI - 项目脚手架工具
2
-
3
- 公司内部使用的项目脚手架工具:支持交互式/命令式生成项目与代码模板,并提供 `.ylyxrc.json` 项目配置、环境配置切换(`isDev`)、以及一键部署(测试服上传/正式服打包压缩)等能力。
4
-
5
- > 说明:当前部署/配置切换能力**暂时只针对 Vue2 项目约定**(如 `.env.production` `VUE_APP_PUBLIC_URL` 等)。其它技术栈/项目结构可能需要你根据实际情况调整 `.ylyxrc.json` 与相关路径配置。
6
-
7
- ## 功能特性
8
-
9
- - 🚀 **快速生成项目代码**:内置多种模板,一键生成项目/组件/模块代码
10
- - 📦 **模板化管理**:模板目录结构清晰,易维护、易扩展;支持本地模板添加
11
- - ☁️ **云端模板**:支持从 GitHub/GitLab 仓库安装模板(含私有仓库 SSH 场景)
12
- - 📝 **交互式命令行**:`create` 支持交互式收集变量,降低使用门槛
13
- - ⚙️ **项目配置(.ylyxrc.json)**:集中管理模板目录、输出目录、构建目录等配置
14
- - 🔁 **环境配置切换(isDev)**:提供 `ylyx config dev|prod`,自动同步/复制 `default.js`
15
- - 🧰 **初始化配置(init config)**:自动生成 `.ylyxrc.json`、`config/default-*.js`,并可写入 npm 前/后置脚本
16
- - 🚚 **部署(deploy)**:支持测试服(SFTP 上传,带上传进度)与正式服(仅压缩)两种模式,压缩包命名/顶层目录规则与 `buildDir` 对齐
17
-
18
- ## 安装
19
-
20
- ### 全局安装
21
-
22
- ```bash
23
- npm install -g ylyx-cli
24
- ```
25
-
26
- ### 使用 npx(推荐,无需安装)
27
-
28
- ```bash
29
- # 使用 npx 直接运行
30
- npx ylyx-cli create
31
-
32
- # 生成项目
33
- npx ylyx-cli generate react-app -n my-project -o ./my-project
34
-
35
- # 安装远程模板
36
- npx ylyx-cli install owner/repo
37
- ```
38
-
39
- ### 本地开发
40
-
41
- ```bash
42
- git clone <repository>
43
- cd ylyx-cli
44
- npm install
45
- npm link # 链接到全局,可以本地测试
46
- ```
47
-
48
- ## 使用方法
49
-
50
- ### 快速开始
51
-
52
- 使用交互式方式创建新项目(推荐):
53
-
54
- ```bash
55
- ylyx create
56
- ```
57
-
58
- 或者直接指定模板和项目名:
59
-
60
- ```bash
61
- # 创建一个 React 项目
62
- ylyx generate react-app -n my-project -o ./my-project
63
- ```
64
-
65
- ### 查看可用模板
66
-
67
- ```bash
68
- ylyx list
69
- ```
70
-
71
- ### 安装远程模板
72
-
73
- 从 GitHub/GitLab 安装模板:
74
-
75
- ```bash
76
- # 使用简写格式(GitHub)
77
- ylyx install owner/repo
78
-
79
- # 使用完整 URL
80
- ylyx install https://github.com/owner/repo
81
-
82
- # 指定分支和模板名
83
- ylyx install owner/repo -b develop -n my-template
84
- ```
85
-
86
- ### 添加本地模板
87
-
88
- ```bash
89
- ylyx add template-name /path/to/template
90
- ```
91
-
92
- ### 查看模板详情
93
-
94
- ```bash
95
- ylyx info template-name
96
- ```
97
-
98
- ### 写入配置(mode
99
-
100
- 将当前目录的 `.ylyxrc.json` 写入/更新 `mode`(仅支持 `dev` / `prod`):
101
-
102
- ```bash
103
- ylyx config --mode dev
104
- #
105
- ylyx config prod
106
- ```
107
-
108
- ### 初始化配置(init config)
109
-
110
- 初始化当前目录的配置文件与默认配置模板(会生成/补齐 `.ylyxrc.json`,并创建 `config/default-dev.js`、`config/default-prod.js` 等;默认不覆盖已有文件):
111
-
112
- ```bash
113
- ylyx init config
114
-
115
- # 指定初始模式
116
- ylyx init config --mode prod
117
-
118
- # 强制覆盖已存在文件
119
- ylyx init config --force
120
- ```
121
-
122
- `init config` 还会尝试在当前目录的 `package.json` 中写入 npm 前置脚本(可在 `.ylyxrc.json` `preScripts` 配置脚本名):
123
-
124
- - 默认会写入 `predev` 和 `postbuild:prod`
125
- - 执行 `npm run dev` 前,会自动先执行 `ylyx config dev`(dev 使用 symlink 实时同步)
126
- - 执行 `npm run build:prod` 后,会自动执行 `ylyx config prod && ylyx deploy`(将 `default-prod.js` 复制到打包输出目录,并执行部署)
127
-
128
- prod 输出目录规则:
129
-
130
- - 优先使用 `.ylyxrc.json` 的 `buildDir`
131
- - 否则读取当前项目 `.env.production` 的 `VUE_APP_PUBLIC_URL`,默认写入 `<VUE_APP_PUBLIC_URL>/default.js`(会去掉首尾 `/`)
132
-
133
- ## deploy(部署)
134
-
135
- `deploy` 会读取当前项目目录的 `.ylyxrc.json` 的 `deploy` 字段。
136
-
137
- ### 配置示例(.ylyxrc.json)
138
-
139
- ```json
140
- {
141
- "mode": "dev",
142
- "buildDir": "dist/app",
143
- "deploy": {
144
- "env": "test",
145
- "host": "172.17.28.216",
146
- "port": "22",
147
- "username": "root",
148
- "password": "你的密码",
149
- "localDir": "./EXTERNAL_DIGIC",
150
- "remoteDir": "/usr/local/nginx/html/EXTERNAL_DIGIC",
151
- "zipAfter": false,
152
- "zipOutDir": "./.ylyx-deploy"
153
- }
154
- }
155
- ```
156
-
157
- ### 行为
158
-
159
- - 测试服:SFTP 递归上传到服务器(带上传进度)
160
- - 正式服:不上传,仅压缩
161
-
162
- 压缩产物命名规则(正式服或 `--zip`):`buildDir(最后一级)-YYYYMMDDHHmmss-哈希(纯字母).zip`,且 zip 内顶层目录名为 `buildDir` 的最后一级目录名。
163
-
164
- `localDir` 默认推导优先级:`deploy.localDir` → `.env.production` 的 `VUE_APP_PUBLIC_URL` → `.ylyxrc.json` 的 `buildDir`。
165
-
166
- ### 上传日志
167
-
168
- 每次执行 `deploy` 会在本地生成一份日志,默认在 `./.ylyx-deploy/logs/`,包含上传/压缩过程与错误信息,便于追溯。
169
-
170
- ### 命令
171
-
172
- ```bash
173
- ylyx deploy
174
- ylyx deploy --env test
175
- ylyx deploy --env prod
176
- ```
177
-
178
- ## 云端模板
179
-
180
- 模板可以放在 Git 仓库中(如 GitHub、GitLab),使用 `ylyx install` 命令安装。
181
-
182
- ### 模板仓库要求
183
-
184
- 模板仓库需要包含以下结构:
185
-
186
- ```
187
- your-template/
188
- template.json # 模板配置文件(可选)
189
- files/ # 模板文件目录
190
- ...
191
- ```
192
-
193
- ### 示例
194
-
195
- ```bash
196
- # GitHub 安装模板
197
- ylyx install github-user/react-template
198
-
199
- # 从私有仓库安装(需要配置 SSH 密钥)
200
- ylyx install git@github.com:company/templates.git
201
-
202
- # 指定分支
203
- ylyx install owner/repo -b v2.0
204
- ```
205
-
206
- ## 模板配置
207
-
208
- 模板应放在 `templates/` 目录下,结构如下:
209
-
210
- ```
211
- templates/
212
- template-name/
213
- template.json # 模板配置文件
214
- files/ # 模板文件目录
215
- example.js
216
- example.css
217
- ```
218
-
219
- ### template.json 配置示例
220
-
221
- ```json
222
- {
223
- "name": "template-name",
224
- "description": "模板描述",
225
- "version": "1.0.0",
226
- "variables": {
227
- "projectName": {
228
- "type": "input",
229
- "message": "请输入项目名称",
230
- "default": "my-project"
231
- }
232
- },
233
- "processFiles": ["package.json", "README.md", "*.json"],
234
- "skipFiles": ["**/*.vue", "**/*.js"]
235
- }
236
- ```
237
-
238
- ## 配置文件
239
-
240
- 可以在项目根目录创建 `.ylyxrc.json` 配置文件:
241
-
242
- ```json
243
- {
244
- "mode": "dev",
245
- "publicDir": "./public",
246
- "configDir": "./config",
247
- "preScripts": {
248
- "dev": "dev",
249
- "prod": "build:prod"
250
- },
251
- "templatesDir": "./templates",
252
- "outputDir": "./src",
253
- "defaultVariables": {
254
- "author": "Your Name",
255
- "company": "YLYX"
256
- }
257
- }
258
- ```
259
-
260
- ## 示例
261
-
262
- ### 生成完整项目
263
-
264
- ```bash
265
- # 生成 React 项目
266
- ylyx generate react-app -n my-react-app -o ./my-react-app
267
-
268
- # 生成后进入目录并安装依赖
269
- cd my-react-app
270
- npm install
271
- npm start
272
- ```
273
-
274
- ## License
275
-
276
- ISC
1
+ # YLYX CLI - 项目脚手架工具
2
+
3
+ 公司内部使用的项目脚手架工具:支持交互式/命令式生成项目与代码模板,并提供 `.ylyxrc.json` 项目配置、支持任意数量的自定义环境切换(dev/test/staging/prod...),以及一键部署(SFTP 上传/仅压缩)等能力。
4
+
5
+ > 说明:每个环境需要在 `.ylyxrc.json` 中显式配置 `buildDir` 等路径信息(不再从 `.env.production` 自动推导)。
6
+
7
+ ## 功能特性
8
+
9
+ - 🚀 **快速生成项目代码**:内置多种模板,一键生成项目/组件/模块代码
10
+ - 📦 **模板化管理**:模板目录结构清晰,易维护、易扩展;支持本地模板添加
11
+ - ☁️ **云端模板**:支持从 GitHub/GitLab 仓库安装模板(含私有仓库 SSH 场景)
12
+ - 📝 **交互式命令行**:`create` 支持交互式收集变量,降低使用门槛
13
+ - ⚙️ **项目配置(.ylyxrc.json)**:集中管理模板目录、输出目录、构建目录等配置
14
+ - 🔁 **多环境配置切换**:`.ylyxrc.json` `environments` 支持任意数量的自定义环境(dev/test/staging/prod...),`ylyx config <name>` 一键切换
15
+ - 🧰 **初始化配置(init config)**:自动生成 `.ylyxrc.json`、`config/default-*.js`,并可写入 npm 前/后置脚本
16
+ - 🚚 **部署(deploy)**:按环境 `deployMethod` 决定上传(SFTP,带上传进度)或仅压缩,压缩包命名/顶层目录规则与该环境 `buildDir` 对齐
17
+
18
+ ## 安装
19
+
20
+ ### 全局安装
21
+
22
+ ```bash
23
+ npm install -g ylyx-cli
24
+ ```
25
+
26
+ ### 使用 npx(推荐,无需安装)
27
+
28
+ ```bash
29
+ # 使用 npx 直接运行
30
+ npx ylyx-cli create
31
+
32
+ # 生成项目
33
+ npx ylyx-cli generate react-app -n my-project -o ./my-project
34
+
35
+ # 安装远程模板
36
+ npx ylyx-cli install owner/repo
37
+ ```
38
+
39
+ ### 本地开发
40
+
41
+ ```bash
42
+ git clone <repository>
43
+ cd ylyx-cli
44
+ npm install
45
+ npm link # 链接到全局,可以本地测试
46
+ ```
47
+
48
+ ## 使用方法
49
+
50
+ ### 快速开始
51
+
52
+ 使用交互式方式创建新项目(推荐):
53
+
54
+ ```bash
55
+ ylyx create
56
+ ```
57
+
58
+ 或者直接指定模板和项目名:
59
+
60
+ ```bash
61
+ # 创建一个 React 项目
62
+ ylyx generate react-app -n my-project -o ./my-project
63
+ ```
64
+
65
+ ### 查看可用模板
66
+
67
+ ```bash
68
+ ylyx list
69
+ ```
70
+
71
+ ### 安装远程模板
72
+
73
+ 从 GitHub/GitLab 安装模板:
74
+
75
+ ```bash
76
+ # 使用简写格式(GitHub)
77
+ ylyx install owner/repo
78
+
79
+ # 使用完整 URL
80
+ ylyx install https://github.com/owner/repo
81
+
82
+ # 指定分支和模板名
83
+ ylyx install owner/repo -b develop -n my-template
84
+ ```
85
+
86
+ ### 添加本地模板
87
+
88
+ ```bash
89
+ ylyx add template-name /path/to/template
90
+ ```
91
+
92
+ ### 查看模板详情
93
+
94
+ ```bash
95
+ ylyx info template-name
96
+ ```
97
+
98
+ ### 切换环境(config
99
+
100
+ 将当前目录的 `.ylyxrc.json` 切换到指定环境(环境名来自 `.ylyxrc.json` `environments` 数组,可以是任意自定义名字):
101
+
102
+ ```bash
103
+ ylyx config dev
104
+ ylyx config prod
105
+ ylyx config staging
106
+ ```
107
+
108
+ 不传参数时进入交互式选择(按本地/部署环境分组,当前环境标注"(当前)",默认光标停在当前环境):
109
+
110
+ ```bash
111
+ ylyx config
112
+ ```
113
+
114
+ 若 `.ylyxrc.json` 是旧版格式(没有 `configVersion`),命令会报错并提示先运行:
115
+
116
+ ```bash
117
+ ylyx migrate config
118
+ ```
119
+
120
+ ### 初始化配置(init config)
121
+
122
+ 初始化当前目录的配置文件与默认配置模板(会生成/补齐 `.ylyxrc.json`,并为每个环境创建 `config/default-<name>.js`;默认不覆盖已有文件):
123
+
124
+ ```bash
125
+ ylyx init config
126
+
127
+ # 指定初始 currentEnv
128
+ ylyx init config --env prod
129
+
130
+ # 强制覆盖已存在文件
131
+ ylyx init config --force
132
+ ```
133
+
134
+ 新项目默认生成两个环境:`dev`(本地开发,`isLocal:true`)和 `prod`(`deployMethod:'zip'`,`buildDir:'dist/app'`)。如果需要 `test`/`staging` 等更多环境,在 `.ylyxrc.json` 的 `environments` 数组里手动追加后,重新运行 `ylyx init config --force` 补写对应的 `config/default-<name>.js` 和 npm 钩子。
135
+
136
+ `init config` 会根据每个环境的 `npmScript` 字段,在当前目录的 `package.json` 中写入 npm 钩子:
137
+
138
+ - `isLocal: true` 的环境(如 dev)→ 写入 `pre<npmScript>: "ylyx config <name>"`
139
+ - 其他环境(如 prod)→ 写入 `post<npmScript>`,若该环境 `deployMethod` 不是 `none`,值为 `"ylyx config <name> && ylyx deploy --env <name>"`,否则只是 `"ylyx config <name>"`
140
+
141
+ 每个环境的构建输出目录由该环境条目的 `buildDir` 字段决定,需要显式配置。
142
+
143
+ ## deploy(部署)
144
+
145
+ `deploy` 会读取当前项目目录的 `.ylyxrc.json` 的 `environments` 数组,按 `--env <name>` 指定的环境读取对应字段。
146
+
147
+ ### 配置示例(.ylyxrc.json)
148
+
149
+ ```json
150
+ {
151
+ "configVersion": 2,
152
+ "publicDir": "./public",
153
+ "configDir": "./config",
154
+ "currentEnv": "dev",
155
+ "environments": [
156
+ { "name": "dev", "isLocal": true, "npmScript": "dev", "deployMethod": "none" },
157
+ {
158
+ "name": "test",
159
+ "npmScript": "build:test",
160
+ "deployMethod": "upload",
161
+ "buildDir": "dist/test",
162
+ "host": "172.17.28.216",
163
+ "port": "22",
164
+ "username": "root",
165
+ "password": "你的密码",
166
+ "localDir": "./dist/test",
167
+ "remoteDir": "/usr/local/nginx/html/TEST_APP",
168
+ "zipAfter": false
169
+ },
170
+ {
171
+ "name": "prod",
172
+ "npmScript": "build:prod",
173
+ "deployMethod": "zip",
174
+ "buildDir": "dist/app",
175
+ "zipOutDir": "./.ylyx-deploy"
176
+ }
177
+ ]
178
+ }
179
+ ```
180
+
181
+ ### 行为
182
+
183
+ - `deployMethod: 'upload'` 的环境:SFTP 递归上传到服务器(带上传进度)
184
+ - `deployMethod: 'zip'` 的环境:不上传,仅压缩
185
+ - `deployMethod: 'none'` 的环境:不可部署
186
+
187
+ 压缩产物命名规则:`buildDir(最后一级)-YYYYMMDDHHmmss-哈希(纯字母).zip`,且 zip 内顶层目录名为 `buildDir` 的最后一级目录名。
188
+
189
+ `localDir` 缺省时使用该环境的 `buildDir`;不再支持从 `.env.production` 自动推导,需要显式配置。
190
+
191
+ ### 从旧版配置迁移
192
+
193
+ 如果 `.ylyxrc.json` 还是旧格式(`mode`/`deploy`/顶层 `buildDir`),运行:
194
+
195
+ ```bash
196
+ ylyx migrate config
197
+ ```
198
+
199
+ 会自动生成 `dev`(本地开发)、`test`(SFTP 上传)、`prod`(仅压缩)三个环境,并删除旧的 `mode`/`deploy`/`buildDir`/`preScripts` 字段。迁移后请检查 `test`/`prod` 环境里的 `host`/`username`/`password` 等敏感信息,并按需运行 `ylyx init config --force` 补写 `package.json` 的部署钩子。
200
+
201
+ ### 上传日志
202
+
203
+ 每次执行 `deploy` 会在本地生成一份日志,默认在 `./.ylyx-deploy/logs/`,包含上传/压缩过程与错误信息,便于追溯。
204
+
205
+ ### 命令
206
+
207
+ ```bash
208
+ ylyx deploy
209
+ ylyx deploy --env test
210
+ ylyx deploy --env prod
211
+ ylyx deploy --env staging
212
+ ```
213
+
214
+ ## 云端模板
215
+
216
+ 模板可以放在 Git 仓库中(如 GitHub、GitLab),使用 `ylyx install` 命令安装。
217
+
218
+ ### 模板仓库要求
219
+
220
+ 模板仓库需要包含以下结构:
221
+
222
+ ```
223
+ your-template/
224
+ template.json # 模板配置文件(可选)
225
+ files/ # 模板文件目录
226
+ ...
227
+ ```
228
+
229
+ ### 示例
230
+
231
+ ```bash
232
+ # 从 GitHub 安装模板
233
+ ylyx install github-user/react-template
234
+
235
+ # 从私有仓库安装(需要配置 SSH 密钥)
236
+ ylyx install git@github.com:company/templates.git
237
+
238
+ # 指定分支
239
+ ylyx install owner/repo -b v2.0
240
+ ```
241
+
242
+ ## 模板配置
243
+
244
+ 模板应放在 `templates/` 目录下,结构如下:
245
+
246
+ ```
247
+ templates/
248
+ template-name/
249
+ template.json # 模板配置文件
250
+ files/ # 模板文件目录
251
+ example.js
252
+ example.css
253
+ ```
254
+
255
+ ### template.json 配置示例
256
+
257
+ ```json
258
+ {
259
+ "name": "template-name",
260
+ "description": "模板描述",
261
+ "version": "1.0.0",
262
+ "variables": {
263
+ "projectName": {
264
+ "type": "input",
265
+ "message": "请输入项目名称",
266
+ "default": "my-project"
267
+ }
268
+ },
269
+ "processFiles": ["package.json", "README.md", "*.json"],
270
+ "skipFiles": ["**/*.vue", "**/*.js"]
271
+ }
272
+ ```
273
+
274
+ ## 配置文件
275
+
276
+ 可以在项目根目录创建 `.ylyxrc.json` 配置文件:
277
+
278
+ ```json
279
+ {
280
+ "configVersion": 2,
281
+ "currentEnv": "dev",
282
+ "publicDir": "./public",
283
+ "configDir": "./config",
284
+ "environments": [
285
+ { "name": "dev", "isLocal": true, "npmScript": "dev", "deployMethod": "none" },
286
+ { "name": "prod", "npmScript": "build:prod", "deployMethod": "zip", "buildDir": "dist/app" }
287
+ ],
288
+ "templatesDir": "./templates",
289
+ "outputDir": "./src",
290
+ "defaultVariables": {
291
+ "author": "Your Name",
292
+ "company": "YLYX"
293
+ }
294
+ }
295
+ ```
296
+
297
+ ## 示例
298
+
299
+ ### 生成完整项目
300
+
301
+ ```bash
302
+ # 生成 React 项目
303
+ ylyx generate react-app -n my-react-app -o ./my-react-app
304
+
305
+ # 生成后进入目录并安装依赖
306
+ cd my-react-app
307
+ npm install
308
+ npm start
309
+ ```
310
+
311
+ ## License
312
+
313
+ ISC