Skip to article frontmatterSkip to article content

Contributing Code to Jupyter Book

This guide covers the technical setup and architecture for code contributors.

Application Design

The Jupyter Book application is a Python package containing a Node.js application. It’s functionally equivalent to the MyST-MD engine.

Python Shim

The Python package ensures users have Node.js to run the underlying application. For users without Node.js, it uses nodeenv to download a local copy.

JavaScript Application

The core application is written in JavaScript, currently extending the mystmd CLI. In future, mystmd may become smaller with some markup extensions moving to Jupyter Book.

Jupyter Book 2’s CLI adds some extra functionality (like a way to upgrade from Jupyter Book 1), but is intentionally as lightweight as possible.

Building the Python Package

Jupyter Book uses hatch to build the Python package. Configuration is in pyproject.toml, using plugins:

Build the application:

hatch build