对于多设备混合应用程序构建中的 exclude/ignore 个文件夹,我们有一些解决方法吗?

Do we have some workaround to exclude/ignore folders from Multi-Device Hybrid App build?

我知道之前有人问过这个问题 here 但是问题的答案并没有说明可以解决这个问题的任何方法,所以我问了一个新问题。我需要任何可用于解决问题的解决方法。我不想将所有文件取出到单独的目录中,因为我希望 visual studio 来管理我的项目。我不太同意将实际项目之外的所有应用程序代码放在一个单独的项目中的想法。

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


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

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

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

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

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

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

这不是一个理想的解决方案,但由于需要更好的选择,它似乎可行:

  1. 创建一个空项目(如此处所述)。将所有源代码(html、css、js 等)放入其中,使其成为新的 'app' 文件夹。
  2. 将您的节点和 bower 模块安装到该项目中。
  3. 在这个新项目中,配置gulp输出到你的cordova项目中的dist文件夹。
  4. 构建您的 cordova 项目,它现在应该只包含您的串联文件。

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

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

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

样本:

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 的答案:Multi-device hybrid apps: How to do combine, minify and obfuscate in release and distribution build process?

我写了这个插件可能会解决这个问题 -> 这是 Code

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