用於 Monorepos 的 Storybook 套件購物車

在 Github 上檢視

storybook-addon-package-shopping-cart

一個協助安裝多套件專案的 Storybook 擴充套件。

注意:此套件絕不隸屬於 Microsoft 或 Fluent UI。之所以選擇 Fluent UI 作為以下示範,是因為它是一個成熟的單一程式碼庫,其中包含單獨封裝的元件,因此可以為此套件的功能提供良好的展示。

Example

用法

使用以下指令安裝


npm install -D storybook-addon-package-shopping-cart

將以下內容新增至您的 .storybook/main.js 檔案


module.exports = {
  ...,
  addons: [
    ...,
    "storybook-addon-package-shopping-cart"
  ]
};

套件內容判斷

此擴充套件會透過目錄結構判斷目前的套件。最接近的父層 package.json 用於目前啟用的套件。

任何沒有版本欄位或 private: true 的套件都會被此擴充套件忽略。

主題設定

這個外掛程式中的元件預設使用內建的 storybook 主題色彩值,但您也可以透過提供自訂 storybook 主題來自訂它們

// .storybook/manager.js
import { addons } from '@storybook/addons';
import { create } from '@storybook/theming';

const theme = create({
    base: 'dark',
    appContentBg: 'white',
    brandTitle: 'mono-repo-tools',
    packageShoppingCart: {
      tooltip: {
        /* Default: props.theme.background.app */
        backgroundColor: 'blue',
        /* Default: props.theme.color.defaultText */
        textColor: 'green'
      }
      shoppingCart: {
        badge: {
          /* Default: props.theme.color.primary */
          bgColor: 'blue',
          /* Default: props.theme.color.defaultText */
          textColor: 'red'
        },
        addButton: {
          /* Default: props.theme.color.positive */
          bgColor: 'blue',
          /* Default: props.theme.color.defaultText */
          textColor: 'green'
        },
        removeButton: {
          /* Default: props.theme.color.negative */
          bgColor: 'green',
          /* Default: props.theme.color.defaultText */
          textColor: 'blue'
        },
        disabledButton: {
          /* Default: props.theme.color.tertiary */
          bgColor: 'green',
          /* Default: props.theme.color.inverseText */
          textColor: 'blue'
        }
      },
      quickAddButton: {
        /* Default: props.theme.color.positive */
        addIconColor: 'blue',
        /* Default: props.theme.color.negative */
        removeIconColor: 'green'
      }
    }
})

addons.setConfig({
  theme
});

設定安裝指令碼

預設情況下,購物車會設定為安裝最新版本的套件。您可以透過設定全域 storybook 參數來設定安裝的版本。請參閱下方安裝確切版本的範例

// .storybook/preview.js
export const parameters = {
  packageShoppingCart: {
      determineVersionToInstall: (pkg) => {
        return `${pkg.name}@${pkg.version}`
      }
    }
};

剖析 .md 檔案

Webpack 5

如果您將 storybook 與 webpack 5 一起使用,則 markdown 檔案應該會自動設定為進行剖析。

如果由於某種原因無法運作,您可以透過以下方式將它們手動設定為來源資產

  webpackFinal: (config) => {
    ...
    config.module.rules.push({
      test: /\.md$/,
      type: 'asset/source',
    })
    return config;
  },

Webpack 4

如果您將 storybook 與 webpack 4 一起使用,則您會希望透過以下方式將 markdown 檔案設定為透過 raw-loader 剖析

  webpackFinal: (config) => {
    ...
    config.module.rules.push({
      test: /\.md$/,
      use: 'raw-loader'
    })
    return config;
  },

停用故事的內容剖析

如果您想停用故事的套件內容載入,可以將 parameters.packageContext=null 傳遞至元件的故事


export default: {
  parameters: {
    packageContext: null
  }
}

storybook-package-context-loader 選項

此擴充套件使用 storybook-package-context-loader 來判斷套件內容。預設情況下,enableReadme & enableChangelog 會被停用,以盡可能縮減建置大小。如果您想要啟用它們,可以將選項新增至套件,方法如下

module.exports = {
  ...,
  addons: [
    ...,
    {
      name: "storybook-addon-package-shopping-cart",
      options: {
        packageContextLoaderOptions: {
          enableReadme: true,
          enableChangelog: true
        }
      }
    }
  ]
};