.gitignore pour les projets PhoneGap / Cordova 3.0 - que dois-je engager?

105

J'ai juste essayé de créer un nouveau projet phonegap 3.0 ... Note: je suis nouveau sur phonegap. Quoi qu'il en soit, je vois que le dossier du projet contient:

  • .cordova
  • merges
  • platforms
  • plugins
  • www

Et après avoir essayé, phonegap local run androidje vois beaucoup de fichiers binaires / générés dans platforms/android. Cela me laisse me demander quelles parties de cette structure de dossiers dois-je ajouter à mon référentiel git. Normalement, je considérerais qu'il est extrêmement mauvais de commettre des fichiers binaires. Par conséquent, je normalement ajouter des motifs comme bin/, obj/, *.o, *.pycetc. , pour .gitignorene pas polluer mon dépôt git avec des choses qui ne sert qu'à créer des conflits de fusion.

Sûrement, wwwdevrait être ajouté à git, mais qu'en est-il des autres parties du projet. Dans quelle mesure sont-ils des produits du code source et dans quelle mesure sont-ils une configuration de projet?

Que faire? Certes, je suis nouveau, donc je comprends à peine ce qui a du sens ici ...

Jonasfj
la source
1
Je ne sais pas pour PhoneGap / Cordova mais, en cas de doute, engagez tout. Vous pouvez toujours le supprimer plus tard lorsque vous apprenez que quelque chose était superflu :)
Leif

Réponses:

43

La réponse dépend des plates-formes sur lesquelles vous développez l'application phongap et si vous suivez la structure de répertoires standard.

Si la structure du répertoire de votre projet est standard, vous pouvez partir de ce gitignore et le modifier selon vos besoins.

En règle générale, vous devez exclure tous les fichiers générés tels que les répertoires bin/et gen/. Si vous développez une version Android de votre application, vous devez également exclure les fichiers de construction *.apk.

Tous les fichiers générés dans le androidsous - répertoire doivent également être exclus:

Android/bin/
Android/gen/
Android/assets/
Atropo
la source
1
Peu importe les plates-formes que vous développez. Il n'y a aucun mal à ignorer les choses qui ne s'appliquent qu'aux plates-formes sur lesquelles vous ne développez pas encore. Il a laissé entendre qu'il utilisait la structure de répertoires standard.
rjmunro
Prise sans vergogne pour mon Cordova gitignore: gist.github.com/elliot-labs/c92b3e52053906816074170ada511962
Elliot Labs LLC
49

Extension de la réponse @Jake Moshenko:

J'aime l'idée d'omettre le platformsrépertoire. En fait, je peux exclure les répertoires pluginset platforms. Un bon point de départ pour .gitignore:

platforms/
plugins/

Le problème avec cela est que la copie propre du dépôt doit être initialisée avant de pouvoir travailler avec elle. Il peut être judicieux de créer un script d'initialisation tel que:

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

Une mise en garde à cette approche est qu'elle rend un peu plus difficile la personnalisation du code / de la configuration d'application spécifique à la plate-forme en dehors de ce qui est pris en charge par phonegap / cordova (c'est-à-dire la prise en charge de l'orientation de l'écran).

Mise à jour: Bash Gist

Cet essentiel contient un script plus complet pour gérer un projet qui ne valide pas les répertoires pluginset platforms. Il fournit un mécanisme pour copier les icônes et les images de l'écran de démarrage de www vers les répertoires de la plate-forme (pour iOS et Android), installer des plugins et gérer les fichiers spécifiques à la plate-forme qui doivent être ajoutés au contrôle de version.

Mise à jour: Grunt Gist

Voici un autre élément essentiel qui est un portage Grunt du script bash mentionné ci-dessus. (Merci à @obie pour avoir suggéré grogner).

Jonathan Dixon
la source
2
Comment pourrais-je gérer l'ajout de plugins / code natif sur mesure ou apporter des modifications à AndroidManifest.xml pour s'adapter au développement de plugins à l'aide de cette approche? Y a-t-il un autre endroit où les modifications AndroidManifest.xml peuvent être ajoutées?
obie
Voir l'essentiel lié, en particulier ici . Il écrase / ajoute tous les fichiers du platform-mergesrépertoire. Par exemple, vous pouvez vous engager platform-merges/android/AndroidManifest.xml. Cette approche fonctionne bien pour des projets simples, mais elle pourrait compliquer les choses dans des projets plus importants.
Jonathan Dixon
merci pour votre aide :) J'ai fini par utiliser grunt pour faire la même chose (avec github.com/gruntjs/grunt-contrib-copy )
obie
3
Vous pouvez éviter l'étape de création du dossier plugins et plates-formes en ajoutant un fichier .gitkeep dans chacun d'eux et en le mettant dans votre .gitignore: plates-formes / *! Plates-formes / .gitkeep plugins / *! Plugins / .gitkeep
aharris88
1
@ aharris88 Bon point, mais je crois que j'ai évité cela pour faciliter le nettoyage du projet. ie rm -rf platforms plugins.
Jonathan Dixon
7

Donc, je viens de comprendre cela par essais et erreurs. Le platformsrépertoire peut être omis si vous utilisez phonegap local ou remote build, car il est généré à la volée. Tous les autres dossiers, y compris le dossier caché, .cordovasont requis.

Jake Moshenko
la source
4
Salut, que se passe-t-il si j'utilise un fichier jar tiers ou un fichier source objective-c pour personnaliser la version Android ou iOS, par exemple, l'intégration de la notification d'analyse. Il faut absolument écrire du code java, alors comment gérer le dépôt git? phonegap local build android écrasera-t-il mes fichiers personnalisés?
EthanZ
FYI pour moi, il semble que PhoneGap Build se construira sans le .cordovadossier - pourquoi dites-vous qu'il est nécessaire @Jake Moshenko?
Matty J
7
Cette suggestion est entièrement incorrecte. Vous ne devez pas omettre le répertoire des plates-formes car vous devrez éventuellement ajouter du code et des plugins spécifiques à la plate-forme si vous faites quelque chose de non trivial. Vous aurez également souvent besoin de manipuler le manifeste Android et les plists ios.
Daniel Williams
3
Je dirais que l'omission des plates-formes est un bon début. S'il y a des dépendances, elles doivent être conservées ailleurs et copiées comme étape de construction après l'ajout d'une plateforme.
tishma
Je préfère cette réponse.
J'exclus
4

Je voulais juste laisser ici mon expérience de ce problème et l'approche que nous avons finalement suivie.

Dans notre projet phonegap, nous avons commencé à valider tous les fichiers moins le dossier / la plate-forme en utilisant le fichier .gitignore. Nous avons pensé de cette façon, lorsque le développeur a cloné le référentiel, la seule action restant à faire serait d'exécuter:

phonegap / cordova ajouter une plateforme

Mais ce n'était pas le cas. Une fois que la plate-forme a été ajoutée et que nous avons essayé de compiler, une erreur est apparue et l'application ne s'est pas installée sur l'appareil.

En regardant les journaux, nous avons obtenu des résultats indiquant que cette erreur était due à des plugins. Nous avons donc décidé de réinstaller tous les plugins que nous utilisions dans le projet et voilá l'application fonctionner correctement.

Mon conseil est donc de sauvegarder dans le référentiel tout le contenu moins la plate-forme de dossiers et les plugins. Créez et téléchargez dans le référentiel un fichier README avec une liste de plugins utilisés dans le projet.

De cette façon, lorsqu'un développeur clone le référentiel, il devra:

1.- Ajouter les plates-formes: phonegap / cordova ajouter la plate-forme "plate-forme"

2.- Ajouter les plugins: phonegap / cordova plugin ajouter "plugin"

J'espère que cela t'aides!

Cordialement.

Nespapu
la source
1

Beaucoup de ces choses sont anciennes et ne s'appliquent pas vraiment à la dernière version d'Apache Cordova. J'utilise Apache Cordova 5.1.1 et ce .gitignore me permet de toujours personnaliser avec des icônes personnalisées, etc. tout en bloquant tout ce dont nous n'avons pas besoin pour la version pour Android et IOS. Oui .gradle est utilisé, alors ne le supprimez pas!

www/
.gradle/
build/
.tmp/
.temp/
coverage/
*.log
node_modules/
bower_components/
Helzgate
la source
Pourquoi incluriez-vous le www/dossier là-dedans? Dans mon application, c'est en fait la plupart des éléments utiles de la vie de l'application Web.
vindia
2
@vindia Je suppose que ma liste peut être un modèle pour démarrer quelqu'un. Je pensais que tous les hipsters utilisaient le dossier www / comme une sortie volatile pour leur processus de construction automatisé. Ma faute!
Helzgate
J'exclus www/parce que le contenu généré par les scripts de construction personnalisés. Vous ne voulez pas vraiment de fichiers source là-dedans.
kim3er
0

Bien que ce soit une préférence personnelle, je suis allé avec cela (pour un projet Android uniquement). Supprimer la plupart des choses, mais conserver ce qui est personnalisé

ToonPlane/platforms/android/*
!ToonPlane/platforms/android/AndroidManifest.xml
ToonPlane/plugins/*
!ToonPlane/plugins/android.json
!ToonPlane/plugins/fetch.json
Funkodebat
la source