Skip to content

Latest commit

 

History

History
203 lines (130 loc) · 4.69 KB

CONTRIBUTING.md

File metadata and controls

203 lines (130 loc) · 4.69 KB

Contributing to JupyterLab

If you're reading this section, you're probably interested in contributing to JupyterLab. Welcome and thanks for your interest in contributing!

Please take a look at the Contributor documentation, familiarize yourself with using the Jupyter Notebook, and introduce yourself on the mailing list and share what area of the project you are interested in working on.

We have labeled some issues as sprint friendly that we believe are good examples of small, self contained changes.
We encourage those that are new to the code base to implement and/or ask questions about these issues.

General Guidelines

For general documentation about contributing to Jupyter projects, see the Project Jupyter Contributor Documentation.

All source code is written in TypeScript. See the Style Guide.

Setting Up a Development Environment

Installing Node.js and npm

Building the Notebook from its GitHub source code requires some tools to create and minify JavaScript components and the CSS. Namely, that's Node.js and Node's package manager, npm.

If you use conda, you can get them with:

conda install -c javascript nodejs

If you use Homebrew on Mac OS X:

brew install node

For Debian/Ubuntu systems, you should use the nodejs-legacy package instead of the node package:

sudo apt-get update
sudo apt-get install nodejs-legacy npm

You can also use the installer from the Node.js website.

Installing JupyterLab

JupyterLab requires Jupyter Notebook version 4.2 or later.

If you use conda, you can install it as:

conda install notebook

If you use ``pip``` you can install it as:

pip install notebook

Once you have installed the dependencies mentioned above, use the following steps::

git clone https://github.com/<your-github-username>/jupyterlab.git
cd jupyterlab
npm install
pip install -e . # will take a long time to build everything
jupyter serverextension enable --py jupyterlab

Note: At times, it may be necessary to clean your local repo with the command git clean -fdx.

Run JupyterLab

Start JupyterLab:

jupyter lab

Alternatively, you can run JupyterLab in debug mode:

jupyter lab --debug

Run the tests

npm test

Build and run the stand-alone examples

To install and build the examples in the examples directory:

npm run build:examples

To run a specific example, change to the example's directory (i.e. examples/filebrowser) and enter:

python main.py

Build API Docs

To build the API docs:

npm run docs

Navigate to docs/index.html.


High level Architecture

The JupyterLab application is made up of two major parts:

  • an npm package
  • a Jupyter server extension (Python package)

Each part is named jupyterlab. The developer tutorial documentation provides additional architecture information.

The NPM Package

The npm package source files are in the src/ subdirectory.

Prerequisites

  • node (preferably version 5 or later)
  • Jupyter notebook server version 4.2 or later (to run examples)
npm install --save jupyterlab

Build the NPM Package from Source

git clone https://github.com/jupyter/jupyterlab.git
cd jupyterlab
npm install
npm run build:all

Rebuild

npm run clean
npm run build:all

The Jupyter Server Extension

The Jupyter server extension source files are in the jupyterlab/ subdirectory. To use this extension, make sure the Jupyter notebook server version 4.2 or later is installed.

Build the JupyterLab server extension

When you make a change to JupyterLab npm package source files, run:

npm run build:serverextension

to build the changes and then refresh your browser to see the changes.

To have the system build after each source file change, run:

npm run watch:serverextension

and refresh the browser.

Bundle for the Browser

Follow the package install instructions first.

Any bundler that understands how to require() files with .js and .css extensions can be used with this package.

Note: This npm module is fully compatible with Node/Babel/ES6/ES5. Simply omit the type declarations when using a language other than TypeScript.