1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889 |
- .. _extension_migration_2_3:
- JupyterLab 2.x to 3.x Extension Migration Guide
- ------------------------------------------------
- This is a migration guide for updating extensions that support JupyterLab 2.x to work in JupyterLab 3.x.
- Upgrading Library Versions
- ~~~~~~~~~~~~~~~~~~~~~~~~~~
- JupyterLab 3.0 provides a script to upgrade an existing extension to use the new extension system and packaging.
- First, make sure to update to JupyterLab 3.0 with ``pip``:
- .. code:: bash
- pip install jupyterlab -U
- Or with ``conda``:
- .. code:: bash
- conda install -c conda-forge jupyterlab=3
- Then at the root folder of the extension, run:
- .. code:: bash
- python -m jupyterlab.upgrade_extension .
- The upgrade script creates the necessary files for packaging the JupyterLab extension as a Python package, such as
- ``setup.py`` and ``pyproject.toml``.
- The upgrade script also updates the dependencies in ``package.json`` to the ``^3.0.0`` packages. Here is an example diff:
- .. code:: diff
- index 6f1562f..3fcdf37 100644
- --- a/package.json
- +++ b/package.json
- @@ -29,9 +29,13 @@
- "scripts": {
- - "build": "tsc",
- - "build:labextension": "npm run clean:labextension && mkdirp myextension/labextension && cd myextension/labextension && npm pack ../..",
- - "clean": "rimraf lib tsconfig.tsbuildinfo",
- + "build": "jlpm run build:lib && jlpm run build:labextension:dev",
- + "build:prod": "jlpm run build:lib && jlpm run build:labextension",
- + "build:lib": "tsc",
- + "build:labextension": "jupyter labextension build .",
- + "build:labextension:dev": "jupyter labextension build --development True .",
- + "clean": "rimraf lib tsconfig.tsbuildinfo myextension/labextension",
- + "clean:all": "jlpm run clean:lib && jlpm run clean:labextension",
- "clean:labextension": "rimraf myextension/labextension",
- "eslint": "eslint . --ext .ts,.tsx --fix",
- "eslint:check": "eslint . --ext .ts,.tsx",
- @@ -59,12 +63,12 @@
- ]
- },
- "dependencies": {
- - "@jupyterlab/application": "^2.0.0",
- - "@jupyterlab/apputils": "^2.0.0",
- - "@jupyterlab/observables": "^3.0.0",
- + "@jupyterlab/builder": "^3.0.0",
- + "@jupyterlab/application": "^3.0.0",
- + "@jupyterlab/apputils": "^3.0.0",
- + "@jupyterlab/observables": "^3.0.0",
- "@lumino/algorithm": "^1.2.3",
- "@lumino/commands": "^1.10.1",
- "@lumino/disposable": "^1.3.5",
- @@ -99,6 +103,13 @@
- - "typescript": "~3.8.3"
- + "typescript": "~4.0.1"
- },
- "jupyterlab": {
- - "extension": "lib/plugin"
- + "extension": "lib/plugin",
- + "outputDir": "myextension/labextension/"
- }
- }
- On the diff above, we see that additional development scripts are also added, as they are used by the new extension system workflow.
- Publishing the extension to PyPI and conda-forge
- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- TODO
|