通用代码库指南#
jupyterlab 存储库是一个单体仓库:它包含许多独立版本化和发布的包的代码。
特别是,它包含许多 TypeScript 包和一个 Python 包。Python 包包含服务器端代码,并分发捆绑和编译后的 TypeScript 代码。
有关详细的开发者安装说明,请参阅贡献指南。
目录#
存储库包含多个顶级目录,其内容在此处描述。
Python 包:jupyterlab/#
这与 pyproject.toml 一起,构成了项目的 Python 代码。这包括 notebook 服务器扩展、JupyterLab 的命令行界面、入口点和 Python 测试。
它还包含与 Python 包一起分发的最终构建的 JavaScript 资产。
NPM 包:packages/#
这包含许多 TypeScript 子包,它们独立版本化并发布到 npmjs.org。这些包被编译成 JavaScript 并与 Python 包捆绑。
JupyterLab 大部分代码库都位于这些包中。JupyterLab 中各种组件的常见模式是有一个包实现该组件,而另一个以 -extension 为后缀的包则将该组件与应用程序的其余部分集成。检查此目录的内容会发现许多此类包。
您可以通过运行 jlpm build:packages 来构建这些包。
Binder 设置:binder/#
这包含 repo2docker 的环境规范,允许在 mybinder.org 上测试存储库。此规范以开发者为中心。有关以用户为中心的 Binder,请参阅 JupyterLab 演示。除了 /lab,Binder 实例还添加了两个端点:/lab-dev 和 /lab-spliced。lab-dev 端点相当于在本地检出存储库并运行 jupyter lab --dev-mode。lab-spliced 端点相当于以拼接模式构建 JupyterLab 并运行 jupyter lab。有关拼接模式的更多信息,请参阅源代码扩展的开发工作流程。
构建工具:buildutils/#
一个 npm 包,包含用于管理 JupyterLab 构建过程的几个实用脚本。
您可以通过运行 jlpm build:utils 来构建此包。
设计:design/#
一个目录,包含一系列设计文档,解释了在构建 JupyterLab 过程中做出的各种选择。
开发模式:dev_mode/#
一个应用程序目录,包含在开发 TypeScript 源代码时使用的已构建 JavaScript 资产。如果您在 dev-mode 中运行 JupyterLab,则您正在从此目录提供应用程序。
文档:docs/#
此目录包含此文档的 Sphinx 项目。您可以使用 pip install .[docs] 安装构建文档的依赖项,并通过运行 make html 来构建文档。构建文档的入口点将位于 docs/build/index.html。
示例:examples/#
examples/ 目录包含组件的独立示例,例如页面上的简单 notebook、控制台、终端和文件浏览器。app 示例演示了 JupyterLab 中使用的几个组件的简化组合。
Jupyter 服务器配置:jupyter-config/#
此目录包含随 Python 包分发的元数据,允许它在安装时自动启用 Jupyter 服务器扩展。
实用脚本:scripts/#
此目录包含一系列实用脚本,主要用于 JupyterLab 的持续集成测试。
测试:tests/#
packages/ 目录中 TypeScript 包的测试。这些测试目录本身是小的 npm 包,它们引入 TypeScript 源代码并测试其 API。
测试工具:testutils/#
一个小的 npm 包,用于帮助运行 tests/ 中的测试。