Storybook 擴充功能 HTML
這個 Storybook 的擴充功能新增了一個頁籤,用於顯示每個 story 編譯後的 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 面板。這將在您的 story 中隱藏並停用 HTML 擴充功能。
html: {
disable: true, // default: false
}