@storybook/react
is a tool we can use to facilitate development of React
components by viewing them in isolation in an environment conducive to rapid
iteration and low-cost experimentation. @exemplar/storybook
wraps
@storybook/react
in a way that eliminates all storybook
-specific boilerplate
from your code base. Without @exemplar/storybook
, your examples tend to have a
lot of tangentially related boilerplate code.
For a team maintaining a large set of react
components, @exemplar/storybook
achieves 3 goals:
require
/ import
usage: prefer import xx from 'your-module'
vs. a
relative path such as import xx from '../../path/to/component'
;Install the tool, if you haven’t already:
npm install --save-dev @exemplar/storybook
Setup an examples/
directory that has the following structure
examples/
*.js # Examples that run on all platforms
web/*.js # Examples that run on Web only
.setup/ # optionally augment the build with any setup that you need
aliases.json # Any webpack aliases
shared.scss # Global styles
Each of these examples (present as .js
files) take the form of a regular
react
component, making them extremely copy-and-paste-able directly into your
application.
import React from 'react';
import { Button } from '@your-very-own/design-system';
export default () => (
<Button>
Press Me!
</Button>
);
Add the following script to your package.json
:
{
"scripts": {
"storybook": "start-storybook -p 9001 -c ./node_modules/@exemplar/storybook"
}
}
That’s it! Here is @exemplar/storybook
showing all of GoDaddy’s primary action
buttons at once:
npm run storybook
Right now this implementation commits to styling with .scss
. Future work will
work will be done to support more than .scss
out of the box.
As of right now storybook-native
is still evolving. There is currently ongoing
work in the form of this PR, but it’s not quite stable enough (yet) to work
consistently on our internal react-native
use cases. We’re eagerly awaiting
the results!
Cover photo by Alfons Morales on Unsplash