# 开发相关的说明 ## 目录结构 - `builder` 和 `buildutils` 为 JupyterLab 构建相关的工具. - `dag` 是 aihub-dag 仓库的 git submodule. - `dev_mode` 包含了"开发模式"下的构建配置和代码. - `jupyterlab` 包含了 JupyterLab 后台的代码, 构建时会将前后端代码统一打包形成 whl 安装包. - `packages` 包含了 JupyterLab 的前端代码. JuptyerLab 的前端代码是通过插件的方式组织起来的. 该文件夹中的所有子文件夹通过 yarn workspace 和 lerna 进行统一管理和构建. - `sparkmagic` 是 aihub-sparkmagic 仓库的 git submodule ## 开发环境 进行开发前需要安装一下构建相关的依赖: ```bash pip install -e . jlpm install jlpm build ``` _注: 这里的 jlpm 是 JupyterLab 提供的特定版本的 yarn, 这里也可以使用 yarn install_ 运行开发模式的命令如下: ```bash jupyter lab --dev-mode --extensions-in-dev-mode ``` 运行后可在浏览器中查看页面. 如果需要在改动前端代码后自动编译, 可以在上述命令后面加上 `--watch` 参数. (目前的 JupyterLab 提供的构建工具并不能自动刷新浏览器, 改动代码后需要手动刷新一下浏览器) ## 关于 JupyterLab 的二次开发 - JupyterLab 是基于 Lumino 框架开发的, 开发时可以参考其 API 文档: https://jupyterlab.github.io/lumino - Lumino 的官方仓库提供了一些使用样例可参考: https://github.com/jupyterlab/lumino - JupyterLab 的前端代码是以插件的形式组织起来的, 插件开发文档: https://jupyterlab.readthedocs.io/en/stable/extension/extension_dev.html - 在开发插件时, 可以参考官方提供的样例: https://github.com/jupyterlab/extension-examples