umijs / start

User defined project configuration on the web page to generate UMI project scaffolding.
26 stars 2 forks source link

RFC : 关于模版约定和配置 #3

Open xiaohuoni opened 3 years ago

xiaohuoni commented 3 years ago

期望 start 能做 DynamicForm 和 Generator,预期中是将模版的维护开放到社区中,这样之前的模版可以很好的再利用,也可以吸收更多开源社区优质的模版。因此设想着能否告诉 start 一个模版git地址,它就能知道该做些什么事情?

约定

Start 需要的默认数据 在模版仓库的什么位置
name package.name
version package.version
description package.description
logo package.logo
模版中需要忽略的命令 package.create-umi.ignoreScript
模版中需要忽略的依赖 package.create-umi.ignoreDependencies
模版中需要忽略的文件 package.create-umi.ignore
config 中允许修改的配置 package.create-umi.configschema

大致逻辑

export const tempsList = [{
  type: 'some',
  url: 'https://github.com/aa/bc',
  path: ''
}, {
  type: 'other',
  url: 'https://github.com/aa/bc',
  path: ''
}, {
  type: 'some',
  url: 'https://github.com/aa/bc',
  path: 'template' // 支持模版不在根目录下
}];

下载模版

根据 tempsList 清单,将所有模版下载到本地 .temp-cache ,根据各自的 create-umi中的 ignore* 对本地的模版文件进行裁剪。

获取清单数据

遍历 .temp-cache 取到模版文件的清单数据。

绘制左侧选择页面

根据 configschema 动态生成表单组件

image

最终这个页面会吐出一个配置,交给 Start 的 Generator。

Generator 生成最终的文件

根据配置生成项目的 package.json 和 config/config.t|js

在这个时候清除 package.json 中的 create-umi

chenshuai2144 commented 3 years ago

根据 configschema 动态生成表单组件

这个先不要做了,我们没有一个合适的表单引擎