故事书.js。如何将组件编译为 ES5 lib

Posted

技术标签:

【中文标题】故事书.js。如何将组件编译为 ES5 lib【英文标题】:Storybook.js. How to compile components as a ES5 lib 【发布时间】:2020-08-06 18:49:46 【问题描述】:

我正在使用 Storybook 单独开发和测试我的组件。我使用 typescript、babel 等。 一切都像魅力一样。 现在我想将我的组件编译为 ES5 库 (commonJS) 并将其提供给我的其他外部项目。

基本上故事书构建命令将整个故事书作为静态网站,但我需要编译的组件库。

这里的主要问题是故事书在 node_modules 中有一些依赖关系,它们是 ES6 模块,所以 babel 配置为在 Typescript 处理我自己的组件时继续它们。 所以我不能只使用tsc 等来编译我的组件,例如components 文件夹,因为打字稿不会从node_modules 获取和编译依赖项。它们应该编译成 ES5,否则我的任何外部项目,需要使用已编译的故事书组件,将无法处理它们。

另外,webpack 有它自己的别名,所以在部署过程中应该使用整个 tools zoo。 在 Storybook 的情况下怎么做? 我是否应该将 webpack 等手动安装到故事书中并配置与故事书分开的部署过程? 我可以只使用故事书的 webpack 吗? (因为我已经用 Babel 和 Typescript 配置了它)。

感谢您的帮助!

【问题讨论】:

【参考方案1】:

这里的另一种方法 - 使用 babel-cli 并且仅将您的组件转换为一组文件

命令示例:

npx babel src -d lib/ --copy-files

Babel CLI 的链接:https://babeljs.io/docs/en/babel-cli AFAIK,配置可以包括打字稿插件

【讨论】:

以上是关于故事书.js。如何将组件编译为 ES5 lib的主要内容,如果未能解决你的问题,请参考以下文章

如何将组件导出到故事书

故事书:对象不是 Twig 组件上的函数

如何将 react-relay 组件添加到故事书中?

使用 babel js 将 async/await 编译为 es5

如何将故事书嵌套的 storiesOf api 转换为 CSF 格式

在故事书中使用材质 UI 组件