storybook **功能请求:从builder-vite中移除express依赖**

qoefvg9y  于 2个月前  发布在  其他
关注(0)|答案(5)|浏览(55)

你的功能请求是否与问题相关?请描述

Vite提供了开发和预览服务器。Storybook不使用它,而是创建自己的服务器,这增加了不必要的依赖。

描述你希望的解决方案

关闭middlewareModebuilder-vite中,并使用Vite的服务器。builder-vite可以返回服务器。如果需要,webpack构建器可以创建一个express服务器并返回。然后可以将其他中间件添加到返回的服务器中。你可以使用Vite的configureServer钩子向Vite添加中间件。

你考虑过的替代方案是什么?

  • 无响应*

你是否能够协助将这个功能实现?

我无法实现它,但可以就与Vite相关的更改提供建议

其他上下文

  • 无响应*
1qczuiv0

1qczuiv01#

当前的流程如下:

  1. 核心服务器示例化一个Express服务器
  2. 添加一些基本的中间件,如静态处理和CORS(也许还有任何用户提供的中间件,我不确定)
  3. 调用构建器(vite/webpack),将服务器和它们需要的任何中间件传递给它们
  4. 使用最终的中间件列表启动服务器。
    这个建议是关于将服务器示例化的步骤移动到构建器中。对于Vite来说,这意味着我们可以放弃Express内置的Vite服务器,减小我们的包大小,也许还能提高性能(谁知道呢)。对于Webpack来说,这意味着我们将现有的Express服务器示例化移动到Webpack构建器中。
    如果这个建议可行,我喜欢它。
    @shilman @ndelangen有什么想法吗?
bhmjp9jg

bhmjp9jg2#

我一直在考虑进一步将构建器与核心服务器解耦,通过允许它们以自己的方式“托管事物”,然后让核心服务器重新路由流量。
这对于webpack也很有用,我们可能可以使用webpack-dev-server。
这意味着我们在启动时可能会占用多个端口?

oewdyzsn

oewdyzsn3#

我对webpack不太熟悉,但至少对于vite,我认为你可以将核心服务器中间件放在vite服务器中,这样你只需要使用一个端口。

4ngedf3f

4ngedf3f4#

在开发模式下,storybook核心服务器会打开一个与浏览器的websocket连接。我不确定这是否真的是你可以作为中间件做的事情。
如果我们走这条路,我也担心从构建器中出现的服务/中间件错误会表现为storybook错误。
将构建器进一步与核心分离,听起来是一个好方法吗?

ve7v8dk2

ve7v8dk25#

嗯,我不太清楚如何从Vite开发服务器设置websocket。你可能需要一个单独的服务器来处理websocket。但理想情况下,它可以使用Node的内置http模块来实现这一点,这样我们就不需要在Vite的web服务器依赖项之外再添加express依赖项了。

相关问题