我们是否有一些解决方法可以从多设备混合应用程序构建中排除/忽略文件夹?

时间:2015-01-28 13:25:10

标签: visual-studio-cordova multi-device-hybrid-apps

我知道这个问题早先被提出here,但问题的答案并没有说明可以解决这个问题的方法,所以我问了一个新问题。我需要任何可用于解决问题的解决方法。我不想把所有文件都带到一个单独的目录中,因为我希望visual studio能够管理我的项目。我并不非常同意将所有应用程序代码放在实际项目之外的单独项目中。

背景我的混合应用项目的目录结构如下:


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

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

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

4 个答案:

答案 0 :(得分:6)

快速(但不是超级干净)的解决方案是告诉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'];

享受lightweigth套餐! (对我来说,11Mo - > 4Mo for iOS)

有关将grunt / gulp与visual结合起来的更多信息来自creal:Multi-device hybrid apps: How to do combine, minify and obfuscate in release and distribution build process?

答案 1 :(得分:3)

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

现在默认以递归方式排除目录。参见自述文件。

答案 2 :(得分:1)

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

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

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

答案 3 :(得分:1)

这不是一个理想的解决方案,但是,由于缺乏更好的选择,它似乎有效:

  1. 创建一个空项目(如此处所述https://stackoverflow.com/a/21695488/2117077)。把你的所有来源(html,css,js等)放入其中,这样它就成了你的新应用程序'文件夹中。
  2. 将节点和bower模块安装到此项目中。
  3. 在这个新项目中,配置gulp输出到cordova项目中的dist文件夹。
  4. 构建您的cordova项目,该项目现在应该只包含您的连接文件。
  5. 我用grunt来测试这个,但我认为应该可以用gulp进行复制。为方便起见,我还在cordova项目中添加了一个msbuild目标,以便在构建时调用grunt。

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