通用代码库指南#
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/
中的测试。