Jak zaměřit již otevřenou kartu prohlížeče (Chromium a macOS)

Při čtení článku o "neznámých" funkcích Netlify CLI jsem objevil malý klenot pro vývojáře.

Jako hromadič karet oceňuji, když vývojové nástroje znovu používají a zaostřují již otevřené localhost karty. Bohužel si nepamatuji, že bych někdy viděl vývojový příkaz CLI znovu používat/zaměřovat již otevřenou kartu.

Jak to funguje? Existuje snadný způsob, jak to udělat programově? A proč jsem si toho nikdy nevšiml?

Balík npm pro opětovné použití karet – better-opn

Analyzoval jsem, co Netlify CLI dělá, a zjistil jsem, že používá better-opn npm balíček (použití najdete zde). Kód pro otevření nebo zaměření již otevřené karty prohlížeče jsou dva řádky kódu.

const open = require('better-opn');
await open('https://example.com);

To nemůže být tak snadné! Musí tam být nějaké kouzlo. Pojďme se ponořit hlouběji!

Jak znovu použít a zaměřit otevřené karty prohlížeče

better-opn má 25 hvězdiček GitHub, ale ohromující 2 miliony stažení týdně na npm. Vždy jsem ohromen, když objevím velmi používané balíčky, které GitHub nemilují.

Když se podíváte na hlavní soubor balíčku (index.js ) zjistíte, že funkce „zaměřit existující kartu“ byla původně vyvinuta v create-react-app Facebooku .

// Copy from
// https://github.com/facebook/create-react-app/blob/master/packages/react-dev-utils/openBrowser.js#L64

Pohled na zdrojový kód; vynikají tři věci:

  1. zaměření karty prohlížeče funguje pouze v systému macOS
  2. zaměření karty prohlížeče funguje pouze v prohlížečích Chromium
  3. zaměření karty prohlížeče není jednoduché

Balíček používá Apple Script (ufff!) k iteraci přes otevřené karty, nalezení správné adresy URL a zaměření na příslušnou kartu.

To je nešťastné zjištění a zde dochází k závěru:Nikdy jsem si této funkce nevšiml, protože jako výchozí prohlížeč používám Firefox. Mně to nikdy nefungovalo. 😢

Po dalším pohledu better-opn skutečně poukazuje na to, že funguje pouze v prohlížeči Chromium v ​​systému macOS. Bohužel jsem to přehlédl při skenování balíčku.

Ale článek Netlify pak není úplně správný. Popisuje pouze výchozí sadu webového vývojáře:Chrome v systému macOS.

Tato formulace není velká, ale je poněkud znepokojivé, že zde není žádná zmínka o Windows nebo jiných prohlížečích.

Ne všichni vývojáři sedí před lesklým MacBookem Pro nebo používají prohlížeč založený na Chromiu. Tento případ je typickou situací „Funguje na mém počítači“. Na druhou stranu v better-opn nejsou žádné otevřené problémy vyžadující podporu pro Windows nebo Firefox repo.

Vyvíjím jen já na exotickém softwaru? Pochybuji o tom, ale solidní vývojářské prostředí by mělo pokrýt více oblastí než aktuální výchozí sada pro vývojáře . 😊