Kako preiti na Manifest V3 za razširitve za Chrome

Kako preiti na Manifest V3 za razširitve za Chrome

How to Transition to Manifest V3 for Chrome Extensions PlatoBlockchain Data Intelligence. Vertical Search. Ai.

Čeprav nisem običajen programer razširitev za Chrome, sem gotovo kodiral dovolj razširitev in imam dovolj širok portfelj spletnega razvoja, da se znajdem pri nalogi. Pred kratkim pa je moja stranka zavrnila eno od mojih razširitev, saj sem prejel povratne informacije, da je moja razširitev »zastarela«.

Ko sem se trudil ugotoviti, kaj je narobe, sem svojo zadrego pometel pod preprogo in se takoj začel globoko potapljati nazaj v svet razširitev za Chrome. Na žalost je bilo informacij o Manifestu V3 malo in težko sem hitro razumel, za kaj gre pri tem prehodu.

Ni treba posebej poudarjati, da sem se zaradi čakajoče zaposlitve moral mučno prebijati Googlova dokumentacija za razvijalce za Chrome in sam ugotovim stvari. Medtem ko sem opravil delo, nisem želel, da bi šlo moje znanje in raziskave na tem področju v nič, in sem se odločil deliti tisto, do česar želim, da bi imel lahek dostop na svoji učni poti.

Zakaj je prehod na Manifest 3 pomemben

Manifest V3 je API, ki ga bo Google uporabljal v svojem brskalniku Chrome. Je naslednik trenutnega API-ja, Manifest V2, in ureja način interakcije razširitev za Chrome z brskalnikom. Manifest V3 uvaja bistvene spremembe pravil za razširitve, od katerih bodo nekatera nova opora iz V2, ki smo je bili vajeni.

Prehod na Manifest V3 lahko povzamemo takole:

  1. Prehod poteka od leta 2018.
  2. Manifest V3 se bo uradno začel uvajati januarja 2023.
  3. Do junija 2023 razširitve, ki izvajajo Manifest V2, ne bodo več na voljo v spletni trgovini Chrome.
  4. Razširitve, ki niso v skladu z novimi pravili, predstavljenimi v Manifestu V3, bodo sčasoma odstranjene iz spletne trgovine Chrome.

Eden glavnih ciljev Manifesta V3 je narediti uporabnike varnejše in izboljšati splošno izkušnjo brskalnika. Prej se je veliko razširitev brskalnika zanašalo na kodo v oblaku, kar je pomenilo, da je bilo težko oceniti, ali je bilo podaljšanje tvegano. Manifest V3 želi to rešiti tako, da zahteva, da razširitve vsebujejo vso kodo, ki jo bodo izvajale, kar Googlu omogoča, da jih skenira in zazna morebitna tveganja. Prav tako prisili razširitve, da od Googla zahtevajo dovoljenje za spremembe, ki jih lahko izvedejo v brskalniku.

Bodite na tekočem z Googlovim prehodom na Manifest V3 je pomembno, ker uvaja nova pravila za razširitve, katerih namen je izboljšati varnost uporabnikov in splošno izkušnjo brskalnika, razširitve, ki niso v skladu s temi pravili, pa bodo sčasoma odstranjene iz spleta Chrome Trgovina.

Skratka, vse vaše trdo delo pri ustvarjanju razširitev, ki so uporabljale Manifest V2, bi lahko bilo zaman, če tega prehoda ne boste izvedli v prihodnjih mesecih.

januar 2023 junij 2023 januar 2024
Podpora za razširitve Manifest V2 bo izklopljena v Chromovih kanalih Canary, Dev in Beta. Spletna trgovina Chrome ne bo več dovoljevala objave razširitev Manifest V2 z vidnostjo, nastavljeno na Javno. Spletna trgovina Chrome bo odstranila vse preostale razširitve Manifest V2.
Manifest V3 bo potreben za značko Predstavljeno v spletni trgovini Chrome. Obstoječe razširitve Manifest V2, ki so objavljene in javno vidne, bodo postale nenavedene. Podpora za Manifest 2 se bo končala za vse Chromove kanale, vključno s stabilnim kanalom, razen če bo kanal Enterprise razširjen.

Ključne razlike med Manifestom V2 in V3

Med tema dvema je veliko razlik, vendar toplo priporočam, da preberete Chromov vodnik »Migracija na Manifest V3«., tukaj je kratek in sladek povzetek ključnih točk:

  1. Storitveni delavci zamenjaj strani ozadja v Manifestu V3.
  2. Sprememba omrežne zahteve se obravnava z novim declarativeNetRequest API v manifestu V3.
  3. V Manifestu V3 lahko razširitve izvajajo samo JavaScript, ki je vključen v njihov paket, in ne morejo uporabljati kode, ki gostuje na daljavo.
  4. Manifest V3 predstavlja promise podpora številnim metodam, čeprav so povratni klici še vedno podprti kot alternativa.
  5. Dovoljenja gostitelja v Manifestu V3 so ločen element in jih je treba določiti v "host_permissions" področju.
  6. Politika varnosti vsebine v Manifestu V3 je objekt s člani, ki predstavljajo kontekste alternativne politike varnosti vsebine (CSP), in ne niz, kot je bil v Manifestu V2.

V preprostem manifestu razširitve za Chrome, ki spremeni ozadje spletne strani, je to lahko videti takole:

// Manifest V2
{ "manifest_version": 2, "name": "Shane's Extension", "version": "1.0", "description": "A simple extension that changes the background of a webpage to Shane's face.", "background": { "scripts": ["background.js"], "persistent": true }, "browser_action": { "default_popup": "popup.html" }, "permissions": [ "activeTab", ], "optional_permissions": ["<all_urls>"]
}
// Manifest V3
{ "manifest_version": 3, "name": "Shane's Extension", "version": "1.0", "description": "A simple extension that changes the background of a webpage to Shane's face.", "background": { "service_worker": "background.js" }, "action": { "default_popup": "popup.html" }, "permissions": [ "activeTab", ], "host_permissions": [ "<all_urls>" ]
}

Če ugotovite, da se vam nekatere od zgornjih oznak zdijo tuje, nadaljujte z branjem, da boste izvedeli točno tisto, kar morate vedeti.

Kako gladko preiti na Manifest V3

Prehod na Manifest V3 sem povzel na štirih ključnih področjih. Čeprav je v novem Manifestu V3 veliko dodatkov, ki jih je treba implementirati iz starega Manifesta V2, bo uvedba sprememb na teh štirih področjih vašo razširitev za Chrome postavila na pravo pot za morebiten prehod.

Štiri ključna področja so:

  1. Posodabljanje osnovne strukture vašega manifesta.
  2. Spremenite svoja dovoljenja gostitelja.
  3. Posodobite pravilnik o varnosti vsebine.
  4. Spremenite obravnavanje omrežnih zahtev.

S temi štirimi področji bodo osnove vašega Manifesta pripravljene za prehod na Manifest V3. Oglejmo si podrobno vsakega od teh ključnih vidikov in poglejmo, kako si lahko prizadevamo, da bi vašo razširitev za Chrome zaščitili v prihodnosti po tem prehodu.

Posodabljanje osnovne strukture vašega manifesta

Posodobitev osnovne strukture vašega manifesta je prvi korak pri prehodu na Manifest V3. Najpomembnejša sprememba, ki jo boste morali narediti, je sprememba vrednosti "manifest_version" element za 3, ki določa, da uporabljate nabor funkcij Manifest V3.

Ena večjih razlik med Manifestom V2 in V3 je zamenjava strani v ozadju z enim samim delavcem razširitvene storitve v Manifestu V3. Storitvenega delavca boste morali prijaviti pod "background" polje z uporabo "service_worker" ključ in določite eno datoteko JavaScript. Čeprav Manifest V3 ne podpira več skriptov v ozadju, lahko izbirno deklarirate storitvenega delavca kot modul ES tako, da podate "type": "module", ki vam omogoča uvoz nadaljnje kode.

V Manifestu V3 je "browser_action" in "page_action" lastnosti so združene v eno samo "action" premoženje. Te lastnosti boste morali zamenjati z "action" v vašem manifestu. Podobno je "chrome.browserAction" in "chrome.pageAction" API-ji so združeni v en sam API »Action« v Manifestu V3 in morali se boste preseliti na ta API.

// Manifest V2 "background": { "scripts": ["background.js"], "persistent": false
}, "browser_action": { "default_popup": "popup.html"
},
// Manifest V3 "background": { "service_worker": "background.js"
}, "action": { "default_popup": "popup.html"
}

Na splošno je posodobitev osnovne strukture vašega manifesta ključni korak v procesu prehoda na Manifest V3, saj vam omogoča, da izkoristite nove funkcije in spremembe, uvedene v tej različici API-ja.

Spremenite svoja dovoljenja gostitelja

Drugi korak pri prehodu na Manifest V3 je spreminjanje dovoljenj gostitelja. V Manifestu V2 podate dovoljenja gostitelja v "permissions" polje v datoteki manifesta. V Manifestu V3 so dovoljenja gostitelja ločen element in jih morate določiti v "host_permissions" polje v datoteki manifesta.

Tukaj je primer, kako spremenite dovoljenja gostitelja:

// Manifest V2 "permissions": [ "activeTab", "storage", "http://www.css-tricks.com/", ":///*" ]
// Manifest V3 "permissions": [ "activeTab", "scripting", "storage"
], "host_permissions": [ "http://www.css-tricks.com/" ], "optional_host_permissions": [ ":///*" ]

Posodobite pravilnik o varnosti vsebine

Če želite posodobiti CSP razširitve Manifest V2, da bo skladen z Manifestom V3, boste morali narediti nekaj sprememb v datoteki manifesta. V Manifestu V2 je bil CSP določen kot niz v "content_security_policy" polje manifesta.

V Manifestu V3 je CSP zdaj objekt z različnimi člani, ki predstavljajo alternativne kontekste CSP. Namesto ene same "content_security_policy" polje, boste morali zdaj določiti ločena polja za "content_security_policy.extension_pages" in "content_security_policy.sandbox", odvisno od vrste razširitvenih strani, ki jih uporabljate.

Prav tako morate odstraniti vse sklice na zunanje domene v "script-src", "worker-src", "object-src"in "style-src" direktive, če so prisotne. Pomembno je, da posodobite svoj CSP, da zagotovite varnost in stabilnost razširitve v Manifestu V3.

// Manifest V2 "content_security_policy": "script-src 'self' https://css-tricks.com; object-src 'self'"
// Manfiest V3 "content_security_policy.extension_pages": "script-src 'self' https://example.com; object-src 'self'", "content_security_policy.sandbox": "script-src 'self' https://css-tricks.com; object-src 'self'"

Spremenite obravnavanje omrežnih zahtev

Zadnji korak pri prehodu na Manifest V3 je spreminjanje obravnavanja omrežnih zahtev. V Manifestu V2 bi uporabili chrome.webRequest API za spreminjanje omrežnih zahtev. Vendar je ta API v Manifestu V3 nadomeščen z declarativeNetRequest API.

Za uporabo tega novega API-ja boste morali določiti declarativeNetRequest dovoljenje v svojem manifestu in posodobite kodo za uporabo novega API-ja. Ena ključna razlika med obema API-jema je, da declarativeNetRequest API zahteva, da določite seznam vnaprej določenih naslovov za blokiranje, namesto da bi lahko blokirali celotne kategorije zahtev HTTP, kot bi lahko z chrome.webRequest API.

Pomembno je, da naredite te spremembe v svoji kodi, da zagotovite, da vaša razširitev še naprej pravilno deluje pod Manifestom V3. Tukaj je primer, kako bi spremenili svoj manifest za uporabo declarativeNetRequest API v Manifestu V3:

// Manifest V2 "permissions": [ "webRequest", "webRequestBlocking"
]
// Manifest V3 "permissions": [ "declarativeNetRequest"
]

Prav tako boste morali posodobiti kodo razširitve, da boste lahko uporabljali declarativeNetRequest API namesto chrome.webRequest API.

Drugi vidiki, ki jih morate preveriti

Kar sem omenil, je samo vrh ledene gore. Seveda, če bi želel pokriti vse, bi lahko bil tukaj več dni in ne bi bilo smisla imeti Googlovih vodnikov za razvijalce za Chrome. Medtem ko vas bo to, kar sem obravnaval, dovolj pripravilo na prihodnost, da oborožite svoje razširitve za Chrome v tem prehodu, tukaj je nekaj drugih stvari, ki bi jih morda želeli pogledati, da zagotovite, da vaše razširitve delujejo na vrhuncu svoje igre.

  • Selitev skriptov v ozadju v kontekst izvajanja storitvenega delavca: Kot smo že omenili, Manifest V3 nadomešča strani v ozadju z enim delavcem razširitvene storitve, zato bo morda treba posodobiti skripte v ozadju, da se prilagodijo kontekstu izvajanja storitvenega delavca.
  • Poenotenje **chrome.browserAction** in **chrome.pageAction** API-ji: Ta dva enakovredna API-ja sta združena v en sam API v Manifest V3, zato bo morda treba preseliti na Action API.
  • Selitvene funkcije, ki pričakujejo kontekst ozadja Manifest V2: Sprejetje storitvenih delavcev v Manifest V3 ni združljivo z metodami, kot je chrome.runtime.getBackgroundPage(), chrome.extension.getBackgroundPage(), chrome.extension.getExtensionTabs()in chrome.extension.getViews(). Morda bo treba preiti na zasnovo, ki posreduje sporočila med drugimi konteksti in servisnim delavcem v ozadju.
  • Premikanje zahtev CORS v skriptih vsebine v storitvenega delavca v ozadju: Zahteve CORS v skriptih vsebine bo morda treba premakniti v storitvenega delavca v ozadju, da bodo skladne z Manifestom V3.
  • Prehod z izvajanja zunanje kode ali poljubnih nizov: Manifest V3 ne dovoljuje več izvajanja zunanje logike z uporabo chrome.scripting.executeScript({code: '...'}), eval()in new Function(). Morda bo treba premakniti vso zunanjo kodo (JavaScript, WebAssembly, CSS) v paket razširitev, posodobiti reference skriptov in slogov za nalaganje virov iz paketa razširitev in uporabiti chrome.runtime.getURL() za izdelavo URL-jev virov med izvajanjem.
  • Posodabljanje določenih skriptnih metod in metod CSS v API-ju Tabs: Kot smo že omenili, se več metod premakne iz API-ja Tabs v API za skriptiranje v Manifestu V3. Morda bo treba posodobiti vse klice teh metod za uporabo pravilnega API-ja Manifest V3.

In še veliko več!

Vzemite si nekaj časa in se seznanite z vsemi spremembami. Navsezadnje je ta sprememba neizogibna in če ne želite, da bi bile vaše razširitve Manifest V2 izgubljene zaradi izogibanja temu prehodu, potem nekaj časa oborožite s potrebnim znanjem.

Po drugi strani pa, če ste začetnik programiranja razširitev za Chrome in želite začeti, je odličen način za to, da se potopite v svet Chromovih orodij za spletne razvijalce. To sem naredil na tečaju o Linkedinovo učenje, kar me je kar hitro pripeljalo do znanja. Ko boste pridobili to osnovno znanje, se vrnite k temu članku in prevedite, kar veste, v Manifest V3!

Torej, kako bom v prihodnje uporabljal funkcije v novem Manifestu V3?

No, zame je prehod na Manifest V3 in odstranitev chrome.webRequest Zdi se, da API preusmerja razširitve stran od primerov uporabe, osredotočenih na podatke (kot so zaviralci oglasov), k bolj funkcionalnim in aplikacijskim uporabam. Zadnje čase se izogibam razvoju aplikacij, saj lahko postane precej virov intenzivno včasih. Vendar pa je ta premik morda tisto, kar me pripelje nazaj!

Vzpon orodij AI v zadnjem času, mnoga z API-ji, ki so na voljo za uporabo, je sprožil ogromno novih in svežih aplikacij SaaS. Osebno menim, da prihaja ob pravem času s prehodom na razširitve za Chrome, ki bolj temeljijo na aplikacijah! Medtem ko bodo številne starejše razširitve morda izbrisane s tem prehodom, bo njihovo mesto prevzelo veliko novih, zgrajenih okoli novih idej SaaS.

Zato je to vznemirljiva posodobitev, s katero lahko skočite in prenovite stare razširitve ali zgradite nove! Osebno vidim veliko možnosti pri uporabi API-jev, ki vključujejo uporabo umetne inteligence v razširitvah za izboljšanje uporabniške izkušnje brskanja. A to je pravzaprav le vrh ledene gore. Če se želite res lotiti stvari s svojimi profesionalnimi razširitvami ali se obrniti na podjetja, da bi zanje zgradila/posodobila razširitve, priporočam nadgradnjo vašega računa Gmail za prednosti, ki jih ponuja pri sodelovanju, razvoju in objavljanju razširitev v spletni trgovini Chrome.

Vendar ne pozabite, da so zahteve vsakega razvijalca drugačne, zato se naučite, kaj potrebujete, da obdržite svoje trenutne razširitve ali nove!

Časovni žig:

Več od Triki CSS