Установите react-native-web
, @storybook/react
и babel-plugin-react-native-web
из npm в вашем проекте root.
Добавьте новый каталог конфигурации для Storybook, скажем, ./.storybook-website
. Внутри этого каталога добавьте main.js
. В противном случае это создание будет выполнено мастером установки Storybook.
my-app
├── .storybook-website
│ └── main.js
└── // .... rest of your app
Добавьте следующее содержимое в main. js:
module.exports = {
stories: ['../storybook/stories/index.js'],
webpackFinal: async (config) => {
config.resolve.alias = {
...(config.resolve.alias || {}),
// Transform all direct `react-native` imports to `react-native-web`
'react-native$': 'react-native-web',
// make sure we're rendering output using **web** Storybook not react-native
'@storybook/react-native': '@storybook/react',
// plugin-level react-native-web extensions
'react-native-svg': 'react-native-svg/lib/commonjs/ReactNativeSVG.web',
// ...
};
// mutate babel-loader
config.module.rules[0].use[0].options.plugins.push(['react-native-web', { commonjs: true }]);
// console.dir(config, { depth: null });
return config;
},
};
Обновите путь stories
в main. js в соответствии с расположением существующего root story.
Наконец, добавьте сценарии запуска в ваш пакет. json:
"storybook:web": "start-storybook -p 6006 --config-dir ./.storybook-website",
"storybook-build:web": "build-storybook --config-dir ./.storybook-website --output-dir dist-storybook-website --quiet"
Presto! Запустите, используя yarn storybook:web
. Это запустит сервер рассказов storybook, открыв браузер, показывающий, что вы обычно видите в эмуляторе устройства.