创建服务器扩展#
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
。您应该能够看到以下消息打印到开发者工具控制台
发布扩展#
发布扩展最简单的方法是使用 Jupyter Releaser。
生成的仓库应该已经与 releaser 兼容。然后,您可以按照 Jupyter Releaser 文档 的说明,了解如何将 PyPI
和 npm
令牌添加为 GitHub Secrets。
发布后,您可以检查扩展是否可以在新环境中本地安装
python -m pip install myliteextension
在 JupyterLite 部署中使用扩展#
在大多数情况下,这意味着将扩展添加到 requirements.txt
文件中
jupyterlite-core
myliteextension
有关将扩展添加到 JupyterLite 网站的更多信息,请查看 配置指南。
如果需要大量自定义,您也可以在您的包中 扩展 JupyterLite CLI。
但是,无论构建环境如何构建,一旦它运行良好,强烈建议生成并签入一个完整的锁定包版本列表。一些包管理器,例如 poetry
和 pipenv
,默认支持此功能。
参考资料#
有关更多信息,请查看以下仓库