加入直播会议:周四,美国东部时间上午 11 点,Storybook 9 发布与问答 (AMA)

HTML 预览

一个 Storybook 插件,用于提取和显示编译后的语法高亮 HTML。从 @whitepace fork,并支持 prettier 3

在 Github 上查看

Storybook HTML 插件

这个 Storybook 插件添加了一个标签页,用于显示每个 story 的编译后 HTML。它使用 highlight.js 进行语法高亮。

Animated preview

快速开始

安装插件及其依赖项。

使用 NPM

npm i --save-dev @whitespace/storybook-addon-html prettier react-syntax-highlighter

使用 Yarn

yarn add -D @whitespace/storybook-addon-html prettier react-syntax-highlighter

注册插件

// .storybook/main.js

module.exports = {
  // ...
  addons: [
    "@whitespace/storybook-addon-html",
    // ...
  ],
};

用法

HTML 使用 Prettier 进行格式化。您可以通过在 `html` 参数中提供一个遵循Prettier API 覆盖格式的对象来覆盖 Prettier 配置(`parser` 和 `plugins` 除外)

// .storybook/preview.js

export const parameters = {
  // ...
  html: {
    prettier: {
      tabWidth: 4,
      useTabs: false,
      htmlWhitespaceSensitivity: "strict",
    },
  },
};

您可以覆盖用于抓取组件 HTML 的包装元素选择器。

export const parameters = {
  html: {
    root: "#my-custom-wrapper", // default: #root
  },
};

有些框架会在 HTML 中放入注释。如果您想移除这些注释,可以使用 `removeComments` 参数。将其设置为 `true` 以移除所有注释,或将其设置为一个与您想移除的注释内容匹配的正则表达式。

export const parameters = {
  html: {
    removeComments: /^\s*remove me\s*$/, // default: false
  },
};

您还可以使用 `removeEmptyComments` 参数仅移除空注释,例如 `<!---->` 和 `<!-- -->`。

export const parameters = {
  html: {
    removeEmptyComments: true, // default: false
  },
};

您可以使用 `highlighter` 参数覆盖语法高亮器的 `showLineNumbers` 和 `wrapLines` 设置

export const parameters = {
  html: {
    highlighter: {
      showLineNumbers: true, // default: false
      wrapLines: false, // default: true
    },
  },
};

另一种隐藏不需要的代码的方法是定义 `transform` 选项。它允许您对输出代码执行任何更改,例如移除框架注入的属性。

html: {
  transform: (code) => {
    // Remove attributes `_nghost` and `ng-reflect` injected by Angular:
    return code.replace(/(?:_nghost|ng-reflect).*?="[\S\s]*?"/g, "");
  };
}
制作方
  • xfinx
    xfinx
支持
    Angular
    Ember
    HTML
    Preact
    React
    React native
    Svelte
    Vue
    Web Components
标签