2

我知道这个问题已经在这里早些时候被问过,但这个问题的答案并没有说明可以解决这个问题的任何方式,所以我问了一个新问题。我需要任何可用于解决问题的解决方法。我不想将所有文件取出到单独的目录中,因为我希望 Visual Studio 来管理我的项目。而且我不太同意将实际项目之外的所有应用程序代码放在一个单独的项目中的想法。

背景我的混合应用程序项目具有以下目录结构:


项目
------------app
------------dist(由 gulp 实用程序使用 app 目录中的文件创建)
------------图片
------------合并
------------node_modules
------------index.html
-------- ----bower_components

我们正在使用 gulp 连接我们所有的 js 文件并将其作为单个文件放在 dist 目录中。

问题 我们在编译我们的应用程序时面临的问题是插件试图将节点模块以及应用程序文件夹复制到我们不想要的构建中。有没有办法指定我们希望cordova在所有平台的特定平台构建期间复制或忽略的所有文件。像这里一样,我只希望复制 dist 目录中的文件,我们不希望在构建期间复制 app 目录中的任何内容。

4

4 回答 4

6

一个快速(但不是超级干净)的解决方案是告诉 vs-mda 插件忽略您的附加文件夹和文件。这可以在'%APPDATA%\npm\node_modules\vs-mda\lib\util.js'中的'util.getDefaultFileNameEndingExclusions()'函数中 完成

样本 :

return [settings.projectSourceDir + '/bin',
        settings.projectSourceDir + '/bld',
        settings.projectSourceDir + '/merges',
        settings.projectSourceDir + '/plugins',
        settings.projectSourceDir + '/res',
        settings.projectSourceDir + '/test',
        settings.projectSourceDir + '/tests',
        settings.projectSourceDir + '/node_modules', // Ignore node_modules
        'gruntfile.js', 'package.json', '.vspscc',   // Ignore other files in root
        '.jsproj', '.jsproj.user'];

并享受轻量包装!(对我来说,iOS 为 11Mo -> 4Mo)

有关将 grunt/gulp 与视觉集成的更多信息,请参见 creal 的此答案:多设备混合应用程序:如何在发布和分发构建过程中进行组合、缩小和混淆?

于 2015-02-03T09:29:59.097 回答
3

我写了这个插件可以解决这个问题 -> 这是代码

现在默认递归排除目录。请参阅自述文件。

于 2015-04-22T03:07:34.610 回答
1

嗨,我在这里发布了一个类似的问题(How to merge or override the build.xml for Android in phonegap / Cordova

我知道您不想移动文件夹,但除了移动父文件夹中的“node_modules”之外我没有找到任何解决方案,您选择 Gulp 是一个不错的选择,因为我知道 Gulp 可以在父文件夹中找到模块文件夹(在我自己的项目中,我使用了 Grunt,他自己无法做到这一点......)

我认为这是唯一的解决方案。

于 2015-01-28T22:35:22.407 回答
1

这不是一个理想的解决方案,但是,如果需要更好的选择,它似乎可以工作:

  1. 创建一个空项目(如此处所述https://stackoverflow.com/a/21695488/2117077)。将所有源代码(html、css、js 等)放入其中,使其成为新的“应用程序”文件夹。
  2. 将你的 node 和 bower 模块安装到这个项目中。
  3. 在这个新项目中,配置 gulp 以输出到您的 cordova 项目中的 dist 文件夹。
  4. 构建您的 cordova 项目,该项目现在应该只包含您的连接文件。

我用 grunt 来测试这个,但我认为它应该可以用 gulp 复制。为方便起见,我还向 cordova 项目添加了一个 msbuild 目标,以便在构建时调用 grunt。

还有一些其他文件没有解决(对我来说,vspscc 文件),所以仍然需要一个实质性的解决方案(某种忽略文件?)。

于 2015-02-01T10:03:45.557 回答