Welcome! We are really excited that you are interested in contributing to Histoire. Before submitting your contribution, please make sure to take a moment and read through the following guide:
Contributing doesn't necessarily mean you need to write code and open Pull Requests. There are many other ways you can help the project!
- Try the latest version of Histoire and report bugs.
- Discuss your ideas with the community on the discussion board.
- Answer to other people's questions.
- Report typos or issues of the docs.
- Support us financially on GitHub sponsors:
- Do you like Histoire? Spread the love on social media!
This mono-repo contains the following packages:
Package | Description |
---|---|
histoire | Main package |
@histoire/app | Pre-bundled UI |
@histoire/controls | Builtin controls components |
@histoire/controls-stories | Stories for builtin controls |
@histoire/plugin-vue | Vue 3 integration |
@histoire/plugin-vue2 | Vue 2 integration |
@histoire/plugin-nuxt | Nuxt 3 integration |
@histoire/plugin-percy | Visual regression testing with Percy |
@histoire/plugin-screenshot | Visual regression testing with simple screenshots |
@histoire/shared | Shared utilities |
@histoire/vendors | Pre-bundled dependencies |
- Install dependencies with pnpm:
pnpm i
- Compile Histoire in watch mode:
pnpm run watch
Wait before the initial build is done and the terminal output stabilizes.
If you do not intend to make changes to the histoire main packages, you can use this script instead:
pnpm run build
- In the
examples
directory, you can runstory:dev
scripts to start Histoire on an example project.
cd examples/vue3
pnpm run story:dev
For the
vue3
example, you can use thepnpm run dev:hst
command to start the app with a special configuration enabling HMR for the Histoire UI. Especially useful when working on the UI!
- After you have tested your changes in development mode, build the story apps and test them using the
story:build
andstory:preview
scripts:
pnpm run story:build
pnpm run story:preview
We use ESLint to check for code quality and style.
# Root of the mono-repo
pnpm run lint
We use Peeky to run unit tests on workspaces listed under the packages
folder.
For developping:
# Root of the mono-repo
pnpm run test:open
For running all tests in the terminal:
# Root of the mono-repo
pnpm run test
Examples projects found in the examples
can also have tests. To run them all:
# Root of the mono-repo
pnpm run test:examples
In an example project, you can run the following script if there are tests:
cd examples/vue3
pnpm run test:examples
To develop new tests in an example project, you can use:
cd examples/vue3
pnpm run story:dev
# In another terminal
pnpm run test:dev
-
Checkout a topic branch from a base branch, e.g.
main
, and merge back against that branch. -
If adding a new feature:
- Add accompanying test case.
- Provide a convincing reason to add this feature. Ideally, you should open a suggestion issue first and have it approved before working on it.
-
If fixing bug:
- If you are resolving a special issue, add
(fix #xxxx[,#xxxx])
(#xxxx is the issue id) in your PR title for a better release log, e.g.fix: update entities encoding/decoding (fix #3899)
. - Provide a detailed description of the bug in the PR. Live demo preferred.
- Add appropriate test coverage if applicable.
- If you are resolving a special issue, add
-
It's OK to have multiple small commits as you work on the PR - GitHub can automatically squash them before merging.
-
Make sure to follow the code style of the project.
-
Make sure tests pass!
-
Commit messages must follow the commit message convention so that changelogs can be automatically generated.