This is an official React design system starter powered by Turborepo. Versioning and package publishing is handled by Changesets and fully automated with GitHub Actions.
This Turborepo includes the following:
docs
: A placeholder documentation site powered by Next.js@ehtest/core
: core React components@ehtest/utils
: shared React utilities@ehtest/tsconfig
: sharedtsconfig.json
s used throughout the monorepoeslint-config-ehtest
: ESLint preset
Each package and app is 100% TypeScript.
This Turborepo has some additional tools already setup for you:
- TypeScript for static type checking
- ESLint for code linting
- Prettier for code formatting
Run the following command:
npx degit vercel/turborepo/examples/with-changesets with-changesets
cd with-changesets
yarn install
git init . && git add . && git commit -m "Init"
yarn build
- Build all packages and the docs siteyarn dev
- Develop all packages and the docs siteyarn lint
- Lint all packagesyarn changeset
- Generate a changesetyarn clean
- Clean up allnode_modules
anddist
folders (runs each package's clean script)
The npm organization scope for this design system starter is @ehtest
. To change this, it's a bit manual at the moment, but you'll need to do the following:
- Rename folders in
packages/*
to replaceehtest
with your desired scope - Search and replace
ehtest
with your desired scope - Re-run
yarn install
Package publishing has been configured using Changesets. Please review their documentation to familiarize yourself with the workflow.
This example comes with automated npm releases setup in a GitHub Action. To get this working, you will need to create an NPM_TOKEN
and GITHUB_TOKEN
in your repository settings. You should also install the Changesets bot on your GitHub repository as well.
For more information about this automation, refer to the official changesets documentation
If you want to publish package to the public npm registry and make them publicly available, this is already setup.
To publish packages to a private npm organization scope, remove the following from each of the package.json
's
- "publishConfig": {
- "access": "public"
- },