Storybook Addon HTML
这个 Storybook 附加组件添加了一个选项卡,用于显示每个故事的编译后的 HTML。它使用 highlight.js 进行语法高亮。
要求
该附加组件的版本 6 需要 Storybook 8 和 Prettier 3。如果你仍在使用 Storybook 7,可以使用版本 5。
入门
安装附加组件及其依赖项。
使用 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, "");
};
}
你可以通过将 disable
参数设置为 true 来禁用 HTML 面板。这将隐藏并禁用故事中的 HTML 附加组件。
html: {
disable: true, // default: false
}