Welcome to Shesha v3.0 Storybook
Documentation is here
This is the place where all of the React
web components for Shesha Web version 3 are documented!.
This boilerplate was inspired by this library
Code Structure
@shesha/react-components/
next-example/
.storybook
assets
pages
server
stories
typings
src/
components/
models/
styles/
typings/
utils/
index.tsx
styles.scss
typings.d.ts
.babelrc
.editorconfig
.eslintignore
.eslintrc
.gitignore
.travis.yml
package-lock.json
package.json
README.md
rollup.config.js
tsconfig.json
tsconfig.test.json
tslint.json
How to contribute
To contribute, you need to create your new component under src/components/componentName
. Make sure that every componet is then imported and exporteed in the src/components/componentName/index.tsx
file.
Creating the component
Each component folder should be the name of the component in camelCase
. The component name should be in PascalCase
. Inside the folder, there should be at least 2
files, namely, index.tsx
, which will contain the component and styles.scss
, which will be containing the styles for that component
. Below is an example:
@shesha/react-components/
src/
components/
componentName
index.tsx
styles.scss.tsx
Development
Local development is broken into two parts (ideally using two tabs).
First, run rollup to watch your src/
module and automatically recompile it into dist/
whenever you make changes.
npm start # runs rollup with watch flag
The second part will be running the storybook
, under next-example
that's linked to the local version of your module.
# (in another tab)
cd next-example
npm run storybook # runs storybook server
Now, anytime you make a change to your library in src/ or to the example app's example/src, create-react-app will live-reload your local dev server so you can iterate on your component in real-time.
To import your componate named MyComponent
, in your stories
(or in your nextjs
application, under next-example
) you just write a statement like below
import { MyComponent } from '@shesha/react-components';
Versioning and publishing
Versioning
We use generate changelog to generate changelog
s from git
commands. Please read this article on version semantic versioning.
There are scripts
in place to assist you with versioning. They are the following:
npm run changelog:major
npm run changelog:minor
npm run changelog:patch
You will run an appropriate one based on the changes you made. This will make sure that the version
is changed in the package.json
file and the log
is added in the CHANGELOG.md
file. You do not need to manually do that.
Publishing
In order to publish to npm
you must have first signed in with the credetials to our private npm
registry. To use local server you need to change registry using following command:
npm set registry http://npm.boxfusion.co.za:4873/';
Sinopia falls back to the global server if the package doesn't exists on the local server
From there, you can login to npm using the command: npm login
To publish, the command is
npm publish
This builds cjs
and es
versions of your module to dist/
and then publishes your module to npm
.
Make sure that any npm
modules you want as peer dependencies are properly marked as peerDependencies
in package.json
. The rollup config will automatically recognize them as peers and not try to bundle them in your module.
TODOs