Storybook: CLI-Option für start-storybook, um den Browser nicht zu öffnen

Erstellt am 20. März 2019  ·  31Kommentare  ·  Quelle: storybookjs/storybook

Bezieht sich Ihre Funktionsanfrage auf ein Problem?
Ich starte start-storybook von Zeit zu Zeit aus verschiedenen Gründen neu, von geänderter Konfiguration bis hin zur Arbeit an anderen Dingen. Trotzdem schließe ich meinen Bilderbuch-Browser-Tab nicht. Und da start-storybook jedem Start einen neuen Browser-Tab öffnet, füllt sich meine Tab-Leiste mit mehreren Bilderbuch-Tabs zwischen anderen Tabs. Es ist ärgerlich und führt zu Verwirrung und Tab-Bereinigungszeit...

Ich habe auch bemerkt, dass meine Kollegen die gleichen Dinge taten, was zu den gleichen Problemen führte...
Und ich war etwas überrascht, dass ich keine Option finden konnte, den Browser nicht zu öffnen...

Ich weiß, es gibt --ci , um interaktive Eingabeaufforderungen zu überspringen und den Browser nicht zu öffnen, aber es überspringt auch interaktive Eingabeaufforderungen. Obwohl ich noch keine interaktiven Eingabeaufforderungen gesehen habe, fühlt sich die Verwendung des ci-Modus für den täglichen Gebrauch einfach nicht richtig an ...

Beschreiben Sie die gewünschte Lösung

start-server --no-open sollte wie gewohnt bauen und funktionieren, aber das Browserfenster nicht öffnen.

Beschreiben Sie Alternativen, die Sie in Betracht gezogen haben

Das Öffnen des Browsers mit start-storybook sollte standardmäßig deaktiviert sein und kann mit --open aktiviert werden.

Webpack unterstützt die --open / --no-open Flags, die auch von anderen CLIs gespiegelt werden, die Webpack intern verwenden.
angle cli und vue cli bieten die gleichen Flags und öffnen - wie webpack-dev-server - den Browser nicht standardmäßig.

Aus meiner persönlichen Sicht ist das standardmäßige Öffnen des Browsers eine rechthaberische Fehlpraxis.
Aber ich weiß, dazu gibt es unterschiedliche Meinungen... :)

Können Sie helfen, das Feature in die Realität umzusetzen?
Ja, ich könnte mich damit befassen und eine PR machen.

Zusätzlicher Kontext
Möchte jemand einen Screenshot meiner Browser-Tab-Leiste, die mit Storybook-Tabs gefüllt ist? ;)

BREAKING CHANGE cli feature request todo

Hilfreichster Kommentar

Persönlich würde ich es vorziehen, --no-open als Standard zu verwenden

Alle 31 Kommentare

Hallo @simbo. AFAIK macht die Option --ci genau das.

Schlagen Sie vor:

  • Umbenennen oder Aliasing in --no-open
  • macht es standardmäßig true ?

Es scheint so... :)

Alias. Ich bin damit einverstanden, einen --no-open Alias ​​zu --ci hinzuzufügen, um die Funktion leichter

Standardwert. Was die Änderung des Standardwerts in --no-open , bin ich nicht dagegen, obwohl dies eine bahnbrechende Änderung wäre, also würden wir dies in 6.0 tun wollen. Ich poste dieses Problem im #maintenance Discord, damit wir hoffentlich einen Konsens erzielen können. Wenn ja, ist es eine triviale Änderung, aber es wird wahrscheinlich eine Weile dauern, bis sie veröffentlicht wird.

Es kann nicht dasselbe sein. Ich denke, CRA handhabt dies auf anmutige Weise und könnte übernommen werden. Hauptunterschiede sind:

  • Zielen Sie auf die bereits geöffnete Registerkarte, anstatt jedes Mal eine neue zu öffnen.
  • bevorzugten Browser einstellen oder nicht öffnen -> .env-Datei
  • Bevorzugen Sie Chrome gegenüber Standardbrowsern (z. B. für Leute, die mit einem anderen Browser surfen, als sie selbst entwickeln, von denen es anscheinend viele gibt - Chrome ist für die meisten immer noch die sicherere Wahl).

Relevante CRA-Dokumentation

Für mich öffnet start-storybook bei jedem Neustart eine Registerkarte in einem Hintergrundfenster eines anderen Browsers.

es überspringt auch interaktive Eingabeaufforderungen

Ein Beispiel für eine solche Aufforderung ist das Ausführen von Storybook an einem alternativen Port, wenn der angeforderte Port belegt ist. Das kann manchmal ganz nützlich sein. Also ich denke, --no-open sollte kein Alias ​​für --ci . Es sollte nur das Öffnen deaktivieren

Bevorzuge Chrome gegenüber Standardbrowsern

Ja, deshalb habe ich diesen Ansatz nicht so kopiert, wie er ist

Persönlich würde ich es vorziehen, --no-open als Standard zu verwenden

Hallo allerseits! Anscheinend hat sich in dieser Ausgabe in letzter Zeit nicht viel getan. Wenn es noch Fragen, Kommentare oder Fehler gibt, können Sie die Diskussion gerne fortsetzen. Leider haben wir nicht die Zeit, auf jedes Problem einzugehen. Wir sind immer offen für Beiträge, bitte senden Sie uns einen Pull-Request, wenn Sie helfen möchten. Inaktive Ausgaben werden nach 30 Tagen geschlossen. Danke!

Bevorzugt jemand das aktuelle Verhalten? Wenn nicht, denke ich, können wir die Änderung vornehmen

Ich mache. Eigentlich verlasse ich mich darauf als Hinweis darauf, dass das Bilderbuch fertig gebaut ist

vielleicht stellen wir einfach beide CLI-Flags bereit: --open und --no-open und erlauben dies zu konfigurieren, sobald storybook.config.js gelandet ist.

Ich würde auch eine --no-open-Flagge bevorzugen. Machen Sie alles, was derzeit standardmäßig ist, überspringen Sie einfach das Öffnen eines neuen Browsers. Ich habe SEHR oft ein vorhandenes Fenster geöffnet, muss aber den Storybook-Prozess schließen und neu starten (aufgrund von Konfigurationsänderungen usw.), sodass ich mich nicht auf den automatischen Neustart verlassen kann. In diesen Fällen möchte ich einfach keinen neuen Browser.

@kutenai Kannst du einfach mit --ci laufen? Die Diskussion hier ist, ob dieses Verhalten die Standardeinstellung sein sollte.

Bei mir scheint es gut zu funktionieren. Vielleicht ist die Option nur irreführend, da sie irgendwie impliziert, dass sie "mehr" tut, als ich will, aber in der Praxis scheint sie gut zu funktionieren.

FWIW, create-react-app lässt Sie eine BROWSER env-Variable setzen, um auszuwählen, welcher Browser geöffnet werden soll, oder none , um das Öffnen eines Browsers zu verhindern. Könnte einen Blick wert sein

Die Diskussion hier ist, ob dieses Verhalten die Standardeinstellung sein sollte.

Mein Kommentar, der sagt, dass es eine separate Option sein sollte, hat dir tatsächlich gefallen

Mein Kommentar, der sagt, dass es eine separate Option sein sollte, hat dir tatsächlich gefallen

Ja, ich bin absolut einverstanden mit --no-open als separate Option. Ich denke auch, dass es die Standardeinstellung sein sollte und ich hoffe, dass ich für 6.0 einen Konsens bekomme

Dass --no-open Standard ist, scheint eine vernünftige Standardeinstellung zu sein, ehrlich gesagt, ein Browserfenster standardmäßig zu öffnen, scheint hauptsächlich für Flash in einem Konferenzgespräch zu sein und tut nichts anderes, als Entwickler zu ärgern, die diesen Befehl tatsächlich ziemlich oft neu laden.

Zur Zeit:
Ich denke, ich werde das Flag --ci verwenden.

Ich möchte auch, dass der Browser standardmäßig nicht geöffnet wird, und meine erste Vermutung war, dass ich BROWSER=none wie cra hinzufügen könnte – es könnte sich also lohnen, diese Methode aus Konsistenzgründen zu übernehmen. Ich bin vielleicht nicht der einzige, der das erraten würde, bevor er sich die Dokumente ansah.

Mein Verständnis des start Verhaltens von React-Script ist, dass es standardmäßig eine Registerkarte öffnet und wenn bereits eine geöffnet ist, diese Registerkarte wiederverwendet.

Ich liebe dieses Verhalten. Wenn ich an einem Projekt durch Codeänderungen und unvermeidliche App-/Webpack-Abstürze gearbeitet habe, muss ich mir keine Sorgen machen, dass meine Fenster mit neuen Registerkarten derselben App aufgebläht werden oder eine Flagge umgedreht wird, um eine neue Registerkarte zu öffnen.

Wir sollten auch darauf achten, dass während normaler Entwicklungsworkflows zwei Befehle ausgeführt werden: start-storybook --open beim ersten Start und dann start-storybook [--no-open] bei nachfolgenden Befehlen. Wenn die Wiederverwendung von Registerkarten möglich ist, ist dies kein Problem, da mein Workflow dann einfach immer start-storybook --open .

Ich würde es vorziehen, dass Storybook standardmäßig eine Registerkarte öffnet, aber es geht mir gut, wenn Sie sich alle dagegen entscheiden. Ich würde mich jedoch freuen, wenn das Wiederverwendungsverhalten der Registerkarten durchkommt.

@JonKrone Leider wird meines

Ich kann --ci nicht zum Laufen bringen. Öffnet immer noch jedes Mal, wenn ich es starte, eine neue Registerkarte in Chrome. Ich bin auf 5.2.1 mit vue.

@SebbeJohansson können Sie das überprüfen? für mich arbeiten

@shilman Ich habe gerade ein komplett neues Setup gemacht, um sicherzugehen.
\My-Storybook>npm run storybook --ci
Führt zu einem neuen Tab in meinem Hauptbrowser.

@SebbeJohansson Wenn Sie npm run , müssen Sie allen Argumenten, die Sie an den zugrunde liegenden Befehl übergeben möchten, -- voranstellen:

npm run storybook -- --ci

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

Solange der Neustart nicht richtig auf dasselbe Browserfenster/-register abzielt (und/oder neu geladen wird), ist das standardmäßige Öffnen eines neuen Fensters für mich nur frustrierend. Ich denke, dies ist ein Anti-Muster, das viele Pakete verwenden, um ausgefallen zu sein oder so . Wir alle sind in der Lage, einen Browser zu öffnen, wenn wir wissen, wie man mit npm umgeht.

Nach dem Erstellen zeigt es eine schöne Box mit 2 URLs, auf die ich mit Strg-Klicken klicken kann, und die meisten von uns verwenden wahrscheinlich start-storybook während sie viel entwickeln und neu starten.

TLDR: Upvoting --ci als Standard und Öffnen im Browser per Flag

viel neu starten

Warum brauchst du das? start-storybook sollte Ihre Änderungen auswählen. Wenn nicht, klingt es wie ein Problem für sich.

Wir alle sind in der Lage, einen Browser zu öffnen

Natürlich wissen Sie, wie Sie den Browser öffnen, das Problem ist, dass Sie nicht wissen, wann . Bei großen Projekten kann der erste Build eine Weile dauern, und einfach nur zu sitzen und auf die Box in der Konsole zu warten, ist möglicherweise keine Option

Warum brauchst du das? start-storybook sollte Ihre Änderungen auswählen. Wenn nicht, klingt es wie ein Problem für sich.

Es sollte und tut dies bei den meisten Änderungen, aber nicht bei allen Änderungen. Ich richte gerade ein neues Storybook ein und fummele damit herum, also bin ich in wenigen Minuten bei 10 Tabs gelandet.

Natürlich wissen Sie, _wie_ man den Browser öffnet, das Problem ist, dass Sie nicht wissen, _wann_. Bei großen Projekten kann der erste Build eine Weile dauern, und einfach nur zu sitzen und auf die Box in der Konsole zu warten, ist möglicherweise keine Option

Ich könnte den Browser immer noch öffnen, er sagt mir nur 'Verbindung abgelehnt'. Ich finde es ärgerlicher, dass nach ein oder zwei Minuten plötzlich ein Browser auftaucht, während ich etwas anderes mache.
Das Feld könnte einen Kommentar enthalten. Es gibt ein --automagically-open-in-browser -Flag (Arbeitstitel), das Sie aktivieren können.

Beachten Sie, dass ich dieses Muster in der gesamten Branche sehe, und wo es verwendet wird, tauchen überall Probleme und (Stackoverflow-) Fragen auf, wie man es deaktiviert. Ich mag das Muster als Standard nicht , zumal es keine solide Technologie ist, auf denselben Tab zu zielen. In der Zwischenzeit könnte eine Trennung zum 'Server' nach dem Öffnen die Abfrage starten und neu laden, sobald sie wieder hochkommt.

Vorschlag: Können wir, anstatt all dies zu tun, einfach eine Nachricht zur CLI-Ausgabe hinzufügen, die den Benutzer --ci Option @yannbf viel besser

Wo können wir diese Verbesserungen sehen?

Verfügbar in der 6.0-Betaversion. https://github.com/storybookjs/storybook/pull/10329

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen