Storybook: Opción CLI para que start-storybook no abra el navegador

Creado en 20 mar. 2019  ·  31Comentarios  ·  Fuente: storybookjs/storybook

¿Su solicitud de función está relacionada con un problema?
Reinicio start-storybook de vez en cuando por diferentes razones, desde cambiar la configuración hasta trabajar en otras cosas. Sin embargo, no cierro la pestaña del navegador de mi libro de cuentos. Y como start-storybook abre una nueva pestaña del navegador cada vez que se inicia, mi barra de pestañas se llena con múltiples pestañas de libros de cuentos entre otras pestañas. Es molesto y genera confusión y tiempo de limpieza de pestañas ...

También noté que mis colegas estaban haciendo las mismas cosas, lo que resultó en los mismos problemas ...
Y me sorprendió un poco no encontrar una opción para no abrir el navegador ...

Lo sé, hay --ci para omitir las indicaciones interactivas y no abrir el navegador, pero también omite las indicaciones interactivas. Aunque todavía no vi ninguna indicación interactiva, usar el modo ci para el uso diario simplemente no se siente bien ...

Describe la solución que te gustaría

start-server --no-open debería compilarse y funcionar como de costumbre, pero no abrir la ventana del navegador.

Describe las alternativas que has considerado

Abrir el navegador con start-storybook debe estar deshabilitado de forma predeterminada y puede habilitarse usando --open .

Webpack admite los indicadores --open / --no-open que también se reflejan en otras CLI que usan webpack internamente.
angular cli y vue cli ofrecen los mismos indicadores y, como webpack-dev-server, no abren el navegador de forma predeterminada.

Desde mi perspectiva personal, abrir el navegador por defecto es una mala práctica obstinada.
Pero lo sé, hay diferentes opiniones sobre esto por ahí ... :)

¿Puedes ayudar a hacer realidad la función?
Sí, podría profundizar en esto y hacer un PR.

Contexto adicional
¿Alguien quiere una captura de pantalla de la barra de pestañas de mi navegador llena de pestañas de libros de cuentos? ;)

BREAKING CHANGE cli feature request todo

Comentario más útil

personalmente preferiría que --no-open sea ​​el valor predeterminado

Todos 31 comentarios

Hola @simbo. AFAIK, la opción --ci hace exactamente eso.

Estás proponiendo:

  • renombrarlo o ponerle un alias a --no-open
  • por lo que es true por defecto?

Así parece... :)

Alias. Estoy de acuerdo con agregar un alias --no-open a --ci para que la función sea más visible. También podríamos convertirlo en una bandera separada si en algún momento hay más cosas que no queremos hacer cuando estamos en CI además de simplemente no abrir el navegador.

Valor por defecto. En cuanto a cambiar el valor predeterminado a --no-open , no me opongo, aunque sería un cambio importante, por lo que querríamos hacerlo en 6.0. Estoy publicando este problema en la discordia #maintenance así que espero que podamos llegar a un consenso. Si es así, es un cambio trivial, pero probablemente tardará un poco en publicarse.

Puede que no sea lo mismo. Creo que CRA maneja esto de una manera elegante y podría ser adoptada. Las diferencias clave son:

  • apunte a la pestaña que ya está abierta en lugar de abrir una nueva cada vez.
  • configure el navegador preferido o no abra -> archivo .env
  • favorezca a Chrome sobre los navegadores predeterminados (por ejemplo, para las personas que navegan con un navegador diferente al que desarrollan, de los cuales parece haber muchos; Chrome sigue siendo una apuesta más segura para la mayoría).

Documentación relevante de la

Para mí, start-storybook abre una pestaña en una ventana en segundo plano de un navegador diferente cada vez que lo reinicio.

también omite las indicaciones interactivas

Un ejemplo de este aviso es ejecutar Storybook en un puerto alternativo cuando el solicitado está ocupado. Eso puede resultar muy útil a veces. Entonces creo que --no-open no debería ser un alias para --ci . Solo debería deshabilitar la apertura

favorecer a Chrome sobre los navegadores predeterminados

Sí, es por eso que no copié ese enfoque tal como está.

personalmente preferiría que --no-open sea ​​el valor predeterminado

¡Hola a todos! Parece que últimamente no ha habido mucho en este tema. Si todavía hay preguntas, comentarios o errores, no dude en continuar con la discusión. Desafortunadamente, no tenemos tiempo para abordar todos los problemas. Siempre estamos abiertos a contribuciones, así que envíenos una solicitud de extracción si desea ayudar. Los problemas inactivos se cerrarán después de 30 días. ¡Gracias!

¿Alguien prefiere el comportamiento actual? Si no, creo que podemos hacer el cambio.

Hago. De hecho, confío en ello como una indicación de que el libro de cuentos ha terminado de construirse.

tal vez solo proporcionemos ambos indicadores cli: --open y --no-open y permitamos configurar esto una vez que storybook.config.js aterrizó.

Yo también preferiría una bandera de no apertura. Haga todo lo que está predeterminado actualmente, simplemente omita la apertura de un nuevo navegador. MUY a menudo tengo una ventana existente abierta, pero debo cerrar y reiniciar el proceso del libro de cuentos (debido a cambios de configuración, etc.), por lo que no puedo confiar en el reinicio automático. En esos casos, simplemente no quiero un nuevo navegador.

@kutenai ¿Puedes correr con --ci ? La discusión aquí es si ese comportamiento debería ser el predeterminado.

Parece que me funciona bien. Tal vez la opción sea engañosa, ya que implica que hace "más" de lo que quiero, pero en la práctica, parece funcionar bien.

FWIW, create-react-app le permite configurar una variable BROWSER env para elegir qué navegador abrir, o none para evitar que se abra cualquier navegador. Podría valer la pena investigar

La discusión aquí es si ese comportamiento debería ser el predeterminado.

De hecho, te gustó mi comentario que dice que debería ser una opción separada

De hecho, te gustó mi comentario que dice que debería ser una opción separada

Sí, estoy absolutamente de acuerdo con hacer de --no-open una opción separada. También creo que debería ser el predeterminado y eso es lo que espero obtener consenso para 6.0

El --no-open predeterminado de

Por ahora:
Supongo que usaré la bandera --ci .

También me gustaría que la opción predeterminada no fuera abrir el navegador, y mi primera suposición fue que podría agregar BROWSER=none como cra, por lo que valdría la pena adoptar ese método para mantener la coherencia. Puede que no sea el único que adivinaría eso antes de mirar los documentos.

Mi comprensión del comportamiento start de react-script es que, de forma predeterminada, abre una pestaña y, si ya hay una abierta, la reutiliza.

Amo ese comportamiento. Si he estado trabajando en un proyecto a través de cambios de código y fallas inevitables de aplicaciones / paquetes web, no tengo que preocuparme por inflar mis ventanas con nuevas pestañas de la misma aplicación o mover una bandera para abrir una nueva pestaña.

También debemos tener cuidado de tener dos comandos para ejecutar durante los flujos de trabajo de desarrollo normales: start-storybook --open en el inicio inicial y luego start-storybook [--no-open] en los comandos posteriores. Si es posible reutilizar la pestaña, esto no es un problema, ya que mi flujo de trabajo siempre sería start-storybook --open .

Preferiría que el valor predeterminado de Storybook sea abrir una pestaña, pero estoy bien si todos deciden no hacerlo. Sin embargo, me encantaría ver el comportamiento de reutilización de la pestaña.

@JonKrone Desafortunadamente, solo reutiliza la pestaña existente en HMR hasta donde yo sé. Si vuelvo a ejecutar la CLI, siempre se abre una nueva pestaña para mí (al menos en Chrome / OSX).

No puedo hacer que --ci funcione. Todavía abre una nueva pestaña en Chrome cada vez que lo inicio. Estoy en 5.2.1 con vue.

@SebbeJohansson, ¿puedes comprobarlo dos

@shilman Lo acabo de hacer con una configuración completamente nueva solo para asegurarme.
\ My-Storybook> npm ejecutar storybook --ci
Resultados en una nueva pestaña en mi navegador principal.

@SebbeJohansson cuando usa npm run , debe anteponer -- a todos los argumentos que desea pasar al comando subyacente:

npm run storybook -- --ci

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

Siempre que el reinicio no esté dirigido correctamente a la misma ventana / pestaña del navegador (y / o recargarla), abrir una nueva ventana de forma predeterminada es simplemente frustrante para mí. Creo que este es un anti-patrón que muchos paquetes están usando para ser elegantes o algo así . Todos somos capaces de abrir un navegador cuando sepamos cómo manejar npm.

Después de construirlo, muestra un bonito cuadro con 2 URL en las que puedo hacer ctrl-clic, y la mayoría de nosotros probablemente usamos start-storybook mientras desarrollamos y reiniciamos mucho .

TLDR: Upvoting --ci como predeterminado y abriendo en el navegador por bandera

reiniciando mucho

¿Por qué necesitas eso? start-storybook debe elegir sus cambios. Si no es así, parece un problema en sí mismo.

Todos somos capaces de abrir un navegador.

Por supuesto que sabes cómo abrir el navegador, el problema es que no sabes cuándo . En proyectos grandes, la primera construcción puede llevar bastante tiempo, y simplemente sentarse y esperar la caja en la consola puede no ser una opción.

¿Por qué necesitas eso? start-storybook debe elegir sus cambios. Si no es así, parece un problema en sí mismo.

Debería, y lo hace en la mayoría de los cambios, pero no en todos los cambios. Actualmente estoy configurando un nuevo libro de cuentos y jugueteando con él, así que sí, terminé con 10 pestañas en unos minutos.

Por supuesto que sabe _cómo_ abrir el navegador, el problema es que no sabe _cuando_. En proyectos grandes, la primera construcción puede llevar bastante tiempo, y simplemente sentarse y esperar la caja en la consola puede no ser una opción.

Aún podría abrir el navegador, solo me dirá 'Conexión rechazada'. Creo que es más molesto que después de uno o dos minutos de repente aparezca un navegador mientras estoy haciendo otra cosa.
Podría haber un comentario en el cuadro, hay una --automagically-open-in-browser (título provisional) que puede habilitar.

Tenga en cuenta que estoy viendo este patrón en toda la industria y, cuando se usa, surgen problemas y preguntas (de desbordamiento de pila) en todas partes sobre cómo deshabilitarlo. No me gusta mucho el patrón como predeterminado , especialmente porque apuntar a la misma pestaña no es una tecnología sólida. Mientras tanto, una vez abierto, una desconexión del 'servidor' podría comenzar a sondear y recargar una vez que vuelva a funcionar.

Propuesta: En lugar de hacer todo esto, ¿podemos simplemente agregar un mensaje a la salida CLI notificando al usuario de la opción --ci si no quieren que abra el navegador? El comportamiento actual es mucho mejor gracias a las mejoras de @yannbf

¿Dónde podemos ver estas mejoras?

¿Fue útil esta página
0 / 5 - 0 calificaciones

Temas relacionados

Olian04 picture Olian04  ·  78Comentarios

Gongreg picture Gongreg  ·  58Comentarios

ilyaulyanov picture ilyaulyanov  ·  100Comentarios

ilias-t picture ilias-t  ·  73Comentarios

ChucKN0risK picture ChucKN0risK  ·  74Comentarios