extensions.rst 8.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242
  1. Extensions
  2. ----------
  3. JupyterLab extensions add functionality to the JupyterLab application.
  4. They can provide new file viewer types, launcher activities, and output
  5. renderers, among many other things. JupyterLab extensions are
  6. `npm <https://www.npmjs.com/>`__ packages (the standard package format
  7. in Javascript development). For information about developing extensions,
  8. see the :ref:`developer documentation <developer-guide>`.
  9. In order to install JupyterLab extensions, you need to have Node.js
  10. version 4+ installed.
  11. If you use ``conda``, you can get it with:
  12. .. code:: bash
  13. conda -c conda-forge install nodejs
  14. If you use `Homebrew <https://brew.sh/>`__ on Mac OS X:
  15. .. code:: bash
  16. brew install node
  17. Installing Extensions
  18. ~~~~~~~~~~~~~~~~~~~~~
  19. The base JupyterLab application includes a core set of extensions, which
  20. provide the features described in this User Guide (Notebook, Terminal,
  21. Text Editor, etc.) You can install new extensions into the application
  22. using the command:
  23. .. code:: bash
  24. jupyter labextension install <foo>
  25. where ``<foo>`` is the name of a valid JupyterLab extension npm package
  26. on `npm <https://www.npmjs.com>`__. Use the ``<foo>@<foo version>``
  27. syntax to install a specific version of an extension, for example:
  28. .. code:: bash
  29. jupyter labextension install <foo>@1.2.3
  30. You can also install an extension that is not uploaded to npm, i.e.,
  31. ``<foo>`` can be a local directory containing the extension, a gzipped
  32. tarball, or a URL to a gzipped tarball.
  33. We encourage extension authors to add the ``jupyterlab-extensions``
  34. GitHub topic to any repository with a JupyterLab extension to facilitate
  35. discovery. You can see a list of extensions by searching Github for the
  36. `jupyterlab-extensions <https://github.com/search?utf8=%E2%9C%93&q=topic%3Ajupyterlab-extensions&type=Repositories>`__
  37. topic.
  38. You can list the currently installed extensions by running the command:
  39. .. code:: bash
  40. jupyter labextension list
  41. Uninstall an extension by running the command:
  42. .. code:: bash
  43. jupyter labextension uninstall <bar>
  44. where ``<bar>`` is the name of the extension, as printed in the
  45. extension list. You can also uninstall core extensions using this
  46. command (which can later be re-installed).
  47. Installing and uninstalling extensions can take some time, as they are
  48. downloaded, bundled with the core extensions, and the whole application
  49. is rebuilt. You can install/uninstall more than one extension in the
  50. same command by listing their names after the ``install`` command.
  51. If you are installing/uninstalling several extensions in several stages,
  52. you may want to defer rebuilding the application by including the flag
  53. ``--no-build`` in the install/uninstall step. Once you are ready to
  54. rebuild, you can run the command:
  55. .. code:: bash
  56. jupyter lab build
  57. Disabling Extensions
  58. ~~~~~~~~~~~~~~~~~~~~
  59. You can disable specific JupyterLab extensions (including core
  60. extensions) without rebuilding the application by running the command:
  61. .. code:: bash
  62. jupyter labextension disable <bar>
  63. where ``<bar>`` is the name of the extension. This will prevent the
  64. extension from loading in the browser, but does not require a rebuild.
  65. You can re-enable an extension using the command:
  66. .. code:: bash
  67. jupyter labextension enable <foo>
  68. Advanced Usage
  69. ~~~~~~~~~~~~~~
  70. The JupyterLab application directory (where the application assets are
  71. built and the settings reside) can be overridden using ``--app-dir`` in
  72. any of the JupyterLab commands, or by setting the ``JUPYTERLAB_DIR``
  73. environment variable. If not specified, it will default to
  74. ``<sys-prefix>/share/jupyter/lab``, where ``<sys-prefix>`` is the
  75. site-specific directory prefix of the current Python environment. You
  76. can query the current application path by running ``jupyter lab path``.
  77. JupyterLab Build Process
  78. ^^^^^^^^^^^^^^^^^^^^^^^^
  79. To rebuild the app directory, run ``jupyter lab build``. By default the
  80. ``jupyter lab install`` command builds the application, so you typically
  81. do not need to call ``build`` directly.
  82. Building consists of:
  83. - Populating the ``staging/`` directory using template files
  84. - Handling any locally installed packages
  85. - Ensuring all installed assets are available
  86. - Bundling the assets
  87. - Copying the assets to the ``static`` directory
  88. JupyterLab Application Directory
  89. ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  90. The JupyterLab application directory contains the subdirectories
  91. ``extensions``, ``schemas``, ``settings``, ``staging``, ``static``, and
  92. ``themes``.
  93. .. _extensions-1:
  94. extensions
  95. ''''''''''
  96. The ``extensions`` directory has the packed tarballs for each of the
  97. installed extensions for the app. If the application directory is not
  98. the same as the ``sys-prefix`` directory, the extensions installed in
  99. the ``sys-prefix`` directory will be used in the app directory. If an
  100. extension is installed in the app directory that exists in the
  101. ``sys-prefix`` directory, it will shadow the ``sys-prefix`` version.
  102. Uninstalling an extension will first uninstall the shadowed extension,
  103. and then attempt to uninstall the ``sys-prefix`` version if called
  104. again. If the ``sys-prefix`` version cannot be uninstalled, its plugins
  105. can still be ignored using ``ignoredPackages`` metadata in ``settings``.
  106. schemas
  107. '''''''
  108. The ``schemas`` directory contains `JSON
  109. Schemas <http://json-schema.org/>`__ that describe the settings used by
  110. individual extensions. Users may edit these settings using the
  111. JupyterLab Settings Editor.
  112. settings
  113. ''''''''
  114. The ``settings`` directory contains ``page_config.json`` and
  115. ``build_config.json`` files.
  116. .. _page_configjson:
  117. page_config.json
  118. The ``page_config.json`` data is used to provide config data to the
  119. application environment.
  120. Two important fields in the ``page_config.json`` file allow control of
  121. which plugins load:
  122. 1. ``disabledExtensions`` for extensions that should not load at all.
  123. 2. ``deferredExtensions`` for extensions that do not load until they are
  124. required by something, irrespective of whether they set ``autostart``
  125. to ``true``.
  126. The value for each field is an array of strings. The following sequence
  127. of checks are performed against the patterns in ``disabledExtensions``
  128. and ``deferredExtensions``.
  129. - If an identical string match occurs between a config value and a
  130. package name (e.g., ``"@jupyterlab/apputils-extension"``), then the
  131. entire package is disabled (or deferred).
  132. - If the string value is compiled as a regular expression and tests
  133. positive against a package name (e.g.,
  134. ``"disabledExtensions": ["@jupyterlab/apputils*$"]``), then the
  135. entire package is disabled (or deferred).
  136. - If an identical string match occurs between a config value and an
  137. individual plugin ID within a package (e.g.,
  138. ``"disabledExtensions": ["@jupyterlab/apputils-extension:settings"]``),
  139. then that specific plugin is disabled (or deferred).
  140. - If the string value is compiled as a regular expression and tests
  141. positive against an individual plugin ID within a package (e.g.,
  142. ``"disabledExtensions": ["^@jupyterlab/apputils-extension:set.*$"]``),
  143. then that specific plugin is disabled (or deferred).
  144. .. _build_configjson:
  145. build_config.json
  146. The ``build_config.json`` file is used to track the local directories
  147. that have been installed using
  148. ``jupyter labextension install <directory>``, as well as core extensions
  149. that have been explicitly uninstalled. An example of a
  150. ``build_config.json`` file is:
  151. .. code:: json
  152. {
  153. "uninstalled_core_extensions": [
  154. "@jupyterlab/markdownwidget-extension"
  155. ],
  156. "local_extensions": {
  157. "@jupyterlab/python-tests": "/path/to/my/extension"
  158. }
  159. }
  160. staging and static
  161. ''''''''''''''''''
  162. The ``static`` directory contains the assets that will be loaded by the
  163. JuptyerLab application. The ``staging`` directory is used to create the
  164. build and then populate the ``static`` directory.
  165. Running ``jupyter lab`` will attempt to run the ``static`` assets in the
  166. application directory if they exist. You can run
  167. ``jupyter lab --core-mode`` to load the core JupyterLab application
  168. (i.e., the application without any extensions) instead.
  169. themes
  170. ''''''
  171. The ``themes`` directory contains assets (such as CSS and icons) for
  172. JupyterLab theme extensions.