This is a guide to running the Zulip desktop app from source, in order to contribute to developing it.
To build and run the app from source, you'll need the following:
- Git
- Use our Git Guide to get started with Git and GitHub.
- Node.js >= v10.16.3
- Python (v2.7.x recommended)
- A C++ compiler compatible with C++11
- Development headers for the libXext, libXtst, and libxkbfile libraries, which can be installed using apt on Ubuntu using
$ sudo apt install libxext-dev libxtst-dev libxkbfile-dev libgconf-2-4
On a system running Debian, Ubuntu, or another Debian-based Linux distribution, you can install all dependencies through the package manager (see here for more on the first command):
$ curl -sL https://deb.nodesource.com/setup_6.x | sudo -E bash -
$ sudo apt install git nodejs python build-essential snapcraft libxext-dev libxtst-dev libxkbfile-dev libgconf-2-4
On a system running MacOS, you can refer to official nodejs docs to
install nodejs. To ensure Node.js has been installed, run node -v
in terminal to know your node version.
If NPM and node-gyp don't come bundled with your Node.js installation, you will need to install them manually.
- Download Node.js for Windows and install it. You can refer to the official docs here to do so. To ensure Node.js has been installed, run
node -v
in Git Bash to know your node version.
- Also, install Windows-Build-Tools to compile native node modules by using
$ npm install --global windows-build-tools
Clone the source locally:
$ git clone https://github.com/zulip/zulip-desktop
$ cd zulip-desktop
Install project dependencies:
$ npm install
Start the app:
$ npm start
Run tests:
$ npm test
Feel free to fork this repository, test it locally and then report any bugs you find in the issue tracker.
You can read more about making contributions in our Contributing Guide.
To package the app into an installer:
npm run dist
This command will produce distributable packages or installers for the operating system you're running on:
- on Windows, a .7z nsis file and a .exe WebSetup file
- on macOS, a
.dmg
file - on Linux, a plain
.zip
file as well as a.deb
file,.snap
file and anAppImage
file.
To generate all three types of files, you will need all three operating systems.
The output distributable packages appear in the dist/
directory.