Co-authored-by: Florent <florent.fayolle@beta.gouv.fr>
3.5 KiB
Development
Please as a first start, tell the community about your intent to develop a feature or fix a bug. Search for the associated issue if it exists or open one with steps to reproduce (for bugs) or a user story (for features).
Setup
Prerequisites
To setup your environment, you would need to install the following dependencies:
- git
- nvm (recommended) or nodejs installed on your system
- Chromium to run the end-to-end tests
- Python (preferably Python 3.9) and virtualenv
- ⚠️ As of 2023-06-06, Python 3.11 is not supported due to the version of the wrapt dependency
Clone the repository
$ git clone https://github.com/gristlabs/grist-core
And then, enter the grist-core root directory:
$ cd grist-core/
Setup nodejs
Using nvm (recommanded)
You need to install the supported nodejs version as well as yarn. To do so, in the grist-core root directory, run the following command to install nodejs via nvm:
$ nvm install
Now check that node is installed in the version specified in the .nvmrc
file:
$ node --version
Then install yarn (the -g
flag here means that yarn will be available globally):
$ npm install -g yarn
Now each time you want to load nodejs and yarn in your environment, just run the following command at grist-core root directory:
$ nvm use
Using nodejs
You can also use nodejs installed in your system. To prevent incompatibilities, ensure that the node --version
command reports a version equal or greater to the one in .nvmrc
.
Install the python packages
Be sure to have Python and virtualenv installed. On debian-based Linux distributions, you can simply run the following command as root:
# apt install python3.9 python3.9-venv
Install the project dependencies and build
First install the nodejs dependencies:
$ yarn install
Then prepare the virtual environment with all the python dependencies:
$ yarn install:python
Finally run this to do an initial build:
$ yarn run build:prod
Start the server in development mode
Just run the following command:
$ yarn start
Each time you change something, just reload the webpage in your browser.
Happy coding!
Pick an issue
Lost on what you can do to help? If you are new to Grist, you may just pick one of the issues labelled good first issue
:
https://github.com/gristlabs/grist-core/labels/good%20first%20issue
Run tests
You may run the tests using one of these commands:
yarn test
to run all the testsyarn test:smoke
to run the minimal test checking Grist can open, create and edit a documentyarn test:nbrowser
to run the end-to-end testsyarn test:client
to run the tests for the client librariesyarn test:common
to run the tests for the common libraries shared between the client and the serveryarn test:server
to run the backend testsyarn test:docker
to run some end-to-end tests under dockeryarn test:python
to run the data engine tests
Develop widgets
Check out this repository: https://github.com/gristlabs/grist-widget#readme
Documentation
Some documentation to help you starting developing:
- Grainjs (The library used to build the DOM)
- The user support documentation