¿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? ;)
Hola @simbo. AFAIK, la opción --ci
hace exactamente eso.
Estás proponiendo:
--no-open
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:
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
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?
Disponible en 6.0-beta. https://github.com/storybookjs/storybook/pull/10329
Comentario más útil
personalmente preferiría que
--no-open
sea el valor predeterminado