Read more about why we are focusing on creating component libraries and our approach: https://forum.door43.org/t/component-libraries/396
- Javascript + React (functional components & hooks).
- MaterialUI for UI/UX baseline design components.
- Styleguidist for Playground Documentation.
- Yarn for dependencies, publishing, and deploying.
- Github + NPM + Github Pages for Hosting.
There are many alternatives to each layer referenced here. However, many of the alternatives add a great deal of complexity to the initial setup and long term maintenance which prevents it from being practical.
Once you have this codebase forked and cloned to your local machine, you can start modifying the codebase.
You will need to ensure node.js
and yarn
are already installed.
- Install the npm dependencies with
yarn
. - Run the Styleguide with
yarn start
. - Ensure that the Styleguide is running by visiting
localhost:6060
on your web browser. - Modify the code and documentation in your code editor and check out the Styleguide.
- Update the styleguide.config.js to match your new component names.
- Rename your library:
- the folder
- repo on Github
- Update the
package.json
:- change the
name
anddescription
of your app - change the URLs of your
homepage
andrepository
- change the
- Create an account on
npmjs.org
if you don't have one already.
The scripts in the package.json
file do all of the heavy lifting.
- Commit and push all changes to your github repo.
- Run
yarn publish
:- login to NPM using your credentials if asked.
- enter the new version number using symver.
- wait for the code to be transpiled and published to NPM.
- wait for the styleguide to be built and deployed to GHPages.
- Visit your published library on NPM.
- Visit your deployed Styleguide on GHPages.
You can optionally deploy the styleguide to GHPages without publishing to NPM.
- Run
yarn deploy
- There is a
predeploy
hook that builds the Styleguide. - That's it!
Here's a great writeup that walks you through a slightly different stack: https://itnext.io/how-to-write-your-own-reusable-react-component-library-a57dc7c9a210