[英]Install and use Storybook in a demo page
我正在 TypeScript 中創建一個個人項目。 它應該是一個導出 React 組件和 TypeScript 函數的庫。 因此,這個想法是將來在 npm 上發布這個庫。 項目中還有一個演示頁面,這是我想使用 Storybook 測試 React 組件的地方。
這是項目的結構:
.
├── demo/ # demo page
│ └── Home.tsx # where I would like to use Storybook
│ └── index.html
│ └── index.tss
│ └── style.css
├── dist/ # distributable version of app built using Parcel
├── node_modules/ # npm managed libraries
├── src/ # project source code
│ └── lib/ # folder for your library
│ └── myFuncion.ts # function to export
│ └── MyComponent.tsx # react component to export
│ └── index.ts # app entry point (it simply contains the exports of myFunction and myComponent)
├── .eslintrc.js
├── .gitignore
├── package.json
├── tsconfig.json
├── ...
我已閱讀 Storybook 文檔,它建議通過運行npx sb init
來安裝 Storybook。 我試過了,但問題是stories
放在項目 src 目錄中,而不是在演示頁面中:
.
├── demo/ # demo page
│ └── Home.tsx # where I would like to use Storybook
│ └── index.html
│ └── index.tss
│ └── style.css
├── dist/ # distributable version of app built using Parcel
├── node_modules/ # npm managed libraries
├── src/ # project source code
│ └── lib/ # folder for your library
│ └── myFuncion.ts # function to export
│ └── MyComponent.tsx # react component to export
│ └── stories/ # Storybook <<---
│ └── index.ts # app entry point (it simply contains the exports of myFunction and myComponent)
├── .eslintrc.js
├── .gitignore
├── package.json
├── tsconfig.json
├── ...
創建的故事書腳本是這樣的:
"scripts": {
"storybook": "start-storybook -p 6006",
"build-storybook": "build-storybook"
},
但我想要類似的東西:
"scripts": {
"storybook:demo": "start-storybook -p 6006",
"build-storybook:demo": "build-storybook"
},
那么我怎樣才能只在演示頁面上安裝和使用 Storybook?
看起來您最終要嘗試擁有多個源目錄。 TypeScript 和 Storybook 都支持這一點,它只需要一些配置。
tsconfig.json
應該將include
選項設置為:
"include": [ "src", "demo" ]
這告訴 TypeScript(或其 Babel 加載器)編譯src
和demo
中的文件。
.storybook/main.js
應該將stories
選項設置為:
stories: [
'../demo/**/*.stories.mdx',
'../demo/**/*.stories.@(js|jsx|ts|tsx)',
],
這指定了哪些文件應該被解釋為故事,在我們的例子中,它將從demo
文件夾中遞歸加載*.stories.mdx
/ js
/ jsx
/ ts
/ tsx
。
另請注意, stories
文件夾只是 Storybook 創建的示例文件夾,您可以安全地刪除它。 故事可以位於 TypeScript 處理的任何目錄中,只要它與.storybook/main.js
中指定的模式匹配即可。
您甚至可以在一個項目中擁有多個具有多個配置的故事書,但這可能不是您所追求的。 不過,以防萬一,命令將是start-storybook -p 6006 -c path/to/config/.storybook
如果我理解正確,您想構建一個組件庫並為您的組件提供演示應用程序。
我認為沒有辦法在現有應用程序中使用 Storybook。 這意味着您必須構建您的演示應用程序並使用 Storybook 中的一些組件來展示您的應用程序中的案例組件。 據我所知,這是不可能的。 可能是這樣,但它似乎很復雜,我不知道這方面的任何文檔。
我認為 Storybook 應用程序是(或應該是)您的演示應用程序。 Storybook 可以渲染mdx
文件,因此您可以向其中添加任何內容並獲得演示應用程序。
你可以嘗試什么:
demo
文件夾Home.tsx
遷移到mdx
文件在某種程度上,您可以更改 Storybook 的樣式並“使其成為您自己的” ,這可以成為您的演示應用程序。
在我發現 Storybook 之前,我使用了一個帶有react-live的自制組件展示案例應用程序。 可能想看看它,但我認為 Storybook 更好,更容易維護。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.