Keen to contribute to Garden? We're stoked to have you join us. You may find that opening an issue is the best way to get a conversation started. When you're ready to submit a pull request, follow the steps below. We follow a code of conduct as our guide for community behavior.
This is a multi-package repo which uses Lerna to manage shared and cross-package dependencies. The basic repo layout includes:
├── package.json
– the top-level "project" package that contains the dependencies and scripts needed to manage the multi-package repo. This package will never be published to the registry.└── packages/
– the folder that contains individual@zendeskgarden
packages which are published to the registry.
├── .template/
– a special template package referenced bynpm run new
to generate a component.
├── buttons/
├── tabs/
├── theming/
└── etc.
Garden follows semantic versioning. We release patch versions for bugfixes, minor versions for new features, and major versions for any breaking changes.
The pull request workflow along with the PR template will help us determine how to version your contributions.
All changes are recorded in the changelog after your PR is merged.
Before you start, be sure npm is installed
on your system. After you clone this repo, run npm install
to install
dependencies needed for development. After installation, the following
commands are available:
npm start
to launch Storybook with live reload. UsePACKAGE=dirname npm start
(wheredirname
is a package directory name) to limit Storybook launch to the given Garden package.npm test
to run Jest testing.npm run lint
to enforce consistent JavaScript, CSS, and markdown code conventions across all component packages. Note this is run as a gitpre-commit
hook.npm run format
to enforce code style with opinionated formats across all component packages. Note this is run as a gitpre-commit
hook.npm run build
to rebuild distributions across all packages. The build runs as part of the initial install. Operates as a facade over a Lerna command; operation may be modified using option flags (i.e.scope
,since
, orignore
).npm run new
to generate a new React component based on a package template.
See Garden's development documentation for package implementation requirements. In general, your code will be expected to follow documented standards and prevailing conventions. If you feel the need to introduce a new or novel pattern, please start a new discussion or open an issue for consideration by the core team.
- Fork the repo and create a branch. Format your branch name as
username/verb-noun
. - If you haven't yet, get comfortable with the development environment.
- Regularly
git commit
locally andgit push
to the remote branch. Use whatever casual commit messaging you find suitable. We'll help you apply an appropriate squashed conventional commit message when it's time to merge to the main branch. - If your changes result in a major modification, be sure all documentation is up-to-date.
- When your branch is ready, open a new pull request via GitHub. The repo PR template will guide you toward describing your contribution in a format that is ultimately suitable for a structured conventional commit (used to automatically advance published package versions).
- Every PR must pass CI checks and receive at least one 👍 to be considered for merge.
- Garden maintainers will manage the squashed merge to the main branch, using your PR title and description as the scope, description, and body for a conventional commit.
By contributing to Garden, you agree that your contributions will be licensed under the Apache License, Version 2.0.