3

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

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

除了编写每次文件更改时运行的预处理器之外,还有什么想法吗?它将使用一个名为 files.json 之类的文件,其中列出了尚未在文件夹或其子文件夹之一中的资产。

4

3 回答 3

3

我们目前对“共享模块”提供实验性支持,其中一个扩展程序或应用程序可以依赖于一组其他程序。依赖项只是提供可以加载到依赖它们的应用程序/扩展中的文件;他们不能拥有自己的任何权限或功能(如背景页面)。在安装依赖于共享模块的应用程序/扩展程序时,我们将自动从 chrome 网上商店下载并安装任何缺少的依赖项,如果您卸载所有依赖于它们的应用程序/扩展程序,我们将在以后删除它们。

目前该功能仅在 chrome 的开发通道中可用,但我们打算在有机会获得开发人员反馈时完全支持它。如果您想尝试一下,请获取chrome dev 频道(或 canary)的副本。

在 manifest.json 中,扩展名只是您要共享的文件包:

{
  ...

  "export": {
    "resources": [ "foo.js", "bar.js" ]
  },

  ...
}

在想要依赖上述内容的扩展程序/应用程序的 manifest.json 中:

{
  ...

  "import": [{"id": "<id of dependency goes here>"}],

  ...
}

有关更多示例,请参阅此 codereview 中的测试数据文件:

https://codereview.chromium.org/13971005

(对不起,我们还没有很好的文档;我们最终会的)

尝试一下并将一些反馈发送到 extensions-dev@chromium.org 或 apps-dev@chromium.org。

于 2013-10-08T20:00:11.120 回答
1

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

于 2013-10-08T10:55:45.680 回答
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 是我目前正在开发的应用程序。)

于 2013-10-08T13:44:17.160 回答