通用代码库指南#

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-splicedlab-dev 端点相当于在本地检出存储库并运行 jupyter lab --dev-modelab-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/ 中的测试。