如何在使用Next.js完成的外部项目中使用Storybook组件(和Lerna)?

我刚刚创建了我的Storybook组件库(ES6等)。它被构造为一个Lerna项目(所有组件都隔离在package /文件夹中)。但是,这是一个私人仓库,没有真正的发布功能,因此,我认为Lerna将无法使用私人(免费)帐户。我已经将故事书存储库原样推送到了我的Bitbucket。

现在,我想使用主要应用程序中的组件的故事书库,它是基于Next.js构建的不同存储库(在Bitbucket上)。

我试图按如下方式导入各个故事书组件

import MyComponent from 'storybook-repo/packages/my-component/my-component';

但显然不起作用,返回此错误:

Module parse failed: Unexpected token (8:9)
You may need an appropriate loader to handle this file type.

MyComponent因为是jsx文件。我希望Next.js转换导入的模块,但事实并非如此。

我的问题是:

  1. 我的胆量说,git+ssh://git@bitbucket.org/myusername/storybook-repo.git从中导入整个故事书package.json不是一个好主意。有更好的解决方案吗?

  2. Lerna仅适用于我可以发布我的软件包的公共/专业软件仓库吗?

  3. 为什么Next.js不转译导入的jsx模块?此时,此过程如何工作?我应该从远程存储库中移植故事书组件,还是从主应用程序中完成工作?

谢谢

村村2020/04/07 11:48:47

在我的上一个项目中,我们使用Rollup.js来创建仅是我们在Storybook中开发的组件的dist版本。我们的组件位于src/components目录中。我们index.js使用内部脚手架工具对组件进行维护我们将dist文件夹作为私有范围的NPM软件包发布,然后从那里拉入我们的组件。

对于本地开发,我们使用Webpack别名来检查当前环境,并拉出已发布的NPM软件包或直接从storybook/dist我们要构建文件夹中拉出

有建设这个伟大的指南在这里希望这能为您指明正确的方向。作为替代方案,我相信您可以摆弄next.config.js重写Webpack的配置,并确保通过同一Webpack吸收外部导入,但是,您还必须.babelrc在Storybook一侧添加一些规则以确保它被忽略在那里。我们发现发布一个软件包并捆绑所有内容会更容易。