代码仓库基于 pnpm 的 monorepo 结构,不同功能拆分出不同子包。以'react'开头的子包名都是 React 开源库的代码。
coco-cli: 命令行,基于webpack的应用开发、构建工具,以及基于 rollup 的组件库构建工具。coco-compiler: 基于 ts compiler api 的转译程序,编译时给组件添加必要信息。coco-ioc-container: ioc容器,核心,在标准 es 装饰器规范之上封装了一套基于类和元数据的运行时框架。coco-mvc: 框架入口,所有的运行时装饰器和组件都在这里导出。coco-bunle-rollup: rollup打包器,构建库。coco-bundle-webpack: webpack打包器,构建应用。coco-render: 渲染组件。coco-router: 客户端路由组件。coco-view: 视图层装饰器、组件。react: 和react仓库下react包保持同步。react-dom: 和react仓库下react-dom包保持同步。react-reconciler: 和react仓库下react-reconciler包保持同步。react-shared: 和react仓库下shared包保持同步。shared: 全项目共享功能。
框架中类组件和渲染功能都是复用 React 源码实现的,从实用和简单角度出发,所以复用时做了如下约定:
- 基于 18.2.0 版本,具体在这个分支,修改 React 相关问题时可以参考
- 没有引入 schedular 相关源码,改为
setTimeout代替 - 没有引入 concurrent mode 相关源码,也没有引入 lane 相关源码
- 没有引入 hooks 相关源码
- 生命周期函数名字改为 view 起头
nodejs: v18及以上Lts版本pnpm: 和package.json中版本保持一致
pnpm run build: 构建正式包pnpm run build:test: 构建测试包pnpm run test:all: 运行所有测试用例pnpm run test: 执行测试,相当于pnpm run build:test && pnpm run test:all
@cocojs/bundle-rollup、@cocojs/bundle-webpack统一遵循semver规范。@cocojs/cli、@cocojs/mvc、@cocojs/compiler目前处于0.1.0-beta.x版本中,且一直处于beta版本,直到第一个正式版(0.1.0)发布后再遵循semver规范。@cocojs/cli、@cocojs/mvc、@cocojs/compiler这些包需要保证相互兼容且不强制一起发布,所以遵循主版本号一致,次版本号、修订号不一致的规则,这样可以保证一定的灵活性,但又不会过于混乱。
步骤如下:
- 在根目录下执行
changeset:@cocojs/cli、@cocojs/mvc应该一直选择PATCH阶段,直到正式版发布。@cocojs/bundle-rollup、@cocojs/bundle-webpack根据semver规范选择合适的版本升级即可。
- 在自己的 fork 仓库中提交 pr 请求到中心仓库 master 分支。
- action 会自动运行,然后创建一个新版本的 pr 请求。
- 管理员合并 pr 后,会自动发布新的版本。 特别注意:
- 如果是第一版使用oidc发布有点问题,所以可以在本地发布,版本号类似
0.0.1-alpha202512141即可。后续使用action发布会正常升级到0.0.1-alpha.0