mirror of
https://github.com/hasura/graphql-engine.git
synced 2024-12-15 17:31:56 +03:00
da78a77fb2
Tested on python 3.5 and 3.7 We make light use of pyenv to set an appropriate python version if installed. We could easily install a correct version too if we wanted but that seemed invasive. The newer ruamel was an annoying upgrade but also offers some improvements that exposed some test suite issues (fixed later).
88 lines
2.3 KiB
Markdown
88 lines
2.3 KiB
Markdown
# Contributing
|
|
|
|
This guide explains how to set up the graphql-engine server for development on your
|
|
own machine and how to contribute.
|
|
|
|
## Pre-requisites
|
|
|
|
- [stack](https://docs.haskellstack.org/en/stable/README/#how-to-install)
|
|
- [Node.js](https://nodejs.org/en/) (>= v8.9)
|
|
- npm >= 5.7
|
|
- brotli
|
|
- libpq-dev
|
|
- python >= 3.5 with pip3
|
|
- [pyenv](https://github.com/pyenv/pyenv) (Recommended, not required)
|
|
|
|
The Brotli can be installed from source using `git`, `cmake` and `pkgconf` on Debian with:
|
|
|
|
$ apt-get -y update \
|
|
&& apt-get -y install git cmake pkgconf \
|
|
&& git clone https://github.com/google/brotli.git && cd brotli && mkdir out && cd out && ../configure-cmake \
|
|
&& make && make test && make install && ldconfig
|
|
|
|
The last two prerequisites can be installed on Debian with:
|
|
|
|
$ sudo apt install libpq-dev python3 python3-pip python3-venv
|
|
|
|
### Upgrading npm
|
|
|
|
If your npm is too old (>= 5.7 required):
|
|
|
|
$ npm install -g npm@latest # sudo may be required
|
|
|
|
or update your nodejs.
|
|
|
|
|
|
## Development workflow
|
|
|
|
You should fork the repo on github and then `git clone https://github.com/<your-username>/graphql-engine`.
|
|
After making your changes
|
|
|
|
### Compile
|
|
|
|
...console assets:
|
|
|
|
$ cd console
|
|
$ npm ci
|
|
$ npm run server-build
|
|
$ cd ..
|
|
|
|
...and the server:
|
|
|
|
$ cd server
|
|
$ stack build --fast
|
|
|
|
### Run and Test
|
|
|
|
The easiest way to run `graphql-engine` locally for development is to first
|
|
launch a new postgres container with:
|
|
|
|
$ scripts/dev.sh postgres
|
|
|
|
Then in a new terminal launch `graphql-engine` in dev mode with:
|
|
|
|
$ scripts/dev.sh graphql-engine
|
|
|
|
The `dev.sh` will print some helpful information and logs from both services
|
|
will be printed to screen.
|
|
|
|
You can run the test suite with:
|
|
|
|
$ scripts/dev.sh test
|
|
|
|
This should run in isolation.
|
|
|
|
|
|
### Create Pull Request
|
|
- Make sure your commit messages meet the [guidelines](../CONTRIBUTING.md).
|
|
- Create a pull request from your forked repo to the main repo.
|
|
- Every pull request will automatically build and run the tests.
|
|
|
|
## Code conventions
|
|
|
|
This helps enforce a uniform style for all committers.
|
|
|
|
- Compiler warnings are turned on, make sure your code has no warnings.
|
|
- Use [hlint](https://github.com/ndmitchell/hlint) to make sure your code has no warnings.
|
|
- Use [stylish-haskell](https://github.com/jaspervdj/stylish-haskell) to format your code.
|