创建服务器扩展#

JupyterLite 使用与 JupyterLab 相同的插件架构来处理服务器组件。

服务器组件允许内核和会话管理,处理用户设置、主题和显示语言。

有关这如何融入整个应用程序的更多信息,请查看 架构图

创建新的服务器扩展#

扩展开发系统与用于构建 JupyterLab 扩展的系统相同。

如果您不熟悉为 JupyterLab 开发扩展,您可能需要先查看 文档扩展教程 以熟悉工具链。

引导扩展#

首先使用以下命令创建一个新的开发环境

# create the environment
mamba create -n myliteextension -c conda-forge python nodejs jupyterlab cookiecutter jupyterlite-core -y

# activate the environment
conda activate myliteextension

注意

建议使用 长期支持 (LTS) 版本的 NodeJS:简单的经验法则是坚持使用 **偶数** 版本号。

然后,让我们从 cookiecutter 生成一个新的扩展

cookiecutter https://github.com/jupyterlite/serverlite-cookiecutter-ts

出现提示时,为您的扩展输入值。这将创建开发 JupyterLite 扩展的结构。

构建#

要构建扩展

# install package in development mode
python -m pip install -e .

# link your development version of the extension
jupyter labextension develop . --overwrite

# rebuild the source after making changes
jlpm run build

要检查扩展是否已正确构建和安装,请确保它在以下命令中列出

$ jupyter labextension list
JupyterLab v3.*.*
/home/user/miniforge3/envs/tmp/share/jupyter/labextensions
        myliteextension v0.1.0 enabled OK

测试#

最后,在 JupyterLite 中查看扩展的实际效果

# build a new JupyterLite website
# this will pick up the extension linked locally
jupyter lite build --force

# serve the website
jupyter lite serve

然后在网页浏览器中打开 https://127.0.0.1:8000。您应该能够看到以下消息打印到开发者工具控制台

jupyterlite-server-extension

发布扩展#

发布扩展最简单的方法是使用 Jupyter Releaser

生成的仓库应该已经与 releaser 兼容。然后,您可以按照 Jupyter Releaser 文档 的说明,了解如何将 PyPInpm 令牌添加为 GitHub Secrets。

发布后,您可以检查扩展是否可以在新环境中本地安装

python -m pip install myliteextension

在 JupyterLite 部署中使用扩展#

在大多数情况下,这意味着将扩展添加到 requirements.txt 文件中

jupyterlite-core
myliteextension

有关将扩展添加到 JupyterLite 网站的更多信息,请查看 配置指南

如果需要大量自定义,您也可以在您的包中 扩展 JupyterLite CLI

但是,无论构建环境如何构建,一旦它运行良好,强烈建议生成并签入一个完整的锁定包版本列表。一些包管理器,例如 poetrypipenv,默认支持此功能。

提示

还有一些轻量级工具可用于将需求锁定为常见包管理器工具的格式

参考资料#

有关更多信息,请查看以下仓库