What is @storybook/react-webpack5?
The @storybook/react-webpack5 npm package is an addon for Storybook, a tool for developing UI components in isolation for React, which allows it to work with Webpack 5. It provides a streamlined development environment for building and testing UI components without needing to embed them in an application. It also includes features for visual testing, documentation, and showcasing components interactively.
What are @storybook/react-webpack5's main functionalities?
Developing UI components in isolation
Allows developers to create stories for their components, which are visual representations of different states of UI components.
import { storiesOf } from '@storybook/react';
import MyButton from './MyButton';
storiesOf('Button', module)
.add('with text', () => <MyButton>Hello Button</MyButton>)
.add('with emoji', () => <MyButton>😀 😎 👍 💯</MyButton>);
Custom Webpack configuration
Enables developers to customize the Webpack configuration used by Storybook to match the needs of their project.
module.exports = {
stories: ['../src/**/*.stories.@(js|jsx|ts|tsx)'],
addons: ['@storybook/addon-links', '@storybook/addon-essentials'],
webpackFinal: async (config, { configType }) => {
// Custom Webpack configuration goes here
return config;
}
};
Interactive controls to manipulate component states
Provides a set of tools to create interactive controls for manipulating the props of the components, allowing for dynamic testing of different states.
import { ComponentStory, ComponentMeta } from '@storybook/react';
import MyButton from './MyButton';
export default {
title: 'Button',
component: MyButton,
argTypes: { backgroundColor: { control: 'color' } },
} as ComponentMeta<typeof MyButton>;
const Template: ComponentStory<typeof MyButton> = (args) => <MyButton {...args} />;
export const Primary = Template.bind({});
Primary.args = {
primary: true,
label: 'Button',
};
Other packages similar to @storybook/react-webpack5
@storybook/html
Similar to @storybook/react-webpack5, but designed for building UI components in isolation for HTML instead of React. It allows for the development of HTML snippets and does not require a React environment.
@storybook/vue
This package is for Vue.js developers and offers the same Storybook functionality as @storybook/react-webpack5 but tailored for Vue components. It allows developers to create stories for Vue components and test them in isolation.
@storybook/angular
This package is a Storybook addon for Angular. It provides the same isolation and component development environment as @storybook/react-webpack5, but it is specifically designed to work with Angular components.
Storybook for React
Storybook for React is a UI development environment for your React components.
With it, you can visualize different states of your UI components and develop them interactively.
Storybook runs outside of your app.
So you can develop UI components in isolation without worrying about app specific dependencies and requirements.
Getting Started
cd my-react-app
npx sb init
For more information visit: storybook.js.org
Storybook also comes with a lot of addons and a great API to customize as you wish.
You can also build a static version of your Storybook and deploy it anywhere you want.
Here are some featured storybooks that you can reference to see how Storybook works:
Create React App
Support for Create React App is handled by @storybook/preset-create-react-app
.
This preset enables support for all Create React App features, including Sass/SCSS and TypeScript.
If you're working on an app that was initialized manually (i.e., without the use of Create React App), ensure that your app has react-dom included as a dependency. Failing to do so can lead to unforeseen issues with Storybook and your project.
Typescript
@storybook/react
is now exporting its own types to use with Typescript.
You don't need to have @types/storybook__react
installed anymore if it was your case.
But you probably also need to use types from @types/node @types/react
.
Docs