React TypeScript NPM Boilerplate
This is a boilerplate project for writing React NPM modules (or component libraries) in TypeScript. The code is compiled and published to NPM via CircleCI v2 Workflows and Github Releases.
This boilderplate includes a Storybook to visualize and demonstrate your components. The Storybook is automatically deployed to Zeit once configured (see the Storybook for this template here). This allows you to test each PR visually and in isolation.
Features
Usage
- Fork or clone this repository
- If using VS Code, install recommended extensions
yarn install
yarn start
- Create your components
- Export your components in
index.ts
- Publish your module by creating a new GitHub Release (with a
v.*.*.*
version number). CircleCI will automatically build and deploy.
yarn
Scripts
test
- run unit teststest:cover
- run unit tests with test coveragelint
- check eslint
and prettier
ruleslint:fix
- autofix unmet eslint
and prettier
ruleslocal-pack
- create the tgz
package locally to test consumers without publishingstart
- start the storybook server and automatically open in browsercompile
- standard typescript compile tsc
now-build
- used by Zeit when building your storybook for deployment (do not rename this script)
Before each commit, husky
and lint-staged
will automatically lint your staged ts, tsx, js, jsx
files.
Configuration
Circle CI
You need to configure one environment variable in CircleCI, for publishing to NPM.
Zeit
You need to authorize Zeit with your GitHub account to enable automatic deployments. Once configured, you can enable Zeit to deploy any repository that contains a now.json
file.
Dependabot (optional)
I recommend enabling Dependabot on this repository to keep your dependencies up to date. Each dependency update will be created as a PR, which will automatically validate via Circle CI and you can manually validate via Zeit.
License
This code is released under the MIT license - feel free to use it.
Contribute
Please contribute any improvements or fixes to this project!
To make sure you have a pleasant experience, please read the code of conduct. It outlines core values and beliefs and will make working together a happier experience.