Starting up a dev environment

Installing the 3rd party dependencies

To develop and customize Converse, you’ll first need to check out Converse’s Git repository:

git clone https://github.com/conversejs/converse.js.git
cd converse.js

We use development tools which depend on Node.js and NPM (the Node package manager).

It’s recommended that you use NVM (the Node version manager) to make sure you have the right version of Node.

Refer to the NVM Github page for instructions on how to install it.

Once NVM is installed, you can run the following inside your checkout of the Converse Git repository:

nvm install

Note

You will always have to first run nvm install in a new terminal session before working on Converse.

To set up the Converse development environment, you now run make dev.

make dev

Alternatively, if you’re using Windows, or don’t have GNU Make installed, you can run the following:

npm install
npm run lerna

This will install the Node development tools and Converse’s dependencies.

The front-end dependencies are those JavaScript files on which Converse directly depends and which will be loaded in the browser as part of the bundle in dist/converse.js (or dist/converse.min.js).

To see the 3rd party dependencies (not just the front-end dependencies, but also ones necessary for development tasks like making builds), take a look at the list under the devDependencies in package.json.

Note

After running `make dev`, you should now have a new node_modules directory which contains all the external dependencies of Converse. If this directory does NOT exist, something must have gone wrong. Double-check the output of `make dev` to see if there are any errors listed. For support, you can ask in our chatroom: dicuss@conference.conversejs.org.

If you don’t have an XMPP client installed, follow this link to conversejs.org where you can log in and be taken directly to the chatroom.

Libsignal

If you want OMEMO encryption, you need to load libsignal separately in your page.

For example:

<script src="3rdparty/libsignal-protocol-javascript/dist/libsignal-protocol.js"></script>

The reason libsignal needs to be loaded separately is because it’s released under the GPLv3 which requires all other dependent JavaScript code to also be open sourced under the same license. You might not be willing to adhere to those terms, which is why you need to decide for yourself whether you’re going to load libsignal or not.