Thanks for taking the time to contribute !
When it comes to open source, there are different ways you can contribute, all of which are valuable. Here's a few guidelines that should help you as you prepare your contribution.
React Toolkit has adopted the Contributor Covenant as its Code of Conduct, and we expect project participants to adhere to it.
Please read the full text so that you can understand what actions will and will not be tolerated.
The following steps will get you up and running to contribute to Chakra UI:
-
Fork the repo (click the Fork button at the top right of this page)
-
Clone your fork locally
git clone https://github.com/<your_github_username>/react-toolkit.git
cd react-toolkit
- Setup all the dependencies and packages by running
pnpm install
. This command will install dependencies and bootstrap the repo usingturborepo
In one terminal, run tsdx watch in parallel:
pnpm dev
This builds each package to <packages>/<package>/dist
and runs the project in
watch mode so any edits you save inside <packages>/<package>/src
cause a
rebuild to <packages>/<package>/dist
. The results will stream to to the
terminal.
- Turbo to manage installation of dependencies and running various scripts. We also have pnpm workspaces enabled by default.
- Testing Library for testing components and hooks
- Nextjs for a blazing fast documentation website. versioning and changelogs
- Changeset for changes documentation, changelog generation, and release management.
You can play with local packages in the Parcel-powered example/playground.
pnpm start:app
This will start the example/playground on localhost:1234
. If you have Turbo
running watch in parallel mode in one terminal, and then you run parcel, your
playground will hot reload when you make changes to any imported module whose
source is inside of packages/*/src/*
. Note that to accomplish this, each
package's start
command passes TDSX the --noClean
flag. This prevents Parcel
from exploding between rebuilds because of File Not Found errors.
Important Safety Tip: When adding/altering packages in the playground, use
alias
object in package.json. This will tell Parcel to resolve them to the
filesystem instead of trying to install the package from NPM. It also fixes
duplicate React errors you may run into.
Don't forget to setup your IDE with eslint
and prettier
.
The documentation site is built with Next.js. If you'd like to contribute to the
docs, simply run pnpm build
, and pnpm docs:dev
Pull requests need only the 👍 of two or more collaborators to be merged; when the PR author is a collaborator, that counts as one.
Before you create a Pull Request, please check whether your commits comply with the commit conventions used in this repository.
When you create a commit we kindly ask you to follow the convention
category(scope or module): message
in your commit message while using one of
the following categories:
feat
: all changes that introduce completely new code or new featuresfix
: changes that fix a bug (ideally you will additionally reference an issue if present)refactor
: any code related change that is not a fix nor a featuredocs
: changing existing or creating new documentation (i.e. README, docs for usage of a lib or cli usage)build
: all changes regarding the build of the software, changes to dependencies or the addition of new dependenciestest
: all changes regarding tests (adding new tests or changing existing ones)ci
: all changes regarding the configuration of continuous integration (i.e. github actions, ci system)chore
: all changes to the repository that do not fit into any of the above categories
If you are interested in the detailed specification you can visit https://www.conventionalcommits.org/ or check out the Angular Commit Message Guidelines.
-
Fork of the react-toolkit repository and clone your fork
-
Create a new branch out of the
main
branch. We follow the convention[type/scope]
. For examplefix/accordion-hook
ordocs/menu-typo
.type
can be eitherdocs
,fix
,feat
,build
, or any other conventional commit type.scope
is just a short id that describes the scope of work. -
Make and commit your changes following the commit convention. As you develop, you can run
pnpm pkgs <module> build
andpnpm pkgs <module> test
to make sure everything works as expected. Please note that you might have to runpnpm build
first in order to build all dependencies. -
Run
pnpm changeset
to create a detailed description of your changes. This will be used to generate a changelog when we publish an update. Learn more about Changeset. Please note that you might have to rungit fetch origin main:master
(where origin will be your fork on GitHub) beforepnpm changeset
works.
If you made minor changes like CI config, prettier, etc, you can run
pnpm changeset add --empty
to generate an empty changeset file to document your changes.
All commits that fix bugs or add features need a test.