Sestavení a vydání
Lokální sestavení
bun install
bun run buildPostup sestavení:
bun run build:injected(build-scripts/build-injected.mjs): esbuild zkompilujesrc/injected/page-detector.tsapage-source-search.tskaždý do samostatného IIFE souboru, výstup dopublic/injected/vite build(@crxjs/vite-plugin): zabalí čtyři vstupní body — background / popup / settings / help — dodist/precompileRulesPlugin(vite plugin hook closeBundle): projdedist/rules/*.jsona do každého listového pravidla vloží__hints/__legacyHints/__keywordCombinedminifyJsonAssets(vite plugin hook closeBundle): přepíše všechny JSON soubory pomocíJSON.stringify(parsed), čímž odstraní odsazení a zalomení řádků
Výsledný adresář dist/ lze přímo načíst v chrome://extensions/ v režimu pro vývojáře.
Hot reload při vývoji
bun run devVite dev server + crxjs HMR: změny v src/ui/** (vyskakovací okno / nastavení / nápověda) se automaticky nahradí. Po změně kódu na pozadí v src/background/** nebo content scriptu je nutné v chrome://extensions/ ručně kliknout na tlačítko obnovení na kartě rozšíření.
Typová kontrola a lint
bun run typecheck # vue-tsc --noEmit, striktní typová kontrola celého projektu
bun run lint # eslint srcPřed odevzdáním spusťte jednotné formátování:
npx prettier --write .Správa verzí
Pole version v souboru package.json je jediným zdrojem pravdy. @crxjs/vite-plugin jej automaticky synchronizuje do dist/manifest.json.
Běžné funkce, pravidla a opravy navyšují patch verzi. Po dosažení hodnoty 99 se přejde na nový minor — číslo verze 1.1.100 se nepoužívá:
# 1.1.98 -> 1.1.99
# 1.1.99 -> 1.2.0GitHub Release se vytváří pouze pro verze, u nichž se vydává instalační balíček: x.y.0, x.y.10, x.y.20, ..., x.y.90. Například verze 1.2.0 a 1.2.10 se vydávají, verze 1.2.5 a 1.2.15 nikoliv.
# po úpravě verze v package.json
git add package.json
git commit -m "chore: bump 1.2.10"
git push origin mainPracovní postup GitHub Release
.github/workflows/release-extension.yml se spouští ve dvou případech:
- Publikování release v uživatelském rozhraní GitHubu (událost
release: published) - Ruční spuštění workflow_dispatch na stránce Actions (lze volitelně předat vstup release_tag)
Kroky pracovního postupu:
- checkout + instalace bun + Node 20
bun install --frozen-lockfilebun run build- Načtení verze z
dist/manifest.jsona ověření shody s tagem release - Zabalení celého adresáře
dist/dostackprism-v{ver}.zip+ sha256 - Pokud je nakonfigurován secret
EXTENSION_PRIVATE_KEY, podepsání pomocínpx crx3a vytvořenístackprism-v{ver}.crx+ sha256; jinak se přeskočí a nahraje se pouze zip gh release upload --clobber— nahrání všech artefaktů k tagu releaseactions/upload-artifact— záloha artefaktu
Poznámky k vydání
Poznámky k vydání se sestavují z výstupu git log --oneline vPREV..HEAD mezi předchozím tagem release a aktuálním commitem — není to přímé nakopírování seznamu commitů. Obsah je tříděn tak, aby byl srozumitelný pro uživatele, například:
- Vylepšení pravidel
- Vyskakovací okno a stránka nastavení
- Web s dokumentací
- Sestavení a pracovní postup vydání
Poznámky k vydání zahrnují pouze změny relevantní pro uživatele nebo správce; nezmiňují lokální formátování, typovou kontrolu, lint nebo příkazy sestavení.
Podpisový klíč CRX
Před prvním vydáním je nutné vygenerovat RSA privátní klíč a nakonfigurovat jej v secrets repozitáře na GitHubu.
Generování privátního klíče
openssl genrsa -out extension.pem 2048WARNING
Soubor extension.pem nesmí být ztracen — jeho ztráta a opětovné vygenerování změní ID rozšíření (Chrome jej bude považovat za jiné rozšíření). Uchovejte lokální zálohu.
Konfigurace na GitHubu
- Nastavení repozitáře → Secrets and variables → Actions → New repository secret
- Název:
EXTENSION_PRIVATE_KEY - Secret: vložte celý obsah souboru
extension.pem(včetně řádků-----BEGIN PRIVATE KEY-----a-----END PRIVATE KEY-----) - Uložte
Pracovní postup bude od té doby automaticky podepisovat crx tímto klíčem.
Co se stane bez konfigurace
Pracovní postup stále proběhne, ale artefakty nebudou obsahovat soubor .crx. Uživatelé budou moci použít pouze instalaci rozbalením zip archivu.
Kontrolní seznam před vydáním
- [ ]
npx prettier --write .byl spuštěn - [ ]
bun run typecheckprošel - [ ]
bun run lintprošel - [ ]
bun run buildprošel - [ ] Načtěte
dist/v Chrome a ručně otestujte klíčové funkce (otevření vyskakovacího okna, detekce webu, obnovení, kopírování kompletní zprávy o technologickém stacku, přidání pravidla na stránce nastavení) - [ ] Navyšte verzi v
package.json - [ ] git commit + push
- [ ] Pokud verze odpovídá bodu vydání, publikujte release v uživatelském rozhraní GitHubu (tag ve formátu
v{version}, shodný s package.json) - [ ] Počkejte na dokončení pracovního postupu vydání a ověřte, že artefakty release obsahují zip / crx a sha256
Publikování do Chrome Web Store
Pracovní postup automaticky nepublikuje rozšíření do Chrome Web Store — API pro publikování v CWS vyžaduje OAuth2 tok, proto se provádí ručně:
- Zabalte složku
dist/do zip archivu (stejný zip jako artefakt pracovního postupu) - Chrome Web Store Developer Dashboard → Nahrát novou verzi
- Vyplňte poznámky ke změnám a počkejte na schválení (zpravidla 1–3 pracovní dny)