Welcome! We're glad you're interested in Drizzle ORM and want to help us make it better.
Drizzle ORM is owned by Drizzle Team and maintained by community members, mainly by our core contributors @AndriiSherman @AlexBlokh @dankochetov. Everything that is going to be merged should be approved by all core contributors members
There are many ways you can contribute to the Drizzle ORM project
To submit a bug or issue, please use our issue form and choose Bug Report
To submit a bug or issue, please use our issue form and choose Feature Request
There are several ways how you can provide a feedback
- You can join our Discord channel and provide feedback there
- You can add new ticket in Discussions
- Mention our Twitter account
# https://github.com/nvm-sh/nvm#install--update-script
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.2/install.sh | bash
nvm install 18.13.0
nvm use 18.13.0
# https://pnpm.io/installation
npm install -g pnpm
# https://docs.docker.com/get-docker/
Use docker guide to install docker on your OS
git clone https://github.com/drizzle-team/drizzle-orm.git
cd drizzle-orm
Project sctructure
📂 drizzle-orm/ - core package with all main logic for each dialect
📂 changelogs/ - all changelogs for drizzle-orm module
📂 examples/ - package with Drizzle ORM usage examples
📂 integration-tests/ - package with all type of tests for each supported database
"pnpm i && pnpm build"
-> if you run this script from root folder - it will build whole monorepo. Running this script from specific package folder will only build current package
All tests for Drizzle ORM are integration tests, that are simulating real database and different queries and responses from database. Each file in integration-tests
has a list of different scenarios for different dialect+driver. Each file is creating a docker instance with needed database and running test cases there. Right after all tests were run - docker container with database will be deleted
If you have added additional logic to core package - make sure that all tests were executed without any errors
If you have added data types or feature for query building, you need to create additional test cases with this data type/syntax changes, syntax addition
"cd integration-tests && pnpm test"
-> will run all tests in integration test folder
We have specific rules on how commit messages should be structured.
It's important to make sure your commit messages are clear, concise, and informative to make it easier for others to understand the changes you are making
Commit message pattern
<subject>
<BLANK LINE>
<body>
Example
Add groupBy error message
In specific case, groupBy was responding with unreadable error
...
Warning: All commits should be signed, before submitting PR. Please check detailed info on how to sign commits
- PR should be created with specific name pattern
[Dialect name]: <subject>
Example
[Pg] Add PostGIS extension support
-
PR should contain detailed description with everything, that was changed
-
Each PR should contain
- Tests on feature, that was created;
- Tests on bugs, that was fixed;
To understand how test should be created and run - please check Run tests section