-
-
Notifications
You must be signed in to change notification settings - Fork 1.8k
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
[RFC] egg-init refactor #2892
Comments
|
好赞! |
Egg当前确实需要这个 |
Add nyc to package.json by default
|
|
应用代码升级的问题好像没说 |
|
egg-bin 跟着项目走比较好,插件是全局的? |
插件指的是 egg 插件,就像 generator 那样,可以在 app/scripts 目录里面支持 generator.js / boilerplate.js 的方式来执行子命令。 譬如 egg-mongooes 的 boilerplate 放在插件里面最合适 |
指的是
这个有什么问题不? |
~/.egg/config.yml 就好了 |
我觉得生成器作为单独命令比较好。 首先脚手架模版肯定是独立,放插件里有变成了鸡蛋问题。工具类不一定都适合放插件里,比如我们原来默认的 dev/test 属于哪个插件?放插件的可能是代码生成器和更新工具,这两个东西虽然场景不同,实属于同一个东西。 |
你理解错我的意思了,egg-bin 拆分那个只是考虑如何扩展,可能是 egg 这个全局引导命令,做一个映射,跟之前没区别,不会放到插件里面,这个先不在这展开,回头再另开。 我指的是:
这几个放到插件里面合适,因为他们是跟插件强相关的。而放到骨架里面就不太合适了,如 simple 这个骨架,不能把 hsf 的 template/ sub generator( |
回到 RFC 本身,现在有两个问题我还没想清晰,需要讨论下:
|
明白了,那没问题。 通用的生成可以放到框架?就是考虑在哪个层面的就放到哪个 loadUnit?但是这个就不要考虑继承和依赖了,太复杂,可以通过配置的方式扩展。 更新我觉得跟生成是一个思路,只是需要根据一个标准来更新,比如什么版本到什么版本会做什么更新,现在想想有点复杂。 |
大概是这样的继承关系, base 里面实现 controller/service 等通用的 ts 里面实现 ts 版通用的,(到时再看有没有必要来个 base-ts ) 框架的,目前还不是很清晰,倾向于先放到独立的 boilerplate,未来有需要再看看是抽象还是集成到框架。 更新的感觉挺复杂的,还想不清晰,先搁置。 egg-boilerplate-legacy 倒是可以实践下,一方面支持安装旧模板,一方面模板开发者可以用它来升级 |
补充下,有 |
背景
目前的 egg-init 存在以下问题:
egg-init
本身,作为全局命令,更新不方便。egg-init add controller Test
这样的功能。方案
基础骨架
脱离 Egg 的独立骨架模块,common-boilerplate:
egg-bin
等引导工具目录结构:
骨架入口:
模板渲染
{{ name }}
{{name}}.test.js
形式renderTemplate
方法可以支持 nunjucks 之类的渲染引擎模板继承
单元测试
扩展了 coffee,提供 CLI 的测试支持。
egg-init
egg-init
极简化:common-bin
。package.json
的boilerplate
节点,执行对应的骨架。preset
,可以不再需要封装@ali/egg-init
。配置文件
package.json
的boilerplate
->~/.egg-init
egg-init --config=/path/to
项目配置: package.json
全局配置: 支持
yml / json
等格式egg-init-config
骨架列表集合,用于
--preset
参数。仅需在
package.json
中包含config.boilerplate
字段即可。package
- npm 包名description
- 描述category
- 分类,可选伪代码
egg-boilerplate-base
提供一个
egg-boilerplate-base
基础骨架,方便开发者继承使用。add controller
add service
add config
add plugin
helper
(或者考虑仅推荐,不集成,开发者自行引入)子命令
还没想好怎么做。
是基于
common-bin
的 sub command 还是作为 boilerplate 的一个方法,如addXX()
?还有就是跟
egg-bin generator
有点相关,很多子命令其实更应该由插件来提供,如addModel
之类的,它的模板应该是在对应的插件里面。所以
egg-init
和egg-bin generator
是可以考虑联动的,譬如addModel
的时候,是固定读插件里面的某个约定的文件,或者执行某个脚本。egg-boilerplate-legacy
用于兼容旧版本的骨架,引导安装,实现旧版 egg-init 的安装逻辑。
在
egg-init
新版源码里面,判断用户选择的骨架是否符合新规范,不符合的话,安装egg-boilerplate-legacy
并引导安装。The text was updated successfully, but these errors were encountered: