cube.js 开发说明

主要是关于如果进行cube.js 开发以及参与的(同时也可以方便的学习cube.js 项目结构)
主要说明关于client && driver 的开发

cube.js client

  • 流程
 
1. clone 代码 yarn  && yarn lerna bootstrap 安装依赖
2. 使用yarn link 添加包link
3. 进行代码修改
4. yarn build  构建 commonjs 以及umd 模块
5. 使用yarn link @cubejs-client/core  或者yarn link @cubejs-client/react 到自己项目
6. yarn test 
  • 快速命令
cd packages/cubejs-client-core && yarn && yarn link && cd ../.. && cd packages/cubejs-client-react && yarn && yarn link && cd ../..

cube.js server

  • 参考流程
1. clone 代码 yarn  && yarn lerna bootstrap 安装依赖
2. yarn tsc:watch 开发ts 的watch 编译
3. packages 目录yarn link 需要的包
4. 进行相关修改
5. yarn link @cubejs-backend/cubejs-<pkg>
6. yarn dev 启动测试(自己的创建的测试项目)

实现driver

  • 参考流程
1. copy 相关项目,比如mysql 的driver 实现,命名为@cubejs-backend/<db-name>-driver
2. 不能copy changelog.md
3. 命名驱动类以及readme.md 信息完善
4. 推荐使用纯js 的依赖
5. 典型的实现query 以及testConnection 其他的可以通过BaseDriver 类继承
6. 如果需要连接池,可以实现`generic-pool` 其他语言包可以借鉴
7. 确保驱动实现了`release` 确保资源的释放
8. 使用yarn 进行依赖的管理
9. 添加驱动的实现到packages/cubejs-server-core/src/core/DriverDependencies.js

jdbc 驱动实现

推荐参考cubejs-jdbc-driver/driver/JDBCDriver.js ,因为jdbc 的驱动还是比较规范的

sql 方言实现

  • 参考流程
1. @cubejs-backend/schema-compiler/adapter 找到可借鉴的参考实现
2. copy && 调整自己的代码
3. 添加`static dialectClass()` 到自己实现的需要返回BaseQuery 的驱动(不是必须的,实现了可以保证正确的sql 处理,否则使用默认的)
比如druid 驱动就实现了

参考

const { BaseDriver } = require('@cubejs-backend/query-orchestrator');
const FooQuery = require('./FooQuery');
 
class FooDriver extends BaseDriver {
  // ...
  static dialectClass() {
    return FooQuery;
  }
}

schema compiler 测试

文档上说的是基于docker 运行测试在packages/cubejs-schema-compiler 运行 npm test(依赖了testcontainers 进行真实db操作)

cubejs-server-core 测试

  • 参考流程
1. npx cubejs-cli create 创建项目
2. 安装yarn (全局)
3. link core `packages/cubejs-server-core` 包内执行yarn link
4. link 依赖core 的包(driver 以及其他依赖)
5. packages/cubejs-playground 中运行yarn build 
6. 安装依赖 yarn
7. link core 到自己的项目`yarn link @cubejs-backend/server-core`

说明

以上是一个参考说明,可以方便学习以及了解cube.js 的开发

参考资料

https://github.com/cube-js/cube.js/blob/master/CONTRIBUTING.md

posted on 2021-01-24 17:39  荣锋亮  阅读(501)  评论(0编辑  收藏  举报

导航