Parcel支持捆绑Web扩展:https://v2.parceljs.org/recipes/web-extension/
设置生成服务器并监视更改的命令是:parcel src/manifest.json --host localhost --target webext-dev
。这将把一个web扩展捆绑到dist/
文件夹中。
我想用web-ext run
运行这个扩展。这是Mozilla的一个工具,它可以自动将网络扩展加载到Firefox中,并在更改时重新加载。在dist/
文件夹中运行这个程序应该会成为一对很好的包裹。
但在实践中,捆绑的webextension并没有执行我的内容脚本。这是因为包裹从本地主机为他们提供服务。热模块更换需要标志--host localhost
。但是webextension随后抱怨"page's settings blocked loading of a resource at ws://localhost:1234/ (“connect-src”)."
地块文档还演示了一个构建命令:parcel build src/manifest.json --target webext-prod
。如果我从dist/webext-prod
运行web文本,它就像一个魅力。地块构建命令的新运行会自动触发webextension的重新加载。但这对开发来说没有成效,因为地块建设耗时太长。我想使用它的开发设置。
如何正确配置Web扩展的内容安全策略以允许从localhost加载内容脚本?
到目前为止,我的manifest.json
中的条目如下:
"content_security_policy": "connect-src 'self' 'localhost:';",
-
'localhost:'
语法错误,没有单引号和尾随冒号":"应该使用。它只是像域名一样的特定主机名。 -
localhost
源代码涵盖http://localhost
和https://localhost
(仅适用于http/https方案(,但仅具有标准端口。 -
'self'
令牌仅涵盖CSP3浏览器中的ws://localhost
和wss://localhost
主机源,并且仅具有标准端口。
由于您确实使用了非标准端口号,请尝试:
"content_security_policy": "connect-src 'self' ws://localhost:1234;"