通用代码库导向#

The jupyterlab 存储库是一个单体存储库:它包含许多独立版本化和发布的软件包的代码。

特别是,它包含许多 TypeScript 软件包和一个 Python 软件包。Python 软件包包含服务器端代码,并且还分发捆绑和编译的 TypeScript 代码。

请参阅 贡献指南 以获取详细的开发人员安装说明。

目录#

该存储库包含许多顶级目录,其内容在此处描述。

Python 包:jupyterlab/#

它与 pyproject.toml 一起,构成了项目的 Python 代码。这包括笔记本服务器扩展、JupyterLab 的命令行界面、入口点和 Python 测试。

它还包含与 Python 包一起分发的最终构建的 JavaScript 资产。

NPM 包:packages/#

它包含许多独立版本化并发布到 npmjs.org 的 TypeScript 子包。这些被编译成 JavaScript 并与 Python 包捆绑在一起。

JupyterLab 的大部分代码库都驻留在这些包中。JupyterLab 中各种组件的常见模式是拥有一个实现该组件的包,以及一个后缀为 -extension 的第二个包,用于将该组件与应用程序的其余部分集成。检查此目录的内容显示了许多这样的包。

您可以通过运行 jlpm build:packages 来构建这些包。

Binder 设置:binder/#

它包含一个 repo2docker 环境规范,允许在 mybinder.org 上测试存储库。此规范面向开发人员。有关面向用户的更多信息,请参阅 JupyterLab 演示 Binder 实例除了 /lab 之外还添加了两个端点:/lab-dev/lab-spliced。The lab-dev 端点等效于在本地检出存储库并运行 jupyter lab --dev-mode。The lab-spliced 端点等效于以拼接模式构建 JupyterLab 并运行 jupyter lab。有关拼接模式的更多信息,请参阅 源扩展的开发工作流程

构建实用程序:buildutils/#

这是一个包含用于管理 JupyterLab 构建过程的多个实用脚本的 npm 包。

您可以通过运行 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/ 目录包含组件的独立示例,例如页面上的简单笔记本、控制台、终端和文件浏览器。 app 示例说明了 JupyterLab 中使用的多个组件的简化组合。

Jupyter Server 配置:jupyter-config/#

此目录包含与 Python 包一起分发的元数据,这些元数据允许它在安装时自动启用 Jupyter 服务器扩展。

实用脚本:scripts/#

此目录包含一系列实用脚本,这些脚本主要用于 JupyterLab 的持续集成测试。

测试:tests/#

packages/ 目录中 TypeScript 包的测试。这些测试目录本身是小型 npm 包,它们会引入 TypeScript 源代码并测试其 API。

测试实用程序:testutils/#

一个小型 npm 包,它有助于运行 tests/ 中的测试。