在Chrome(打包)应用程序之间共享实施文件?

时间:2013-10-07 22:50:15

标签: javascript google-chrome-app

我有几个Chrome应用程序共享各种资产(CSS,JavaScript等),但似乎所有组成文件都必须位于app文件夹中。我不想将这些文件放在服务器上,因为我希望应用程序完全自包含。我尝试了OS X别名,但Chrome系统在< script>中没有识别它们。元件。

显然,我不想维护这些文件的多个副本,因为其中一些文件在开发过程中经常发生变化。

没有编写每次文件更改时运行的预处理器的想法?它将使用一个名为files.json的文件,列出文件夹或其子文件夹中尚未存在的资源。

3 个答案:

答案 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)

通常这样做是通过包管理器完成的。您可以使用bower添加一些本地git依赖项。或者,如果您只是想在每次目标文件更改时将文件复制到文件夹,则可以使用Grunt任务运行器和Watch任务。

答案 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是我目前正在处理的应用程序。)