cordova cli生成项目的哪些部分可以在源代码pipe理中安全地进行版本控制?

我正在使用Cordova CLI,而不是使用本地生成的ant解决scheme来进行phonegap / cordova项目的命令行pipe理。 我想知道目录树的哪些部分,如果有的话,不应该放在版本控制之下?

这取决于你的项目和你的工作stream程。

对于很多项目来说,./ ./www文件夹就已经足够了,但是还有一些其他的文件夹可以很好地取决于你正在使用的cli的哪些方面。

例子:

  • ./merges for platform specific HTML / CSS / JS overrides
  • ./.cordova用于cli钩子(比如before_build,after_plugin_add等)

再加上其他的习惯,你可能想在开发过程中./www 。 例如,我有一个./src文件夹,并将内容连接起来并添加到./www作为我们构build过程的一部分。 我们的unit testing也在./www之外。

而不是包含一个特定的文件夹,我有一个.gitignore保持构build文物,如./platforms/*./plugins/*版本控制。

2015 – Cordova 5.1.1回答

在从3.4.0到5.1.1的cordova项目工作了一段时间之后,这里是我的反馈!

我的.gitignore文件如下所示:

 *~ **~ platforms/** plugins/** 

您需要的www / .cordova和其他文件夹是版本。

我的.cordova文件夹目前是空的(我曾经有一些错误,当没有.cordova文件夹,也许不是这样的情况下)

所有的插件和平台都应该注册到config.xml文件中。

如果你通过命令行添加插件,使用cordova plugin add $pluginName --save --shrinkwrap – >它会自动将插件添加到config.xml并修复版本号,使得Cordova项目更容易在开发人员之间共享。

阅读更多关于它和关于共享cordova项目,由function作者。

config.xml有插件允许在安装平台时将插件安装在其他开发人员计算机上。 没有这一点,他们将需要添加自己的插件。

不知何故, config.xml行为就像NPM项目的package.json 。 但我仍然不知道如何处理一个新的插件,据我所知,插件只安装在平台安装,没有npm insall/update等效(但你可以卸载/重新安装平台)。

这里是我的项目的一个例子config.xml

 <?xml version='1.0' encoding='utf-8'?> <widget id="co.xxx" version="0.2.6" xmlns="http://www.w3.org/ns/widgets" xmlns:android="http://schemas.android.com/apk/res/android" xmlns:cdv="http://cordova.apache.org/ns/1.0" xmlns:gap="http://phonegap.com/ns/1.0"> <name>xxx</name> <description> Your Knowledge Network </description> <author email="info@xxx.co" href="https://xxx.co"> xxx </author> <content src="index.html" /> <preference name="permissions" value="none" /> <preference name="StatusBarOverlaysWebView" value="false" /> <preference name="android-minSdkVersion" value="14" /> <preference name="android-targetSdkVersion" value="22" /> <preference name="phonegap-version" value="cli-5.1.1" /> <plugin name="cordova-plugin-device" spec="1.0.1" /> <plugin name="cordova-plugin-console" spec="1.0.1" /> <plugin name="cordova-plugin-whitelist" spec="1.1.0" /> <plugin name="cordova-plugin-crosswalk-webview" spec="1.2.0" /> <access origin="*" /> <allow-intent href="*" /> <engine name="browser" spec="^3.6.0" /> <engine name="android" spec="^4.0.2" /> <plugin name="cordova-plugin-statusbar" spec="^1.0.1" /> </widget> 

平台不会自动安装(据我所知),但至less当用户安装平台,他会得到正确的平台版本!

其他一些人正在使用Plugman ,一个旨在pipe理cordova插件(尚未testing)的工具。

那么你自己的select是什么控制,但是,我个人只会使用版本控制在www folder ,因为是所有你的编码和存储的内容是( html, css, js, images, audio, etc ),所有的其余的将是静态内容(在大多数情况下)

不幸的是,我不能只添加评论,所以这里是我对@blockhead和Sebastien Lorber的回复:

没有必要保存“平台”文件夹甚至文件“AndroidManifest.xml”(或其他平台的任何configuration文件)中的文件。 您可以在'config.xml'中指定您的首选项,它将影响这些生成的特定于平台的configuration文件 (例如AndroidManifest) – 请参阅phonegap文档 。

然后你可以在版本控制下只有文件夹'www'和文件'config.xml'。

如果有人想将Cordova CLI android平台(Android Hybrid复杂项目)编码到subversion中,那么在开发团队时可以排除这些文件:

 // to exclude files into repo .gitignore .gradle .idea local.properties android.iml /build /gradlew /gradlew.bat /gradle CordovaLib/CordovaLib.iml 

如果任何人有一个svn错误导入项目的Gradle选项从磁盘而不是内置的android studio的颠覆客户端,那么下面的链接将有助于你: https : //stackoverflow.com/a/34633162/5287727

自从v2.9以来,我一直是一个cordova开发人员,除了平台和插件文件夹的典型build议大部分时间工作,除非它不。

我注意到,在一个项目中,感觉就像使用人们所知的每个插件,这个咒语已经崩溃了,我无法轻易地在版本控制中来回切换,并且可靠地生成新的版本。

这是由于几个原因:

苹果改变了事情,随着时间的推移,有一些cordova黑客需要添加到一个项目,以使其可靠。 例如,iOS 10添加了一个要求,如果您使用相机,那么您需要指定您正在使用的相机,否则应用程序在尝试时会崩溃。 当我在等待相机插件来解决这个问题的时候,我需要编辑iOS源文件,过了一段时间之后,我需要构build一个旧版本,并解决问题。

但真正的痛苦是,当插件从cordova的做法的方式偏离。 我所指的这个项目使用Adobe Aviary / Image编辑SDK。 他们的说明是安装插件,复制一些单独下载的sdk文件,然后重新安装。 我试图制作一个脚本,不会杀死它,但最终我只是将插件和平台目录提交给应用程序 – 这样我就可以回到过去,并可靠地重新创build构build。

是的,它增加了更大的尺寸来源控制,是的,我很乐意做到“正确”,但它已经咬了我很难。 只是我的$ 0.02

TL/DR - When you starting working with more than a couple of plugins, you might need to consider adding the platforms and plugins folder to source control