Development and contribution guide
Last updated
Last updated
Clone the repository with git clone git@github.com:0xProject/0x-mesh.git
. Mesh uses Go Modules for dependency management, so depending on your settings you might need to clone the repository outside of your GOPATH
.
0x Mesh uses two main branches:
The development
branch contains the latest (possibly unreleased) changes
and is not guaranteed to be stable.
The master
branch contains the latest stable release.
If you intend to fork 0x Mesh and open a PR, you should work off of the development
branch. Make sure you check out the development
branch and pull the latest changes.
All PRs should use development
as the base branch. When opening a new PR, use the dropdown menu in the GitHub UI to select development
.
GNU Make If you are using a Unix-like OS, you probably already have this.
Node.js version >=11 (or use the nvm version manager).
Python. (Many OSes already have this).
Google Chrome. If you already have Google Chrome you typically don't need to do anything. On Ubuntu you can run wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb && dpkg -i google-chrome-stable_current_amd64.deb; apt-get -fy install
.
Some of the tests depend on having a test Ethereum node running. Before running the tests, make sure you have Docker installed locally and start 0xorg/ganache-cli. In these commands, $GANACHE_VERSION
should be set to the version of ganache-cli that is used in the mesh project's CI found here:
There are various Make targets for running tests:
The default maximum number of open files is too low in some operating systems for the tests to be run successfully. If an error that reads like "Too many open files," it may be necessary to increase this limit. On Unix-like operating systems, the ulimit
command can be used as follows to accomplish this change:
It may be convenient to add this line to the .bashrc
(or .bash_profile
for MacOs users) file so that the change will go into effect whenever a new shell is created.
0x Mesh is configured to use linters for both Go and TypeScript code. To run all available linters, run:
Mesh uses Go Modules for managing Go dependencies and Yarn for managing TypeScript/JavaScript dependencies.
For VS Code, the following editor configuration is recommended:
When working on code with the build tag js,wasm
, you might need to add the following to your editor config: