加入直播会议:周四,美国东部时间上午 11 点,Storybook 9 版本发布和 AMA

将 stencil.js JsonDoc 转换为 storybook ArgTypes

在 Github 上查看

storybook-addon-docs-stencil

将源自 stencil 输出目标 docs-json 的 stencil.js 文档 json 转换为 storybook ArgTypes

激活此插件后

  • Storybook 将为属性渲染基本控件 Controls
  • Storybook 将自动生成以下文档:Props、Events、Methods、Slots、Shadow Parts 和 Custom Properties。
  • Storybook 文档页面将包含 stencil 组件文档 (readme.md 或内联文档)

安装

npm i -D @astrouxds/storybook-addon-docs-stencil

用法

配置 stencil 在构建时生成 docs-json。

// stencil.config.ts

import { Config } from '@stencil/core';

export const config: Config = {
  outputTargets: [
    {
      type: 'docs-json',
      file: 'path/to/docs.json'
    }
  ]
};

配置 Storybook

//.storybook/main.js

module.exports = {
  addons: [
    '@storybook/addon-essentials',
    '@astrouxds/storybook-addon-docs-stencil'
  ]
}
//.storybook/preview.js

import { setStencilDocJson } from '@astrouxds/storybook-addon-docs-stencil';
import docJson from 'path/to/docs.json';
if(docJson) setStencilDocJson(docJson);

export const parameters = {
  controls: { hideNoControlsWarning: true }
}

组件文档

readme.md

如果 stencil 尚未创建,请创建 src/components/my-component/readme.md 如果不存在行 <!-- Auto Generated Below -->,stencil 将忽略此文件。

Everything above this line will be included in storybook

<!-- Auto Generated Below -->

内联文档

// src/components/my-component/my-component.tsx`

/**
 * Everything written here will be included, if readme.md is not present.
 */
@Component({
  tag: 'my-component',
  styleUrl: 'my-component.css',
  shadow: true,
})

故障排除

当使用 @storybook/web-components 时

@storybook/web-components 覆盖了此模块的预设配置。您可以使用此预览配置来解决此问题。

//.storybook/preview.js

import { extractArgTypes, extractComponentDescription, setStencilDocJson } from '@astrouxds/storybook-addon-docs-stencil';

export const parameters = {
  ...
  docs: {
    extractArgTypes,
    extractComponentDescription,
  },
};
在您的 stories 中使用您的组件
// your-story.ts

export default {
  title: 'My Component',
  component: 'my-component',
};
由以下人员制作
  • jacob-rocket
    jacob-rocket
  • dmcalester
    dmcalester
  • joel_perez
    joel_perez
  • rocketmark
    rocketmark
  • sasha-rocket
    sasha-rocket