Storybook — это инструмент для разработки UI-компонентов (интерфейсных компонентов) в изоляции от основного приложения. Он позволяет создавать, тестировать и документировать компоненты независимо от бизнес-логики или маршрутизации.
Изолированная разработка компонентов
Позволяет работать с компонентами отдельно от приложения, что ускоряет процесс разработки.
Документирование
Автоматически генерирует документацию для компонентов, включая пропсы (props), примеры использования и описание.
Визуальное тестирование
Позволяет быстро находить визуальные баги при изменении компонентов.
Надстройки (addons)
Поддерживает плагины для:
@storybook/addon-controls
)@storybook/addon-a11y
)@storybook/testing-library
)import Button from './Button';
export default {
title: 'UI/Button', // Группа/Название
component: Button,
};
export const Primary = () => <Button variant="primary">Click</Button>;
export const Disabled = () => <Button disabled>Disabled</Button>;
Запустите в терминале:
npx storybook@latest init
Это автоматически:
@storybook/react
и необходимые зависимости.storybook
с конфигамиpackage.json
Файл .storybook/main.js
:
module.exports = {
stories: ['../src/**/*.stories.@(js|jsx|ts|tsx)'],
addons: ['@storybook/addon-essentials'],
framework: '@storybook/react',
};
npm run storybook
Откроется интерфейс на http://localhost:6006
Кастомизация вебпака (webpack customization)
Через .storybook/main.js
:
webpackFinal: async (config) => {
config.resolve.alias['@'] = path.resolve(__dirname, '../src');
return config;
}
Глобальные декораторы (для Redux/Context)
В .storybook/preview.js
:
import { Provider } from 'react-redux';
import store from '../src/store';
export const decorators = [
(Story) => (
<Provider store={store}>
<Story />
</Provider>
),
];
Storybook — мощный инструмент для разработки компонентных UI-библиотек. Он особенно полезен в больших проектах с дизайн-системами, позволяя поддерживать единообразие компонентов и ускоряя разработку через изоляцию.