我有几个Chrome应用程序共享各种资产(CSS,JavaScript等),但似乎所有组成文件都必须位于app文件夹中。我不想将这些文件放在服务器上,因为我希望应用程序完全自包含。我尝试了OS X别名,但Chrome系统在< script>中没有识别它们。元件。
显然,我不想维护这些文件的多个副本,因为其中一些文件在开发过程中经常发生变化。
没有编写每次文件更改时运行的预处理器的想法?它将使用一个名为files.json的文件,列出文件夹或其子文件夹中尚未存在的资源。
答案 0 :(得分:3)
我们目前拥有“共享模块”的实验性支持,其中一个扩展或应用程序可以依赖于其他一组。依赖项只提供可以在依赖于它们的应用程序/扩展中加载的文件;他们不能拥有自己的任何权限或功能(如背景页面)。在依赖于共享模块的应用程序/扩展程序的安装时,我们将自动从chrome webstore下载并安装任何缺少的依赖项,如果您卸载所有依赖它们的应用程序/扩展程序,则会在以后删除它们。
目前该功能仅在chrome的开发频道中提供,但我们打算在有机会获得开发人员反馈时全力支持。如果您想尝试一下,请抓取chrome dev channel (or canary)。
的副本在manifest.json中,扩展名只是您要共享的文件包:
{
...
"export": {
"resources": [ "foo.js", "bar.js" ]
},
...
}
在manifest.json中,想要依赖上述内容的扩展程序/应用程序:
{
...
"import": [{"id": "<id of dependency goes here>"}],
...
}
有关更多示例,请参阅此代码视图中的测试数据文件:
https://codereview.chromium.org/13971005
(抱歉,我们还没有这方面的好文件;我们最终会这样做)
尝试并向extensions-dev@chromium.org或apps-dev@chromium.org发送一些反馈。
答案 1 :(得分:1)
答案 2 :(得分:0)
当我说“编写预处理器”时,我夸大了需要做的事情。 jusio的解决方案我觉得有效,但我做了一些更简单的事情,这个脚本从BBEdit内部运行:
#! /bin/sh
cd /Users/marc/Documents/Dropbox/dev/chrome
rsync -vrt lib NoteTree
open '/Applications/Chrome Apps.localized/Default nnlinebecgjceggljgcnfploamgnjjhl.app'
这会复制更改的文件,然后调用Chrome应用。如果它已经在运行期间(通常是在开发期间),我只需右键单击并选择Reload App。这是一个非常快速的编辑和测试周期。
(说明:/ Users / marc / Documents / Dropbox / dev / chrome是我开发的父文件夹,子文件夹lib包含公共文件,NoteTree是我目前正在处理的应用程序。)