工程目录结构

通过bucky命令行工具创建工程目录,可以比较清晰的组织工程的目录结构。例如通过下面的步骤,可以创建一个清晰的服务端、前端工程目录结构。

  1. mkdir test
  2. cd test
  3. bucky init -i 进入交互式初始化模式
  4. 创建项目,输入项目相对路径:src/server,项目类型选择Bucky项目的序号
    • 并分别创建名为accountsetting两个新的新建package
    • 继续创建一个名为common静态库
    • 选择不继续创建包
  5. 继续创建项目,输入项目相对路径:src/client/react_native_ui,项目类型选择ReactNative(前端)的序号
  6. 继续创建项目,输入项目相对路径:src/client/html,项目类型选择HTML5(前端)的序号
  7. 继续创建项目,输入项目相对路径:src/client/node_cli,项目类型选择Node(命令行程序)的序号
  8. 选择不继续创建项目
  9. 完成

此时,目录结构如下(显示了4层):

.
├── dist
│   ├── bucky
│   ├── h5
│   └── wx
├── knowledges.json
├── solution.json
├── src
│   ├── client
│   │   ├── html5
│   │   │   ├── core
│   │   │   ├── css
│   │   │   ├── img
│   │   │   ├── index.html
│   │   │   └── main.js
│   │   ├── node_cli
│   │   │   ├── core
│   │   │   └── main.js
│   │   └── react_native_ui
│   │       ├── App.js
│   │       ├── android
│   │       ├── app.json
│   │       ├── core
│   │       ├── index.js
│   │       ├── ios
│   │       ├── node_modules
│   │       ├── package-lock.json
│   │       ├── package.json
│   │       ├── shim.js
│   │       └── yarn.lock
│   └── server
│       ├── account
│       │   ├── account.js
│       │   ├── config.json
│       │   └── onload.js
│       ├── common
│       │   ├── common.js
│       │   ├── config.lib.json
│       │   └── onload.js
│       └── setting
│           ├── config.json
│           ├── onload.js
│           └── setting.js
└── test
    ├── account
    ├── common
    └── setting

可以看到,工程目录结构下主要包含如下几个关键要素:

解决方案配置文件

全局配置文件

bucky项目目录结构

在对应包的对应测试目录下编写测试代码是bucky推荐的做法。例如通过本地调试可以快速排错:

  1. test/account目录下添加test/account/test_account.js
  2. 本地调试:bucky debug -main test/account/test_account.js

前端项目目录结构

可以看到,前端项目的目录下通常都有一个core目录,bucky会在执行bucky build的过程中,自动同步这些文件。

其中bucky build实际包含了下面2个个动作:

  1. bucky compile: 编译解决方案,执行的动作如下:
    • 编译Bucky类型项目下的XAR Package,输出目录是dist/bucky/
    • 编译konwledges.json, 生成dist/bucky/knowledges.json
    • 生成bucky_meta.json,生成dist/bucky/bucky_meta.json
    • 同步不同前端项目的core目录,开发者可以在solution.json里对应project配置里修改core_dir的相对路径。
  2. bucky proxy: 代理生成步骤,执行的动作如下:
    • dist/bucky/下的XAR Package生成代理包
    • 计算dist/bucky/下所有XAR Package(包含代理包)的带哈希版本集信息,生成dist/bucky/version_set.json
    • 版本集的设置,为开发者做灰度测试提供了便利,可参考版本集相关的文档

其中bucky deploy实际包含了如下3个部署动作

  1. bucky pub:把XAR Package发布到bucky的包仓库上(bucky repository)上
  2. bucky stop: 在bucky cloud上停止该app,该步骤可能会耗时,取决于app正在运行中的云端runtime的数量
  3. bucky start:在bucky cloud上启动该app

小结

到此,可以清晰的看到使用bucky 命令行工具创建工程目录,具有solutionproject两层清晰的结构,而knowledges.json则作为全局配置存在。

并且,project里又分为Bucky项目react-native前端项目html5前端项目node命令行程序等。客户端项目和bucky之间通过这些项目的core目录下的bucky类库连接在一起。

单独说明的是Bucky项目,包含了XAR Pacakage子结构,用来模块化在bucky cloud上被自动调度的代码包,同时它们的输出目录默认位于dist/bucky下。

通过理解bucky的工程目录结构,开发者可以更清晰的组织、管理项目。