.gitignore für PhoneGap / Cordova 3.0-Projekte - was soll ich festlegen?


105

Ich habe gerade versucht, ein neues Phonegap 3.0-Projekt zu erstellen ... Hinweis: Ich bin neu in Phonegap. Wie auch immer, ich sehe, der Projektordner enthält:

  • .cordova
  • merges
  • platforms
  • plugins
  • www

Und nachdem phonegap local run androidich es versucht habe, sehe ich viele binäre / generierte Dateien in platforms/android. Daher frage ich mich, welche Teile dieser Ordnerstruktur ich meinem Git-Repository hinzufügen soll. Normalerweise würde ich es als äußerst schlecht empfinden, Binärdateien festzuschreiben. Daher würde ich normalerweise hinzufügen Muster wie bin/, obj/, *.o, *.pycetc. .gitignorezu verschmutzen meine Git Repository mit den Dingen zu vermeiden , die nur Merge Konflikte zu schaffen dienen.

Sicherlich wwwsollte git hinzugefügt werden, aber was ist mit den anderen Teilen des Projekts. Inwieweit handelt es sich um Produkte des Quellcodes und in welchem ​​Umfang handelt es sich um Projektkonfigurationen?

Wie geht's? Zugegeben, ich bin neu und verstehe kaum, was hier Sinn macht ...


1
Ich weiß nichts über PhoneGap / Cordova, aber wenn Sie Zweifel haben, legen Sie einfach alles fest. Sie können es später jederzeit entfernen, wenn Sie erfahren, dass etwas überflüssig war :)
Leif

Antworten:


43

Die Antwort hängt davon ab, auf welchen Plattformen Sie die Phongap-App entwickeln und ob Sie der Standardverzeichnisstruktur folgen.

Wenn Ihre Projektverzeichnisstruktur Standard ist, können Sie von diesem Gitignore aus beginnen und ihn an Ihre Bedürfnisse anpassen .

Als Faustregel gilt, dass Sie alle generierten Dateien wie die Verzeichnisse bin/und ausschließen müssen gen/. Wenn Sie eine Android-Version Ihrer App entwickeln, sollten Sie Build-Dateien ebenfalls ausschließen *.apk.

Alle generierten Dateien im androidUnterverzeichnis sollten ebenfalls ausgeschlossen werden:

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

1
Es spielt keine Rolle, welche Plattformen Sie entwickeln. Es schadet nicht, Dinge zu ignorieren, die nur für Plattformen gelten, auf denen Sie noch nicht entwickeln. Er hat impliziert, dass er die Standardverzeichnisstruktur verwendet.
rjmunro

Schamloser Stecker für meinen Cordova Gitignore: gist.github.com/elliot-labs/c92b3e52053906816074170ada511962
Elliot Labs LLC

49

Erweitern von @Jake Moshenko Antwort:

Ich mag die Idee, das platformsVerzeichnis wegzulassen . Tatsächlich kann ich sowohl das pluginsals auch das platformsVerzeichnis ausschließen. Ein guter Ausgangspunkt für .gitignore:

platforms/
plugins/

Das Problem dabei ist, dass eine saubere Kopie des Repos initialisiert werden muss, bevor Sie tatsächlich damit arbeiten können. Es kann sinnvoll sein, ein Init-Skript zu erstellen, z.

#!/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

Eine Einschränkung dieses Ansatzes besteht darin, dass es etwas schwieriger ist, den plattformspezifischen App-Code / die plattformspezifische Konfiguration außerhalb der von Phonegap / Cordova unterstützten Funktionen anzupassen (dh Unterstützung der Bildschirmausrichtung).

Update: Bash Gist

Diese Übersicht enthält ein vollständigeres Skript für die Bearbeitung eines Projekts, bei dem die Verzeichnisse pluginsund nicht festgeschrieben werdenplatforms . Es bietet einen Mechanismus zum Kopieren der Symbole und Begrüßungsbildschirme von www in die Plattformverzeichnisse (für iOS und Android), zum Installieren von Plugins und zum Behandeln plattformspezifischer Dateien, die der Versionskontrolle hinzugefügt werden sollten.

Update: Grunt Gist

Hier ist ein weiterer Kern, der ein Grunt-Port des oben erwähnten Bash-Skripts ist. (Danke an @obie für das Grunzen).


2
Wie würde ich mit dem Hinzufügen von maßgeschneiderten Plugins / nativem Code oder dem Vornehmen von Änderungen an AndroidManifest.xml umgehen, um die Plugin-Entwicklung mit diesem Ansatz zu ermöglichen? Gibt es irgendwo anders, wo Änderungen an AndroidManifest.xml hinzugefügt werden können?
Obie

Siehe den verknüpften Kern, speziell hier . Es überschreibt / fügt alle Dateien aus dem platform-mergesVerzeichnis hinzu. Zum Beispiel könnten Sie festschreiben platform-merges/android/AndroidManifest.xml. Dieser Ansatz eignet sich gut für einfache Projekte, kann jedoch bei größeren Projekten zu Komplikationen führen.
Jonathan Dixon


3
Sie können den Schritt beim Erstellen des Plugins- und Plattformordners vermeiden, indem Sie jeweils eine .gitkeep-Datei hinzufügen und diese in Ihren .gitignore einfügen: platform / *! Platforms / .gitkeep-Plugins / *! Plugins / .gitkeep
aharris88

1
@ aharris88 Guter Punkt, aber ich glaube, ich habe das vermieden, um die Reinigung des Projekts zu vereinfachen. dh rm -rf platforms plugins.
Jonathan Dixon

7

Also habe ich das nur durch Ausprobieren herausgefunden. Das platformsVerzeichnis kann weggelassen werden, wenn Sie Phonegap Local oder Remote Build verwenden, da es im laufenden Betrieb generiert wird. Alle anderen Ordner, einschließlich des versteckten Ordners, .cordovasind erforderlich.


4
Hallo, was ist, wenn ich eine JAR-Datei eines Drittanbieters oder eine Objective-C-Quelldatei verwendet habe, um entweder Android- oder iOS-Build anzupassen, z. B. die Parse Notification-Integration. Es muss definitiv Java-Code geschrieben werden. Wie kann man dann das Git-Repository verwalten? Wird Phonegap Local Build Android meine benutzerdefinierten Dateien überschreiben?
EthanZ

Zu .cordovaIhrer Information , es sieht so aus, als würde PhoneGap Build ohne den Ordner erstellt - warum ist es Ihrer Meinung nach bei Jake Moshenko erforderlich?
Matty J

7
Dieser Vorschlag ist völlig falsch. Sie sollten das Plattformverzeichnis nicht weglassen, da Sie eventuell plattformspezifischen Code und Plugins hinzufügen müssen, wenn Sie etwas nicht Triviales tun. Sie müssen auch häufig das Android-Manifest und die iOS-Listen manipulieren.
Daniel Williams

3
Ich würde sagen, dass das Weglassen von Plattformen ein guter Anfang ist. Wenn Abhängigkeiten vorhanden sind, sollten diese an einem anderen Ort aufbewahrt und nach dem Hinzufügen einer Plattform als Erstellungsschritt kopiert werden.
Tishma

Ich bevorzuge diese Antwort. Ich schließe nur Plattformen Verzeichnis aus
Realtebo

4

Ich wollte nur meine Erfahrungen mit diesem Thema und dem Ansatz, den wir schließlich verfolgten, hier lassen.

In unserem Phonegap-Projekt haben wir begonnen, alle Dateien abzüglich des Ordners / der Plattform mithilfe der .gitignore-Datei festzuschreiben. Wir dachten so, wenn der Entwickler das Repository klont, bleibt nur noch Folgendes auszuführen:

phonegap / cordova Plattform hinzufügen

Aber es war nicht so. Sobald die Plattform hinzugefügt wurde und wir versuchten zu kompilieren, erschien ein Fehler und die App wurde nicht auf dem Gerät installiert.

Beim Durchsuchen der Protokolle haben wir einige Treffer erhalten, dass dieser Fehler auf Plugins zurückzuführen ist. Deshalb haben wir uns entschlossen, alle Plugins, die wir im Projekt verwendet haben, neu zu installieren und die App ordnungsgemäß auszuführen.

Mein Rat ist daher, den gesamten Inhalt abzüglich der Ordnerplattform und der Plugins im Repository zu speichern. Erstellen Sie eine README-Datei mit einer Liste der im Projekt verwendeten Plugins und laden Sie sie in das Repository hoch.

Auf diese Weise muss ein Entwickler, wenn er das Repository klont, Folgendes tun:

1.- Fügen Sie die Plattformen hinzu: phonegap / cordova Plattform hinzufügen "Plattform"

2.- Addiere die Plugins: Phonegap / Cordova Plugin füge "Plugin" hinzu

Hoffe das hilft!

Grüße.


1

Viele dieser Dinge sind alt und gelten nicht wirklich für die neueste Version von Apache Cordova. Ich verwende Apache Cordova 5.1.1 und dieser .gitignore ermöglicht es mir, weiterhin benutzerdefinierte Symbole usw. anzupassen, während alle Dinge blockiert werden, die wir nicht für Android und IOS versionieren müssen. Ja .gradle wird verwendet, entfernen Sie es also nicht!

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

Warum sollten Sie den www/Ordner dort einfügen? In meiner Anwendung waren dies tatsächlich die meisten nützlichen Dinge aus dem Leben der Webanwendung.
Vindia

2
@ vindia Ich denke, meine Liste kann eine Vorlage sein, um jemanden zum Laufen zu bringen. Ich dachte, alle Hipster verwenden den Ordner www / als flüchtige Ausgabe für ihren automatisierten Erstellungsprozess. Mein Fehler!
Helzgate

Ich schließe aus, www/weil die Inhalte von benutzerdefinierten Build-Skripten generiert werden. Sie wollen dort nicht wirklich Quelldateien.
Kim3er

0

Obwohl es etwas persönliche Vorlieben sind, habe ich mich dafür entschieden (für ein Android-Projekt). Die meisten entfernen, aber die Gewohnheit beibehalten

ToonPlane/platforms/android/*
!ToonPlane/platforms/android/AndroidManifest.xml
ToonPlane/plugins/*
!ToonPlane/plugins/android.json
!ToonPlane/plugins/fetch.json
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.