.gitignore для проектів PhoneGap / Cordova 3.0 - що я повинен зробити?


105

Я просто спробував створити новий проект phonegap 3.0 ... Примітка: я новачок у phonegap. У будь-якому випадку, я бачу, що папка проекту містить:

  • .cordova
  • merges
  • platforms
  • plugins
  • www

І спробувавши, phonegap local run androidя бачу багато бінарних / генерованих файлів у platforms/android. Це не цікавить мене, які частини цієї структури папок слід додати до мого сховища git. Як правило, я вважаю вкрай поганою практикою введення бінарних файлів. Тому я зазвичай додавати шаблони , як bin/, obj/, *.o, і *.pycт.д. , щоб .gitignoreуникнути забруднення мого GIT сховища з речами , які тільки служить для створення злиття конфліктів.

Безумовно, wwwслід додати git, але як щодо інших частин проекту. Наскільки вони є продуктами вихідного коду та до якого розміру вони конфігурують проект?

Що ти робиш? Звичайно, я новачок, тому я ледве розумію, у чому тут сенс ...


1
Я не знаю про PhoneGap / Cordova, але, коли сумніваєтесь, просто все зроблю. Ви завжди можете її видалити пізніше, коли дізнаєтесь, що щось було зайвим :)
Лейф

Відповіді:


43

Відповідь залежить від того, на яких платформах ви розробляєте додаток phongap, і якщо ви дотримуєтесь стандартної структури каталогів.

Якщо ваша структура каталогів проекту є стандартною, ви можете почати з цього gitignore та змінити його для своїх потреб.

За правилом ви повинні виключати всі згенеровані файли, такі як bin/і gen/каталоги. Якщо ви розробляєте версію програми для Android, вам слід також виключити файли збірки *.apk.

Усі генеровані файли у androidпідкаталозі також повинні бути виключені:

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

1
Не має значення, які платформи ви розробляєте. Ігнорувати речі, які стосуються лише платформ, на яких ви ще не розвиваєтесь, немає ніякої шкоди. Він мав на увазі, що він використовує стандартну структуру каталогів.
rjmunro

Безсоромний штекер для моєї кордової gitignore: gist.github.com/elliot-labs/c92b3e52053906816074170ada511962
Elliot Labs LLC,

49

Розширення на відповідь @Jake Moshenko:

Мені подобається ідея пропустити platformsкаталог. Насправді я вмію виключати pluginsі platformsкаталоги, і каталоги. Гарна відправна точка для .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каталоги. Він забезпечує механізм копіювання значків та зображень на екрані splashscreen з www до каталогів платформи (для iOS та Android), встановлення плагінів та обробки конкретних файлів платформи, які слід додати до контролю версій.

Оновлення: Grunt Gist

Ось ще одна істота, яка є портом Grunt згаданого сценарію bash. (Дякую @obie за те, що він запропонував бурчати).


2
Як би я мав справу з додаванням замовлених плагінів / власного коду або внесенням змін до AndroidManifest.xml для адаптації розробки плагінів за допомогою цього підходу? Чи ще десь можна додати зміни AndroidManifest.xml?
obie

Дивіться пов'язану суть, зокрема тут . Він перезаписує / додає будь-які файли з platform-mergesкаталогу. Наприклад, ви можете взяти на себе зобов’язання platform-merges/android/AndroidManifest.xml. Цей підхід добре працює для простих проектів, але він може ускладнити речі у великих проектах.
Джонатан Діксон

дякую за вашу допомогу :) Я в кінцевому підсумку використовував грунт, щоб зробити те саме (з github.com/gruntjs/grunt-contrib-copy )
obie

3
Ви можете уникнути кроку зі створення папки плагінів і платформ, додавши файл .gitkeep у кожен з них і помістивши це у свій .gitignore: platforms / *! Platforms / .gitkeep plugins / *! Plugins / .gitkeep
aharris88

1
@ aharris88 Добре, але я вважаю, що я цього уникав, щоб полегшити прибирання проекту. тобто rm -rf platforms plugins.
Джонатан Діксон

7

Тож я просто з'ясував це через спроби та помилки. platformsКаталог може бути опущений , якщо ви використовуєте PhoneGap локальну або віддалену збірку, так як він генерується на льоту. Усі інші папки, включаючи приховану папку .cordova, потрібні.


4
Привіт, що робити, якщо я скористався якимось стороннім файлом jar або вихідним файлом target-c для налаштування андроїд або ios збірки, наприклад, інтеграція Parse Notification. Напевно потрібно написати якийсь код Java, тоді як керувати сховищем git? буде phonegap локальна збірка Android замінить мої налаштовані файли?
EthanZ

Для мене, схоже, PhoneGap Build будуватиметься без .cordovaпапки - чому ти кажеш, що це потрібно @Jake Moshenko?
Matty J

7
Ця пропозиція є абсолютно невірною. Ви не повинні опускати каталог платформ, оскільки вам з часом потрібно буде додати певний код платформи та плагіни, якщо ви робите щось нетривіальне. Також вам часто потрібно буде маніпулювати маніфестом андроїд та ios-списками.
Даніель Вільямс

3
Я б сказав, що пропуск платформ - це гарний початок. Якщо існують залежності, їх слід зберігати десь в іншому місці та копіювати як етап складання після додавання платформи.
тишма

Я віддаю перевагу цій відповіді. Я виключаю лише каталог платформ
realtebo

4

Я просто хотів залишити тут свій досвід з цим питанням та підхід, який ми нарешті дотримувались.

У нашому проекті phonegap ми почали фіксувати всі файли, за винятком папки / платформи, використовуючи файл .gitignore. Ми думали так, коли розробник клонував сховище, єдиною дією, що залишилася зробити, було б виконання:

phonegap / cordova додати платформу

Але це було не так Після того, як платформу було додано, і ми спробували її скласти, з’явилася помилка, і додаток не встановлено на пристрої.

Оглядаючи журнали, ми отримали кілька звернень, що ця помилка була пов’язана із плагінами. Тож ми вирішили перевстановити всі плагіни, які ми використовували в проекті, і вимкнути, що програма запуститься правильно.

Тому моя порада - зберегти у сховищі весь вміст за винятком платформи папок та плагінів. Створіть та завантажте у сховище файл README зі списком плагінів, використаних у проекті.

Таким чином, коли розробник клонує сховище, йому / їй доведеться:

1.- Додати платформи: phonegap / cordova додати платформу "платформа"

2.- Додайте плагіни: phonegap / cordova 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/туди папку? У моїй програмі, це насправді було більшістю корисних речей із життя веб-додатків.
Віндія

2
@vindia Я думаю, що мій список може бути шаблоном для того, щоб когось розпочати. Я думав, що всі хіпстери використовували www / папку як мінливий вихід для автоматизованого процесу збирання. Моє ліжко!
Гельцгейт

Я виключаю, www/оскільки вміст, створений спеціальними сценаріями побудови. Ви не дуже хочете, щоб вихідні файли були там.
kim3er

0

Хоча це дещо особисті переваги, я пішов із цим (для проекту лише для Android). Видалення більшості, але збереження звичаю

ToonPlane/platforms/android/*
!ToonPlane/platforms/android/AndroidManifest.xml
ToonPlane/plugins/*
!ToonPlane/plugins/android.json
!ToonPlane/plugins/fetch.json
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.