硬核方式#

这是一个**高级**部分,在求助于硬核方式之前,您应该先考虑其他指南。

内容,硬核方式#

假设

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

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

打开浏览器

  • 查看 内容 API,例如 https://127.0.0.1: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 键,如果省略可能会导致外观异常。