reactjs - 在演示页面中安装和使用 Storybook
问题描述
我正在使用 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 文档,它建议通过运行来安装 Storybook npx sb init
。我试过了,但问题是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)',
],
这指定了哪些文件应该被解释为故事,在我们的例子中,它将从文件夹中*.stories.mdx
递归地加载js
//// 。jsx
ts
tsx
demo
另请注意,该stories
文件夹只是 Storybook 创建的示例文件夹,您可以安全地删除它。故事可以在 TypeScript 处理的任何目录中,只要它与.storybook/main.js
.
您甚至可以在一个项目中拥有多个具有多个配置的故事书,但这可能不是您所追求的。不过,以防万一,命令将是start-storybook -p 6006 -c path/to/config/.storybook
推荐阅读
- javascript - 我想按照图片中的描述重新格式化 JSON 数组
- spring - 如何让spring boot从kubernetes的挂载卷中加载属性?
- kubernetes - Kubernetes 中工作节点之间的数据如何流动?
- azure-cli - 使 az cli synapse 恢复/暂停容错
- ruby-on-rails - devise_token_auth ruby on rails 禁用密码验证
- node.js - 如何编写 Postman 测试以使用 Newman 将响应正文与外部 JSON/CSV 文件进行比较?
- python-3.x - 在 jupyter 中找不到模块(folium)
- php - Laravel 中的 3 个表关系
- javascript - 发布请求不起作用,声称正文数据不存在
- python - 尝试使用 conda 安装 unrar 时出现 PackagesNotFoundError