Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: umi generator #781

Merged
merged 8 commits into from
Aug 9, 2018
Merged

feat: umi generator #781

merged 8 commits into from
Aug 9, 2018

Conversation

sorrycc
Copy link
Member

@sorrycc sorrycc commented Aug 7, 2018

使用

$ umi g page a
$ umi g page a/:id/:post

加载 umi-plugin-dva 插件之后,

# src/models/a.js
$ umi g dva:model a

# src/pages/b/models/b.js
$ umi g dva:model b --page b

TODO

umi

  • page 生成支持 class 类型的 react component
  • page 生成支持同时生成 _layout.js 文件
  • page 生成支持配置式路由
  • component 生成,支持 stateless 和 class 两种方式
  • 全局 layout 生成
  • 在支持配置式路由之前,如果用户使用 umi g page 且是配置式路由,抛错
  • 提速,现在启动太慢
  • 补充文档

umi-plugin-dva

  • dva:model 生成,支持 global 级
  • dva:model 生成,支持 page 级
  • dva:service 生成
  • dva:page 生成,包含 page、model、service 等

实现

  • 通过 api.registerGenerator 添加到 service.generators 里,{ key: value } 格式
  • 在 umi generator 的 command plugin 里获取 service.generators,然后运行
  • Generator 可以获取到 api 里的各种路径和配置信息等

插件写法

plugin.js

export default (api) => {
  api.registerGenerator('dva:model', {
    Generator: require('./createDvaModelGenerator').default(api),
  });
}

createDvaModelGenerator.js

export default (api) => {
  return class Generator extends api.Generator {
    constructor() {}
  }
}

关于 umi generate

我的想法:

  • umi generate 应该是内置提供的,generate 比较长,所以可以有个别名 umi g,然后支持通过插件扩展
  • 内置支持 page 等的增删改,注意不只是增加,命令行需要设计下,估计一个命令还搞不定,可以参考下 rails
  • 插件可以扩展 generate,比如 umi-plugin-dva,会提供 dva model、service 的增删改
  • 需要考虑物料市场
  • 后续需和 umi ui 配合使用
  • 其他,page 修改需同时考虑配置式路由和约定式路由、ts 支持等

方案可以继续细化下。

参考

@sorrycc sorrycc mentioned this pull request Aug 7, 2018
32 tasks
@coveralls
Copy link

coveralls commented Aug 7, 2018

Pull Request Test Coverage Report for Build 1096

  • 2 of 28 (7.14%) changed or added relevant lines in 4 files are covered.
  • 16 unchanged lines in 4 files lost coverage.
  • Overall coverage decreased (-0.3%) to 34.675%

Changes Missing Coverage Covered Lines Changed/Added Lines %
packages/umi-build-dev/src/PluginAPI.js 1 6 16.67%
packages/umi-build-dev/src/plugins/commands/generate/page.js 0 10 0.0%
packages/umi-build-dev/src/plugins/commands/generate/index.js 0 11 0.0%
Files with Coverage Reduction New Missed Lines %
packages/umi-build-dev/src/Service.js 1 64.52%
packages/umi/src/scripts/dev.js 3 0.0%
packages/umi-build-dev/src/plugins/mock/index.js 4 0.0%
packages/umi-build-dev/src/PluginAPI.js 8 76.92%
Totals Coverage Status
Change from base Build 1078: -0.3%
Covered Lines: 920
Relevant Lines: 2691

💛 - Coveralls

@sorrycc sorrycc changed the title feat: umi generator WIP: feat: umi generator Aug 7, 2018
@sorrycc sorrycc merged commit b89cd1d into master Aug 9, 2018
@sorrycc sorrycc deleted the feat/umi-generate branch August 9, 2018 05:52
@sorrycc sorrycc changed the title WIP: feat: umi generator feat: umi generator Aug 9, 2018
@sorrycc
Copy link
Member Author

sorrycc commented Aug 9, 2018

已实现基础功能,冲突有点多,先合了,后面开新分支继续优化。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants