Manifest v3
tomcollis opened this issue Β· 15 comments
I've just started experimenting with browser extensions and came across this from OctoPrint - Open in Bundle Viewer which was based on your template.
Do you have plans to update this template or rather recreate this template for version 3 of the manifest.json?
Thanks for opening the issue!
The issue is that Parcel does not support the Manifest v3 yet so the only way to use v3 is to use webpack (or to avoid the WebExtension transformer, which would change the template substantially). This is tracked in parcel-bundler/parcel#6079 and there's nothing that can be done in this repo unfortunately.
You have until early 2022 to publish your v2 extension and then Parcel hopefully will update the transformer to support v3 before the "end of life for v2" in 2023.
If it's urgent, your only choice is to use a previous, webpack-based version. This is the last one before moving to Parcel: https://github.com/fregante/browser-extension-template/tree/a0f9cbe27c854e98d52033783a9e951246217dab
π but it's not advised at this point.
Please leave a π on parcel-bundler/parcel#6079 if you're interested
Thank you, I have liked the issue you suggested.
I'll keep this open until I update Parcel here if you don't mind.
Unfortunately correct. There has been a PR on parcel's repo open for a while to add support
FYI for anyone looking for a hacky immediate workaround, you can manually patch the @parcel/transformer-webextension
module via https://github.com/ds300/patch-package to recognize the new schema. It worked for me in lindylearn/unclutter@3bc830e.
I see from this comment 3 days ago that apparently all the work is done, and it's just awaiting final review. Does this mean that until it's merged we can in theory just specify a dependency on the GitHub PR branch?
Hrm, maybe not, since @parcel/transformer-webextension
is a separate package in a workspace subdirectory, and I can't see any obvious way to specify a dependency on a subdirectory of a GitHub branch. I notice that this StackOverflow question seems to ask how to do that, and didn't get any answers in 9 months, so maybe it's just not possible and ds300/patch-package is the best way.
Monorepos are a mess of tangled dependencies so I'd advise against trying to load that separately π³
Hopefully they're only a few days away from mergingβ¦
OK thanks for the advice! Yes hopefully indeed, since I'm working on an extension which I'd love to have published in the Chrome Web Store before a conference coming up soon...
The PR has been merged. Try running this in a few hours:
npm install -D parcel@nightly @parcel/config-webextension@nightly
You can see the progress in the PR #75
However unfortunately it doesn't work due to:
What is left to do on this?
Thanks for the ping! I updated parcel, tested it and it works as expected!
Note
This change effectively drops support for Firefox until they support Manifest v3: https://bugzilla.mozilla.org/show_bug.cgi?id=1578284
To enable support manually:
- Run
npm run build
- In the
distribution/manifest.json
file, revert the same changes you see in #75:- set
manifest_version
to 2 - move
host_permissions
items back topermissions
- restore the previous
background
key
- set
- Save that version just for Firefox