Skip to content
Switch branches/tags

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time


Build Status

A cookiecutter template to help you make new JupyterLab theme extensions.



Install cookiecutter:

pip install cookiecutter

Use cookiecutter to generate a package:



The cookiecutter will prompt you with the following questions and generate a project according to your responses:

  • author_name: Your full name.
  • python_name: The name of the Python package for your JupyterLab extension (e.g. jupyterlab_pink_theme).
  • labextension_name: Your JupyterLab extension name (e.g. @my-organization/jupyterlab-pink-theme).
  • project_short_description: A short description of your JupyterLab theme extension.
  • has_binder: Whether you extension has a binder link or not.
  • repository: Your theme's repository. If the code of your theme is hosted on Github, this should just be the main Github url (e.g.

Project structure

Once you fill in the cookiecutter prompts, you'll get a basic theme extension. The files within are structured as follows:

  • python_name
    • style: The assets (.css files, images, etc) that will make up your theme's actual style. This start out with the style from the default Jupyterlab light theme.
    • src - The extension source.
      • index.ts: Entry point for the JupyterLab extension
    • package.json: Metadata files that defines the files in your extension and their dependencies
    • tsconfig.json: Tells the TypeScript compiler how to build your extension
    • The Python distribution file

Package names

We suggest that extension names start with jupyterlab_ and use underscores or dashes if needed to improve readability, such as jupyterlab_myextension.