在 react-native 中提供 storybook 源代码,以便在 storybook web 服务器上显示

在 Github 上查看

react-native-storysource-transformer 构建状态

为 react-native 启用 storybook storysource 附加组件。

目的

此包使 storysource 附加组件与 react-native 兼容,而 react-native 在 默认情况下 不支持它。

Storybook Screenshot

安装和配置

步骤 1:安装 react-native-storysource-transformer 库

yarn add react-native-storysource-transformer --dev

步骤 2:配置 react native 包管理器

对于 React Native v0.58 或更高版本

将您的 metro.config.js 文件与以下配置合并

metro.config.js:

module.exports = {
  transformer: {
    babelTransformerPath: require.resolve(
      "react-native-storysource-transformer"
    ),
  },
};

如果您已经使用另一个转换器,您可以像这样引用一个中间文件
metro.customTransformer.js :

const svgTransformer = require("react-native-svg-transformer");
const storyTransformer = require("react-native-storysource-transformer");

module.exports.transform = function (options) {
  if (options.filename.endsWith(".svg")) {
    return svgTransformer.transform(options);
  } else {
    return storyTransformer.transform(options);
  }
};

步骤 3:安装 storysource 附加组件

安装 storysource 附加组件和 source-loader 依赖项

yarn add @storybook/addon-storysource --dev
yarn add @storybook/source-loader --dev

在您的 storybook/addons.js 文件中添加此行

import "@storybook/addon-storysource/register";

步骤 4(可选):自定义配置

react-native-storysource-transformer 由项目 package.json 中的 react-native-storysource-transformer 部分控制。

选项

设置 类型 描述 默认值
filePatterns string[] 一个匹配您的故事文件的 blob 数组。 ["**/*.stories.{js,ts}{x,}", "**/stories/index.{js,ts}{x,}"] 将匹配所有名为 *.stories.js/jsx/ts/tsx 的文件以及默认的 index 故事文件
storyMatcher(高级) string 用于解析故事的正则表达式。如果您的故事没有使用通常的约定编写,则可能需要它:storiesOf('Welcome', module).add(... "(storiesOf.*?\\(.*?module\\))"

示例

以下示例将处理所有以 .stories.js.stories.jsx 结尾的故事。

package.json
{
  "name": "AwesomeProject",
  "config": {
    "react-native-storysource-transformer": {
      "filePatterns": ["**/*.stories.js", "**/*.stories.jsx"]
    }
  }
}

如果您更改了这些选项中的任何一个,您可能需要运行 yarn react-native start --reset-cache

开始

照常运行您的 storybook 服务器和 storybook 应用程序

yarn storybook
react-native run-ios