Storybook: start-storybook 的 CLI 选项不打开浏览器

创建于 2019-03-20  ·  31评论  ·  资料来源: storybookjs/storybook

您的功能请求是否与问题有关?
我不时重新启动start-storybook出于不同的原因,从更改配置到处理其他事情。 尽管如此,我不会关闭我的故事书浏览器选项卡。 当start-storybook每次启动时都会打开一个新的浏览器选项卡,我的选项卡栏会在其他选项卡之间填满多个故事书选项卡。 这很烦人,会导致混乱和标签清理时间......

我也注意到我的同事做同样的事情导致同样的问题......
我有点惊讶,我找不到不打开浏览器的选项......

我知道,有--ci可以跳过交互式提示而不打开浏览器,但它也会跳过交互式提示。 虽然我还没有看到任何交互提示,但是日常使用 ci 模式感觉不太对劲……

描述您想要的解决方案

start-server --no-open应该像往常一样构建和服务,但不会打开浏览器窗口。

描述你考虑过的替代方案

默认情况下应禁用使用start-storybook打开浏览器,可以使用--open启用。

Webpack 支持--open / --no-open标志,这些标志也被其他内部使用 webpack 的 CLI 镜像。
angular cli 和 vue cli 提供相同的标志,并且 - 就像 webpack-dev-server - 默认情况下不打开浏览器。

从我个人的角度来看,默认情况下打开浏览器是一种固执的不良做法。
但我知道,对此有不同的看法...... :)

您能否协助将该功能变为现实?
是的,我可以深入研究并制作 PR。

附加上下文
有人想要我的浏览器标签栏的屏幕截图吗? ;)

BREAKING CHANGE cli feature request todo

最有用的评论

我个人更喜欢--no-open作为默认值

所有31条评论

嗨@simbo。 AFAIK --ci选项正是这样做的。

您是否提议:

  • 将其重命名或别名为--no-open
  • 默认情况下是true吗?

好像是这样... :)

别名。 我可以将--no-open别名添加到--ci以使该功能更易于发现。 如果在某些时候除了不打开浏览器之外,在 CI 中还有更多我们不想做的事情,我们也可以将其设置为一个单独的标志。

默认值。 至于将默认值更改为--no-open ,我不反对它,尽管这将是一个重大更改,因此我们希望在 6.0.0 中进行。 我在#maintenance Discord 中发布了这个问题,希望我们能达成一些共识。 如果是这样,这是一个微不足道的变化,但可能需要一段时间才能发布。

它可能不一样。 我认为 CRA 以一种优雅的方式处理这个问题并且可以被采用。 主要区别是:

  • 定位已打开的选项卡,而不是每次都打开一个新选项卡。
  • 设置首选浏览器或不打开 -> .env 文件
  • 支持 Chrome 而不是默认浏览器(例如,对于使用与他们开发的浏览器不同的浏览器浏览的人,其中似乎有很多 - 对于大多数人来说,Chrome 仍然是一个更安全的选择)。

相关CRA文件

对我来说,start-storybook 每次重新启动时都会在不同浏览器的背景窗口中打开一个选项卡。

它还跳过交互式提示

此类提示的一个示例是当请求的端口繁忙时,将 Storybook 运行为替代端口。 这有时非常有用。 所以我认为, --no-open不应该是--ci的别名。 它应该只禁用开放

比默认浏览器更喜欢 Chrome

是的,这就是为什么我没有照原样复制这种方法

我个人更喜欢--no-open作为默认值

大家好! 最近这个问题似乎没有太多进展。 如果还有问题、意见或错误,请随时继续讨论。 不幸的是,我们没有时间处理每一个问题。 我们始终对贡献持开放态度,因此如果您愿意提供帮助,请向我们发送请求请求。 非活动问题将在 30 天后关闭。 谢谢!

有人更喜欢当前的行为吗? 如果没有,我想我们可以做出改变

我做。 实际上我有点依赖它作为故事书已经完成构建的迹象

也许我们只提供两个 cli 标志: --open--no-open并允许在storybook.config.js登陆后进行配置。

我也更喜欢 --no-open 标志。 执行当前默认的所有操作,只需跳过打开新浏览器的步骤。 我需要打开现有的窗口,但必须关闭并重新启动该故事书过程(由于配置变化等),所以我不能依靠自动重启。 在这些情况下,我只是不想要一个新的浏览器。

@kutenai你能用--ci吗? 这里的讨论是该行为是否应该成为默认行为。

它对我来说似乎很好用。 也许这个选项只是误导,因为它暗示它比我想要的“更多”,但在实践中,它似乎工作正常。

FWIW,create-react-app 允许您设置BROWSER变量以选择要打开的浏览器,或none以防止打开任何浏览器。 可能值得研究

这里的讨论是该行为是否应该成为默认行为。

你实际上喜欢我的评论,它说它应该是一个单独的选项

你实际上喜欢我的评论,它说它应该是一个单独的选项

是的,我绝对赞成将--no-open设为单独的选项。 我也认为它应该是默认值,这就是我希望在 6.0 上达成共识

默认的--no-open似乎是一个理智的默认设置,老实说,默认情况下打开浏览器窗口似乎主要是为了在会议演讲中使用 flash 并且只会惹恼实际上经常重新加载此命令的开发人员。

目前:
我想我会使用--ci标志。

我还希望默认情况下不打开浏览器,而且我的第一个猜测是我可以像 cra 一样添加BROWSER=none - 所以为了一致性,采用这种方法可能是值得的。 在查看文档之前,我可能不是唯一一个会猜到这一点的人。

我对 react-script 的start行为的理解是,默认情况下它会打开一个选项卡,如果已经打开了一个选项卡,它会重新使用该选项卡。

我喜欢这种行为。 如果我一直在通过代码更改和不可避免的应用程序/webpack 崩溃来处理一个项目,我不必担心使用同一应用程序的新选项卡或翻转标志来打开新​​选项卡使我的窗口膨胀。

我们也应小心,有两个命令在正常的开发工作流程运行的: start-storybook --open上的起步,然后start-storybook [--no-open]在随后的命令。 如果可以重用选项卡,这不是问题,因为我的工作流程将始终为start-storybook --open

我希望 Storybook 的默认设置是打开一个选项卡,但如果你们都决定不打开也没关系。 不过,我希望看到选项卡重用行为得以实现。

@JonKrone不幸的是,据我所知,它只重用了 HMR 上的现有选项卡。 如果我重新运行 CLI,它总是为我打开一个新标签(至少在 Chrome/OSX 上)。

我无法让 --ci 工作。 每次启动时仍会在 chrome 中打开一个新标签。 我在 5.2.1 上使用 vue。

@SebbeJohansson你能仔细检查一下吗? 为我工作

@shilman我刚刚做了一个全新的设置,只是为了确保。
\My-Storybook> npm run storybook --ci
结果在我的主浏览器中出现一个新选项卡。

@SebbeJohansson使用npm run ,您必须在要传递给底层命令的所有参数前添加--

npm run storybook -- --ci

https://docs.npmjs.com/cli/run-script

只要重新启动没有正确针对同一个浏览器窗口/选项卡(和/或重新加载它),默认情况下打开一个新窗口对我来说只是令人沮丧。 我认为这是一种反模式,很多包都在用它来花哨什么的。 当我们知道如何处理 npm 时,我们都能够打开浏览器。

建设后,它显示了2网址一个不错的箱子是我可以在按住Ctrl键单击,和我们大多数人可能使用start-storybook同时开发并重新启动了很多

TLDR:将--ci设为默认值并通过标志在浏览器中打开

重新启动很多

你为什么需要那个? start-storybook应该选择您的更改。 如果没有,这听起来像是一个问题。

我们都有能力打开浏览器

你当然知道怎么打开浏览器,问题是你不知道什么时候打开。 在大型项目中,首次构建可能需要相当长的时间,坐在控制台中等待框可能不是一种选择

你为什么需要那个? start-storybook应该选择您的更改。 如果没有,这听起来像是一个问题。

它应该,并且对大多数更改执行,但不是所有更改。 我目前正在设置一本新的 Storybook 并摆弄它,所以是的,我在几分钟内完成了 10 个标签。

你当然知道_how_打开浏览器,问题是你不知道_when_。 在大型项目中,首次构建可能需要相当长的时间,坐在控制台中等待框可能不是一种选择

我仍然可以打开浏览器,它只会告诉我“连接被拒绝”。 我认为更令人讨厌的是,在一两分钟后突然弹出浏览器,而我正在做其他事情。
框中可能有评论,您可以启用--automagically-open-in-browser (工作标题)标志。

注意我在整个行业都看到了这种模式,在使用的地方,问题和 (stackoverflow) 问题随处可见,如何禁用它。 我非常不喜欢这种模式作为默认模式,特别是因为针对同一个选项卡并不是可靠的技术。 同时,一旦打开,与“服务器”的断开连接就可以开始轮询并在它再次恢复时重新加载。

建议:如果他们不希望它打开浏览器,我们是否可以只在 CLI 输出中添加一条消息,通知用户--ci选项,而不是执行所有这些操作? 由于@yannbf的改进,当前的行为要好得多

我们在哪里可以看到这些改进?

此页面是否有帮助?
0 / 5 - 0 等级