PhoneGap / Cordova 3.0プロジェクトの.gitignore-何をコミットすればよいですか?


105

新しいPhoneGap 3.0プロジェクトを作成しようとしました...注:PhoneGapは初めてです。とにかく、プロジェクトフォルダーには次のものが含まれています。

  • .cordova
  • merges
  • platforms
  • plugins
  • www

試しphonegap local run androidてみたところ、バイナリ/生成されたファイルがたくさん表示されましたplatforms/android。これは、このフォルダー構造のどの部分をgitリポジトリに追加する必要があるのか​​疑問に思います。通常、バイナリファイルをコミットするのは非常に悪い習慣だと思います。したがって、私は通常のようにパターンを追加することになりbin/obj/*.o*.pycするなど.gitignoreのみマージの競合を作成するのに役立つものと私のgitリポジトリを汚染を避けるために。

確かに、wwwgitに追加する必要がありますが、プロジェクトの他の部分についてはどうでしょうか。それらはソースコードの製品であり、プロジェクトの構成はどの程度拡張されていますか?

職業はなんですか?私は新しいので、ここで何が意味があるのか​​ほとんど理解できません...


1
PhoneGap / Cordovaについては知りませんが、疑問がある場合は、すべてをコミットしてください。何かが不必要だとわかったときに、いつでも削除できます:)
Leif

回答:


43

答えは、フォンガップアプリを開発しているプラ​​ットフォームや、標準のディレクトリ構造に従っているかどうかによって異なります。

プロジェクトのディレクトリ構造が標準の場合、このgitignoreから始めて、必要に応じて変更できます。

経験則では、bin/およびgen/ディレクトリのような生成されたすべてのファイルを除外する必要があります。アプリのAndroidバージョンを開発している場合は、のようなビルドファイルを除外する必要があります*.apk

androidサブディレクトリに生成されたすべてのファイルも除外する必要があります。

Android/bin/
Android/gen/
Android/assets/

1
どのプラットフォームを開発しているかは関係ありません。まだ開発していないプラットフォームにのみ当てはまるものを無視しても害はありません。彼は、標準のディレクトリ構造を使用していることを示唆しています。
rjmunro 2013

Cordova gitignoreの恥知らずなプラグイン:gist.github.com/elliot-labs/c92b3e52053906816074170ada511962
Elliot Labs LLC

49

@ジェイク・モシェンコの答えを拡張する:

platformsディレクトリを省略したいのですが。実際、pluginsplatformsディレクトリの両方を除外することができます。の良い出発点.gitignore

platforms/
plugins/

この問題は、実際に作業する前に、リポジトリのクリーンコピーを初期化する必要があることです。次のようなinitスクリプトを作成することは理にかなっています。

#!/bin/bash
textReset=$(tput sgr0)
textGreen=$(tput setaf 2)
message_info () {
  echo "${textGreen}[my-app]${textReset} $1"
}

message_info "Creating necessary directories..."
mkdir plugins
mkdir platforms

message_info "Adding platforms..."
# If using cordova, change to: cordova platform add android
phonegap build android
phonegap build ios

message_info "Adding plugins..."
# If using cordova, change to: cordova plugin add
phonegap local plugin add https://git-wip-us.apache.org/repos/asf/cordova-plugin-device.git

このアプローチの注意点は、phonegap / cordovaでサポートされているもの(画面の向きのサポートなど)以外でプラットフォーム固有のアプリのコード/構成をカスタマイズするのが少し難しくなることです。

更新:Bash Gist

この要点には、pluginsおよびplatformsディレクトリをコミットしないプロジェクトを処理するためのより完全なスクリプトが含まれています。アイコンとスプラッシュスクリーン画像をwwwからプラットフォームディレクトリ(iOSおよびAndroidの場合)にコピーし、プラグインをインストールし、バージョン管理に追加する必要のあるプラットフォーム固有のファイルを処理するためのメカニズムを提供します。

更新:Grunt Gist

上記のbashスクリプトのGruntポートであるもう1つの要点を次に示します。(うなり声を提案してくれた@obieに感謝します)。


2
このアプローチを使用したプラグイン開発に対応するために、カスタムプラグイン/ネイティブコードの追加やAndroidManifest.xmlの変更をどのように処理しますか?AndroidManifest.xmlの変更を追加できる他の場所はありますか?
2013年

リンクされた要旨、特にここを参照してください。platform-mergesディレクトリのファイルを上書き/追加します。たとえば、コミットできますplatform-merges/android/AndroidManifest.xml。このアプローチは単純なプロジェクトではうまく機能しますが、大規模なプロジェクトでは事態が複雑になる可能性があります。
ジョナサンディクソン

あなたの助けに感謝します:)私は同じことをするためにgruntを使用することになりました(github.com/gruntjs/grunt-contrib-copyを使用
obie

3
あなたは、それぞれ1で.gitkeepファイルを追加し、あなたの.gitignoreでこれを置くことによって、フォルダのプラグインやプラットフォームを作成してステップを避けることができ:プラットフォーム/ *プラットフォーム/ .gitkeepプラグイン/ *プラグイン/ .gitkeep!!
aharris88

1
@ aharris88良い点ですが、プロジェクトのクリーンアップを簡単にするためにそれを避けたと思います。すなわちrm -rf platforms plugins
ジョナサンディクソン

7

だから私はこれを試行錯誤で理解しました。platformsあなたはPhoneGapのローカルまたはリモートのビルドを使用している場合、それはオンザフライで生成されるディレクトリは、省略することができます。隠しフォルダを含む他のすべてのフォルダ.cordovaが必要です。


4
こんにちは。サードパーティのjarファイルまたはObjective-Cソースファイルを使用して、AndroidまたはiOSビルドをカスタマイズする場合(たとえば、Parse Notification統合など)はどうでしょう。それは間違いなくいくつかのJavaコードを書く必要があり、それからgitリポジトリを管理する方法は?phonegap local build androidはカスタマイズされたファイルを上書きしますか?
EthanZ 2013

ちなみに、PhoneGap Buildは.cordovaフォルダーなしでビルドされるようです-なぜそれが必要なのですか@Jake Moshenko?
Matty J

7
この提案は完全に間違っています。重要なことをしている場合は、最終的にはプラットフォーム固有のコードとプラグインを追加する必要があるため、platformsディレクトリは省略しないでください。多くの場合、Androidマニフェストとios plistを操作する必要があります。
Daniel Williams

3
プラットフォームを省くことは良いスタートだと思います。依存関係がある場合は、別の場所に保持し、プラットフォームを追加した後、ビルドステップとしてコピーする必要があります。
tishma 2014年

私はこの答えを好む。私はプラットフォームのディレクトリのみを除外しています
5

4

この問題についての私の経験と、ついに私たちがたどったアプローチをここに残したいと思いました。

私たちのphonegapプロジェクトでは、.gitignoreファイルを使用して、フォルダー/ platform以外のすべてのファイルをコミットし始めました。私たちはこのように考え、開発者がリポジトリのクローンを作成したときに実行する必要がある唯一のアクションは実行することです:

phonegap / cordova追加プラットフォーム

しかし、そうではありませんでした。プラットフォームを追加してコンパイルしようとすると、エラーが表示され、アプリがデバイスにインストールされませんでした。

ログを見ると、このエラーはプラグインが原因であるというヒットがいくつかありました。そこで、プロジェクトで使用していたすべてのプラグインを再インストールし、アプリが正しく実行されるようにすることにしました。

だから私のアドバイスは、フォルダのプラットフォームとプラグインを除いたすべてのコンテンツをリポジトリに保存することです。プロジェクトで使用されるプラグインのリストを含むファイルREADMEを作成してリポジトリにアップロードします。

このようにして、開発者がリポジトリのクローンを作成する場合、開発者は次のことを行う必要があります。

1.-プラットフォームを追加:phonegap / cordova add platform "platform"

2.-プラグインを追加します。phonegap/ cordova plugin add "plugin"

お役に立てれば!

よろしく。


1

このようなものの多くは古く、Apache Cordovaの最新バージョンには実際には適用されません。私はApache Cordova 5.1.1を使用しています。この.gitignoreを使用すると、AndroidとIOSの両方でバージョン管理する必要のないものをすべてブロックしながら、カスタムアイコンなどでカスタマイズできます。はい.gradleが使用されているため、削除しないでください。

www/
.gradle/
build/
.tmp/
.temp/
coverage/
*.log
node_modules/
bower_components/

www/そこにフォルダーを含めるのはなぜですか?私のアプリケーションでは、これが実際にWebアプリケーションの生活の中で最も有用なものでした。
vindia 2015年

2
@vindia私のリストは、誰かが始めるためのテンプレートになると思います。すべての流行に敏感な人がwww /フォルダーを自動ビルドプロセスの揮発性出力として使用していると思いました。悪い!
Helzgate 2015年

www/コンテンツはカスタムビルドスクリプトによって生成されるため除外します。あなたはそこにソースファイルを本当に望んでいません。
kim3er

0

それはやや個人的な好みですが、私はこれを行いました(Androidのみのプロジェクトの場合)。ほとんどを削除するが、カスタムを維持する

ToonPlane/platforms/android/*
!ToonPlane/platforms/android/AndroidManifest.xml
ToonPlane/plugins/*
!ToonPlane/plugins/android.json
!ToonPlane/plugins/fetch.json
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.