Contributing

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 (opens in a new tab) and maintained by community members, mainly by our core contributors @AndriiSherman (opens in a new tab) @AlexBlokh (opens in a new tab) @dankochetov (opens in a new tab). 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

Submitting bug report

To submit a bug or issue, please use our issue form (opens in a new tab) and choose Bug Report

Submitting feature request

To submit a bug or issue, please use our issue form (opens in a new tab) and choose Feature Request

Providing feedback

There are several ways how you can provide a feedback

Contribution guidelines

General setup

Installing node


Install pnpm


Install docker


Local project setup

Clone project


Building project

Project sctructure

📂 drizzle-orm/ - core package with common logic

📂 changelogs/ - all changelogs by modules

📂 drizzle-orm/src/pg-core/ - package with all resources for PostgreSQL database support

📂 drizzle-orm/src/sqlite-core/ - package with all resources for SQLite database support

📂 drizzle-orm/src/mysql-core/ - package with all resources for MySQL database support

📂 examples/ - package with Drizzle ORM usage examples

📂 integration-tests/ - package with all type of tests for each supported database

Build project


if you run this script from root folder - it will build whole monorepo and prepare package.tgz files. Running this script from specific package folder will only build current package

Run tests


will run all tests in integration test folder

Commits and PRs

Commit guideline


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 patten

<package name>: <subject>
<BLANK LINE>
<body>

Example

drizzle-orm: [Pg] Add groupBy error message

In specific case, groupBy was responding with unreadable error
...

PR guideline


Each PR should be created from a branch, that was named by our pattern

<type>/<name>

Example

feature/groupby
fix/groupby-message-fix

List of possible types for branch name

  • feature
  • fix
  • bug
  • docs

Each PR should contain:

  • Tests on feature, that was created
  • Tests on bugs, that was fixed