硬核方法#

这是一个高级章节,在采用硬核方法之前,您应该首先考虑其他指南。

内容,硬核方法#

假设

  • 您有一个正在运行的 JupyterLab 4

  • 您想将当前 JupyterLab 根文件夹中的所有文件添加到您的 JupyterLite。

打开浏览器

  • 查看 Contents API,例如 https://:8888/api/contents,它应该如下所示

{
  "name": "",
  "path": "",
  "last_modified": "2021-05-15T20:16:17.753908Z",
  "created": "2021-05-15T20:16:17.753908Z",
  "format": "json",
  "mimetype": null,
  "size": null,
  "writable": true,
  "type": "directory",
  "content": [
    {
      "name": "README.md",
      "path": "README.md",
      "last_modified": "2021-05-15T20:12:22.261076Z",
      "created": "2021-05-15T20:12:22.261076Z",
      "content": null,
      "format": null,
      "mimetype": "text/markdown",
      "size": 3735,
      "writable": true,
      "type": "file"
    }
  ]
}
  • 将此 JSON 粘贴到 $YOUR_JUPYTERLITE/api/contents/all.json

  • 将文件复制到 $YOUR_JUPYTERLITE/files

  • 为每个子文件夹重复此操作 :(

现在,当应用程序重新加载时,如果浏览器存储中没有同名文件,这些文件将出现在文件浏览器中。如果用户已经创建了这样的文件,并且该文件被删除,则原始的服务器支持文件将变得可见。

扩展,硬核方法#

警告

这是一个非常手动的过程,建议在生产环境中使用其他指南中的方法。

获取扩展资产#

假设您有一个正在运行的 JupyterLab 4 安装,请查看您的 {sys.prefix}/share/jupyter/labextensions。每个文件夹包含以下其中之一

  • 如果它以 @ 开头,则为包的集合

  • 否则,为单个预构建扩展

cd $YOUR_JUPYTERLITE
mkdir -p extensions
cd extensions
cp -r $PREFIX/share/jupyter/labextensions/@jupyter-widgets/jupyterlab-manager .

警告

某些扩展需要其他扩展可用。这可以通过查看扩展的 package.json,特别是 #/jupyterlab/sharedPackages 来确定。如果是这种情况,您还需要将所需的扩展复制到 JupyterLite 目录中。

处理主题资产#

主题管理器期望能够从 {:app}/build/themes/({:org}/){:package} 加载主题 CSS / 字体资产,其中 app 通常是 lab

继续上面的例子

cd $YOUR_JUPYTERLITE/extensions
mkdir -p ../build/themes
cp -r @*/*/themes/* ../build/themes/
cp -r @*/themes/* ../build/themes/

填写 federated_extensions#

同样,假设您有一个正在运行的 JupyterLab,单击 Lab 中的检查元素并检查 <head> 中的 <script id="jupyter-config-data">。您需要的条目将包含在那里。

更新您的 /app/jupyter-lite.json,如下所示

{
  "federated_extensions": [
    {
      "extension": "./extension",
      "load": "static/remoteEntry.ca1efc27dc965162ca86.js",
      "name": "@jupyter-widgets/jupyterlab-manager"
    }
  ]
}

提示

有些扩展还包含 style 键,如果省略可能会看起来不正常