। PhoneGap / कॉर्डोवा 3.0 परियोजनाओं के लिए .ignignore - मुझे क्या करना चाहिए?


105

मैंने सिर्फ एक नया फोनगैप 3.0 प्रोजेक्ट बनाने की कोशिश की ... नोट: मैं फोनगैप के लिए नया हूं। वैसे भी, मैं देख रहा हूँ परियोजना फ़ोल्डर में शामिल हैं:

  • .cordova
  • merges
  • platforms
  • plugins
  • www

और कोशिश करने के बाद phonegap local run androidमुझे बहुत सारी बाइनरी / जेनरेट की गई फाइलें दिखाई देती हैं platforms/android। यह मुझे आश्चर्यचकित करता है, इस फ़ोल्डर संरचना के किन हिस्सों को मुझे अपने गिट रिपॉजिटरी में जोड़ना चाहिए। आम तौर पर, मैं द्विआधारी फ़ाइलों को करने के लिए इसे बेहद खराब अभ्यास मानूंगा। इसलिए, मैं सामान्य रूप से पैटर्न की तरह जोड़ना होगा bin/, obj/, *.o, *.pycआदि के लिए .gitignoreचीजें हैं जो केवल मर्ज संघर्ष पैदा करने के लिए कार्य करता है के साथ अपने Git भंडार प्रदूषण से बचने के लिए।

निश्चित रूप से, wwwगिट में जोड़ा जाना चाहिए, लेकिन परियोजना के अन्य हिस्सों के बारे में क्या। वे स्रोत कोड के उत्पाद किस विस्तार के लिए हैं, और वे प्रोजेक्ट कॉन्फ़िगरेशन के किस विस्तार के लिए हैं?

आप क्या करते हैं? दी मैं नया हूँ इसलिए मुझे मुश्किल से समझ में आया कि यहाँ क्या होता है ...


1
मैं PhoneGap / कॉर्डोवा के बारे में नहीं जानता, लेकिन जब संदेह हो, तो बस सब कुछ करें। आप इसे हमेशा बाद में हटा सकते हैं जब आप सीखते हैं कि कुछ बहुत ही शानदार था :)
लीफ

जवाबों:


43

इसका उत्तर विच प्लेटफॉर्म्स पर निर्भर करता है जिसे आप फोंगैप ऐप विकसित कर रहे हैं, और यदि आप मानक निर्देशिका संरचना का पालन कर रहे हैं।

यदि आपकी परियोजना निर्देशिका संरचना मानक है, तो आप इस gitignore से शुरू कर सकते हैं और इसे अपनी आवश्यकताओं के लिए संशोधित कर सकते हैं।

अंगूठे के एक नियम पर आप सभी निर्देशिका bin/और gen/निर्देशिका जैसी फ़ाइलों को बाहर करना चाहते हैं । यदि आप अपने ऐप का Android संस्करण विकसित कर रहे हैं तो आपको बिल्ड फ़ाइलों को भी पसंद करना चाहिए *.apk

androidउपनिर्देशिका में सभी उत्पन्न फ़ाइलों को भी बाहर रखा जाना चाहिए:

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

1
इससे कोई फर्क नहीं पड़ता कि आप क्या प्लेटफॉर्म विकसित कर रहे हैं। उन चीजों को अनदेखा करने में कोई बुराई नहीं है जो केवल उन प्लेटफार्मों पर लागू होती हैं जिन्हें आप अभी तक विकसित नहीं कर रहे हैं। उन्होंने अनुमान लगाया है कि वे मानक निर्देशिका संरचना का उपयोग कर रहे हैं।
rjmunro 12

मेरे कॉर्डोवा gitignore के लिए बेशर्म प्लग: gist.github.com/elliot-labs/c92b3e52053906816074170ada511962
इलियट लैब्स 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

इस दृष्टिकोण के लिए एक चेतावनी यह है कि यह फोनगैप / कॉर्डोवा (यानी स्क्रीन ओरिएंटेशन सपोर्ट) द्वारा समर्थित प्लेटफॉर्म के बाहर प्लेटफॉर्म विशिष्ट ऐप कोड / कॉन्फिगरेशन को अनुकूलित करने के लिए थोड़ा अधिक चुनौतीपूर्ण बनाता है।

अपडेट: बैश गिस्ट

इस जिस्ट में एक परियोजना को संभालने के लिए एक अधिक संपूर्ण स्क्रिप्ट शामिल है जो pluginsऔर platformsनिर्देशिकाओं को प्रतिबद्ध नहीं करता है । यह www से मंच निर्देशिकाओं (iOS और Android के लिए) के लिए आइकन और स्प्लैशस्क्रीन छवियों की प्रतिलिपि बनाने के लिए एक तंत्र प्रदान करता है, प्लग इन स्थापित करना और मंच विशिष्ट फ़ाइलों को संभालना जो संस्करण नियंत्रण में जोड़ा जाना चाहिए।

अपडेट: ग्रंट जिस्ट

यहाँ एक और जिस्ट है जो उपर्युक्त बैश स्क्रिप्ट का ग्रन्ट पोर्ट है। (ग्रंट का सुझाव देने के लिए @obie का धन्यवाद)।


2
मैं इस दृष्टिकोण का उपयोग करके प्लगइन विकास को समायोजित करने के लिए bespoke प्लगइन्स / देशी कोड जोड़ने या AndroidManifest.xml परिवर्तन करने से कैसे निपटूंगा? कहीं और है कि AndroidManifest.xml परिवर्तन जोड़ा जा सकता है?
ओबी

लिंक्ड जिस्ट को देखें, विशेष रूप से यहां । यह platform-mergesनिर्देशिका से किसी भी फाइल को अधिलेखित / जोड़ता है । उदाहरण के लिए, आप प्रतिबद्ध हो सकते हैं platform-merges/android/AndroidManifest.xml। यह दृष्टिकोण सरल परियोजनाओं के लिए अच्छी तरह से काम करता है, लेकिन यह बड़ी परियोजनाओं में चीजों को जटिल कर सकता है।
जोनाथन डिक्सन

आपकी मदद के लिए धन्यवाद :) मैंने एक ही काम करने के लिए ग्रन्ट का उपयोग करके समाप्त किया ( github.com/gruntjs/grunt-contrib-copy के साथ )
obie

3
आप प्लगइन्स और प्लेटफ़ॉर्म फ़ोल्डर बनाने के साथ हर एक में एक .गितकी फ़ाइल जोड़कर और इसे अपने .itignore: प्लेटफ़ॉर्म / * में प्लेटफ़ॉर्म /। प्लेटफ़ॉर्म प्लगइन्स / *। प्लगइन्स / .गित्ज़र
aharris887

1
@ aharris88 अच्छी बात है, लेकिन मेरा मानना ​​है कि मैंने इस परियोजना को साफ करने के लिए इसे आसान बनाने से परहेज किया। यानी rm -rf platforms plugins
जोनाथन डिक्सन

7

इसलिए मैंने परीक्षण और त्रुटि के माध्यम से इसका पता लगाया। platformsके रूप में यह जेनरेट कर दिए है निर्देशिका, यदि आप phonegap स्थानीय या दूरदराज के निर्माण का उपयोग कर रहे छोड़ा जा सकता है। छिपे हुए फ़ोल्डर सहित अन्य सभी फ़ोल्डरों की .cordovaआवश्यकता होती है।


4
नमस्ते, क्या होगा अगर मैंने एंड्रॉइड या आईओएस बिल्ड को अनुकूलित करने के लिए कुछ तृतीय-पक्ष जार फ़ाइल या उद्देश्य-सी स्रोत फ़ाइल का उपयोग किया, उदाहरण के लिए, पार्स अधिसूचना एकीकरण। यह निश्चित रूप से कुछ जावा कोड लिखने की आवश्यकता है, फिर गिट रिपॉजिटरी कैसे प्रबंधित करें? क्या फोनगैप लोकल बिल्ड एंड्रॉइड मेरी अनुकूलित फ़ाइलों को अधिलेखित कर देगा?
एथनज

मेरे लिए FYI करें, ऐसा लगता है कि PhoneGap बिल्ड .cordovaफ़ोल्डर के बिना निर्माण करेगा - आप यह क्यों कहते हैं कि यह @Jake Moshenko की आवश्यकता है?
मैटी जे

7
यह सुझाव पूरी तरह से गलत है। आपको प्लेटफ़ॉर्म डायरेक्टरी को छोड़ना नहीं चाहिए क्योंकि आपको अंततः कुछ प्लेटफ़ॉर्म विशिष्ट कोड और प्लगइन्स में जोड़ने की आवश्यकता होगी यदि आप कुछ भी अनैतिक काम कर रहे हैं। आपको अक्सर एंड्रॉइड मैनिफ़ेस्ट और आईओएस प्लिस्टर्स में हेरफेर करने की भी आवश्यकता होगी।
डैनियल विलियम्स

3
मैं कहूंगा कि प्लेटफॉर्म को छोड़ना एक अच्छी शुरुआत है। यदि निर्भरताएं हैं, तो उन्हें कहीं और रखा जाना चाहिए, और प्लेटफ़ॉर्म जोड़ने के बाद बिल्ड स्टेप के रूप में कॉपी किया जाना चाहिए।
22

मुझे यह उत्तर पसंद है। मैं केवल प्लेटफार्मों निर्देशिका को छोड़कर
realtebo

4

मैं सिर्फ इस मुद्दे और अंत में हमारे द्वारा दिए गए दृष्टिकोण के साथ अपने अनुभव को यहां छोड़ना चाहता था।

हमारे फोनगैप प्रोजेक्ट में हमने .gitignore फ़ाइल का उपयोग करके सभी फ़ाइलों को फ़ोल्डर / प्लेटफ़ॉर्म से कम करना शुरू कर दिया है। हमने इस तरह से सोचा था, जब डेवलपर ने रिपॉजिटरी को क्लोन किया था, जिसे करने के लिए केवल एक ही क्रिया शेष है, जिसे निष्पादित करना होगा:

फोनगैप / कॉर्डोवा प्लेटफ़ॉर्म जोड़ें

लेकिन यह नहीं था। एक बार जब प्लेटफ़ॉर्म जोड़ा गया और हमने संकलन करने का प्रयास किया, तो एक त्रुटि दिखाई दी और ऐप डिवाइस में इंस्टॉल नहीं हुआ।

लॉग को देखते हुए, हमें कुछ हिट मिले जो प्लगइन्स के कारण यह त्रुटि थी। इसलिए हमने प्रोजेक्ट में उपयोग किए जाने वाले सभी प्लगइन्स को फिर से इंस्टॉल करने का फैसला किया और ऐप को सही तरीके से चलाया।

इसलिए मेरी सलाह है कि रिपॉजिटरी में सभी सामग्री फोल्डर प्लेटफॉर्म और प्लगइन्स को कम करने के लिए सेव करें। प्रोजेक्ट में उपयोग किए गए प्लगइन्स की सूची के साथ एक फ़ाइल README को रिपॉजिटरी में बनाएँ और अपलोड करें।

इस तरह, जब कोई डेवलपर रिपॉजिटरी को क्लोन करता है, तो उसे निम्नलिखित कार्य करने होंगे:

1.- प्लेटफ़ॉर्म जोड़ें: फोनगैप / कॉर्डोवा प्लेटफ़ॉर्म जोड़ें "प्लेटफ़ॉर्म"

2.- प्लगइन्स जोड़ें: फोनगैप / कॉर्डोवा प्लगइन "प्लगइन" जोड़ें

उम्मीद है की यह मदद करेगा!

सादर।


1

इस सामान का एक बहुत पुराना है और वास्तव में अपाचे कॉर्डोवा के नवीनतम संस्करण पर लागू नहीं होता है। मैं अपाचे कॉर्डोवा 5.1.1 का उपयोग कर रहा हूं और यह .ignignore मुझे अभी भी कस्टम आइकन्स आदि के साथ कस्टमाइज़ करने की अनुमति देता है जबकि सभी सामानों को ब्लॉक करना है जो हमें एंड्रॉइड और आईओएस दोनों के लिए संस्करण की आवश्यकता नहीं है। हां .ग्रेड का उपयोग किया जाता है इसलिए इसे हटाएं नहीं!

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

आप www/फ़ोल्डर को वहां क्यों शामिल करेंगे ? मेरे आवेदन में, यह वास्तव में वेब एप्लिकेशन के जीवन से अधिकांश उपयोगी सामान थे।
विंधिया

2
@vindia मुझे लगता है कि मेरी सूची किसी को आरंभ करने के लिए एक टेम्पलेट हो सकती है। मैंने सोचा था कि सभी हिपस्टर्स अपनी स्वचालित निर्माण प्रक्रिया के लिए एक अस्थिर आउटपुट के रूप में www / फ़ोल्डर का उपयोग करते थे। मेरी गलती!
हेलजेट 16

मैं बाहर करता हूं www/क्योंकि कस्टम बिल्ड स्क्रिप्ट द्वारा उत्पन्न सामग्री। आप वास्तव में वहाँ स्रोत फ़ाइलों को नहीं चाहते हैं।
किम 3

0

हालांकि यह कुछ हद तक व्यक्तिगत पसंद है, मैं इसके साथ (एक Android केवल परियोजना के लिए) गया था। सबसे हटकर, लेकिन क्या रिवाज है

ToonPlane/platforms/android/*
!ToonPlane/platforms/android/AndroidManifest.xml
ToonPlane/plugins/*
!ToonPlane/plugins/android.json
!ToonPlane/plugins/fetch.json
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.