Hi! We are really excited that you are interested in contributing to TutorialKit. Before submitting your contribution, please make sure to take a moment and read through the following guide:
The TutorialKit repo is a monorepo using pnpm workspaces. The package manager used to install and link dependencies must be pnpm. Package manager versioning is handled by packageManager field that's supported by Node's Corepack and other tools.
To develop and test packages:
- Clone this repository and navigate into the cloned directory.
git clone https://github.com/stackblitz/tutorialkit
cd tutorialkit
-
Run
pnpm installin project's root folder -
Run
pnpm run buildto build sources -
Run
pnpm run devto build sources in watch mode
- Development environment starts in http://localhost:4321/
- You can use
TUTORIALKIT_VITE_INSPECTenvironment variable to enablevite-plugin-inspectduring deveplopment.
- Run
pnpm run testto run core tests
The monorepo consists of multiple packages that are grouped into following groups:
These packages will be installed by the end-users in their package.json.
@tutorialkit/astro@tutorialkit/react@tutorialkit/runtime@tutorialkit/theme@tutorialkit/types
The CLI packages are expected to be run by users using npm create tutorial and npx tutorialkit commands.
These should not be added to package.json.
@tutorialkit/clicreate-tutorial
You may wish to test your locally-modified copy of TutorialKit against another package that is using it. For pnpm, after building TutorialKit, you can use pnpm.overrides. Please note that pnpm.overrides must be specified in the root package.json and you must first list the package as a dependency in the root package.json:
{
"pnpm": {
"overrides": {
"@tutorialkit/astro": "file:../tutorialkit/packages/astro",
"@tutorialkit/react": "file:../tutorialkit/packages/react",
"@tutorialkit/runtime": "file:../tutorialkit/packages/runtime",
"@tutorialkit/theme": "file:../tutorialkit/packages/theme",
"@tutorialkit/types": "file:../tutorialkit/packages/types"
}
}
}And re-run pnpm install to link the package.
-
Checkout a topic branch from a base branch, e.g.
main, and merge back against that branch. -
If adding a new feature:
- Provide a convincing reason to add this feature. Ideally, you should open a suggestion issue first and have it approved before working on it.
- Add accompanying test case.
-
If fixing a 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 tests pass!
-
Commit messages must follow the commit message convention so that changelogs can be automatically generated.