Gulp.src को फ़ाइलों के लिए पूर्ण पथों की एक सरणी दिए जाने की तरह क्यों नहीं है?


94

मैं gulp.src फ़ाइलों का एक सरणी पास करने का प्रयास कर रहा हूं जो मैं चाहता हूं कि इससे निपटें। यह सरणी के रूप में यह खड़ा है।

['bower_components/jquery/jquery.js',
 'bower_components/superscrollorama/js/greensock/TweenMax.min.js',
 'bower_components/superscrollorama/jquery.superscrollorama.js' ]

हालांकि मुझे लग रहा है कि gulp.src ऐसा नहीं लगता है और तीसरा तत्व इसे अंतिम गंतव्य के माध्यम से नहीं बनाता है।

मैंने पाया है कि जब मैं कुछ वाइल्डकार्ड वर्णों को इस तरह पेश करता हूं तो सब कुछ ठीक रहता है:

['bower_components/**/jquery.js',
 'bower_components/**/js/greensock/TweenMax.min.js',
 'bower_components/**/jquery.superscrollorama.js' ]

पर क्यों? ग्लोबिंग के काम करने के तरीके के साथ कुछ करना है? मैं गुगली कर चुका हूं, लेकिन पता नहीं चल पा रहा है।

हो सकता है कि यह ग्लोबिंग का अभीष्ट उद्देश्य नहीं है, लेकिन मुझे इससे कोई मतलब नहीं है कि इसे इस तरह से काम करना चाहिए। क्या कोई इस पर थोड़ा प्रकाश डाल सकता है?

जवाबों:


162

जब आप पूर्ण पथों की एक सरणी में पास होते हैं, तो प्रत्येक फ़ाइल को स्वतंत्र रूप से संसाधित किया जाता है। ग्लोबिंग को नहीं पता है कि पथ की जड़ कहां है (वास्तव में, यह पहले ग्लोब के आधार पर अनुमान लगाता है)। इसलिए, प्रत्येक फ़ाइल में निहित फ़ोल्डर में निहित है, और रिश्तेदार पथ खाली है।

हालांकि, एक आसान उपाय है। baseदूसरे तर्क के रूप में कुंजी के साथ एक ऑब्जेक्ट पास करें gulp.src, और सब कुछ सही रिश्तेदार पथ होगा:

return gulp.src(['bower_components/jquery/jquery.js',
                'bower_components/superscrollorama/js/greensock/TweenMax.min.js',
                'bower_components/superscrollorama/jquery.superscrollorama.js' ],
            {base: 'bower_components/'})
        .pipe(...);

23
इसके अलावा: यह gulp डॉक्स में बिल्कुल भी उल्लेख नहीं किया गया है, आपको यह पता लगाने के लिए डॉक्सglob-stream पर क्लिक करना होगा।
ज्यादा

9
क्या होगा अगर रास्ते सभी एक ही आधार नहीं हैं? मेरे पास उस विशेष परिदृश्य के लिए एक समान प्रश्न खुला है: gulp src आवश्यक नहीं पढ़ रहा है json फ़ाइल के सरणी मान
आंद्रे

1
मेरी तरफ से भी वही सवाल। मेरे पास काम करने के लिए दो अलग-अलग आधार हैं
सिंथिया सांचेज़

4
फ़ाइल सिस्टम में कहीं न कहीं हमेशा एक सामान्य आधार होता है ? हो भी क्यों न "/"। यदि आपके प्रोजेक्ट dir के मूल से gulp चल रहा है, तो आप वर्तमान dir को आधार के रूप में निर्दिष्ट करेंगे, और वर्तमान dir को पाइप। gulp.src(mixed, {base: "."}).pipe(doStuff).pipe(dest("."))
नंबर 1311407
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.