मूल निर्देशिका पर आधारित gulp और नाम बदलने में फ़ाइलों की प्रतिलिपि बनाने का तरीका खोज रहा है


91

प्रत्येक मॉड्यूल के लिए मेरे पास कुछ फाइलें हैं जिन्हें बिल्ड डायरेक्टरी पर कॉपी करने की आवश्यकता है, और मैं बार-बार कोड को कम से कम करने का एक तरीका ढूंढ रहा हूं:

gulp.src('./client/src/modules/signup/index.js')
  .pipe(gulp.dest('./build/public/js/signup'));

gulp.src('./client/src/modules/admin/index.js')
  .pipe(gulp.dest('./build/public/js/admin'));

कुछ इस तरह से:

gulp.src('./client/src/modules/(.*)/index.js')
  .pipe(gulp.dest('./build/public/js/$1'));

जाहिर है कि ऊपर काम नहीं करता है, तो क्या ऐसा करने का एक तरीका है, या एक एनपीएम जो पहले से ही ऐसा करता है?

धन्यवाद

जवाबों:


131

baseफ़ाइलों को सोर्स करते समय सबसे अच्छा तरीका है अपने कॉन्फ़िगर करना , जैसे:

gulp.src('./client/src/modules/**/index.js', {base: './client/src/modules'})
  .pipe(gulp.dest('./build/public/js/'));

यह gulpसापेक्ष पथ निर्धारित करने के लिए प्रारंभिक बिंदु के रूप में मॉड्यूल निर्देशिका का उपयोग करने के लिए कहता है।

(इसके अलावा, /**/*.jsयदि आप सभी जेएस फ़ाइलों को शामिल करना चाहते हैं तो उपयोग कर सकते हैं ...)


6
ऐसा करने का एक अधिक गतिशील तरीका होना चाहिए - जब src फाइलें 2 अलग-अलग निर्देशिकाओं से आती हैं और आप अपनी निर्देशिकाओं को नियति में संरक्षित करना चाहते हैं?
इवान डर्स्ट

1
@IvanDurst I ने इस विशिष्ट मामले को ओपी (उत्तर) कोड के साथ प्रबंधित किया। आधार कॉन्फिग का उपयोग करना और गल्प फाइल से स्वतंत्र फाइलों और ./folder-example/**पूर्ण फ़ोल्डरों और फाइलों के सापेक्ष पथ का उपयोग करना ।
कैओ विल्सन

210

उत्तर नहीं, लेकिन खोज परिणामों में इस प्रश्न के प्रकट होने पर लागू होता है।

Gulp में फ़ाइलों / फ़ोल्डरों को कॉपी करने के लिए

gulp.task('copy', () => gulp
  .src('index.js')
  .pipe(gulp.dest('dist'))
);

2
हम्म् ... मेरा गुलाल कहता है कि यह कार्य पूरा हो गया है, लेकिन आउटपुट फ़ाइल मौजूद नहीं है।
Tyguy7

4
जब कार्य समाप्त हो जाता है, तो आपको गुल्प को यह बताने के लिए स्ट्रीम लौटाना होगा।
मेर

2
मैं उलझन में हूँ कि एक उत्तर जो "उत्तर नहीं देता है" में स्वीकृत उत्तर की तुलना में अधिक उत्थान है जो प्रश्न का उत्तर देता है। मुझे यकीन नहीं है कि हमें खोज इंजन बनाने के लिए डिज़ाइन किए गए उत्तरों के साथ एसओ को अव्यवस्थित करना चाहिए क्योंकि वे किसी विशेष चीज को सवाल का जवाब देने के लिए विरोध करते हैं। मुझे लगता है कि जब वे साइट को क्रॉल करते हैं तो उन्हें कुछ उपयोगी बनाने के लिए यह खोज इंजन का काम है। बस मेरी $ 0.02
jinglesthula

9
@jinglesthula यह खोज इंजन के माध्यम से इस सवाल पर पहुंचने वालों के लिए एक उपयोगी सेवा है, भले ही खोज इंजन कितना अच्छा काम कर रहा हो। मैं इसकी सराहना करता हूं।
jbkly

1
हाहा ने महसूस किया कि यह सही प्रश्न या सही उत्तर की तुलना में अधिक लोकप्रिय है: पी
कर्क स्ट्रोबेक

5
return gulp.src('./client/src/modules/(.*)/index.js')  
  .pipe(gulp.dest('./build/public/js/$1'));

मेरे लिए काम किया!


.. यहां तक कि अभी भी इस है जवाब।
किर्क स्ट्रोबेक

2
... इसलिए कर सकते हैं किसी को फिर से लिखने यह तो यह है काम है के रूप में, कोड की है कि सटीक स्निपेट की तलाश में इस पृष्ठ पर आने वाले लोगों को वास्तव में इसका इस्तेमाल कर सकते हैं तो?
इवान डर्स्ट

तो ... Parens और $ n "backreferences" src / dest globs में अनुमति है? वे रेगेक्स, एफैक नहीं हैं। ऐसा लगता है कि मैं क्या देख रहा हूं, लेकिन विनाइल-एफएस डॉक्स को .src () और .dest () विकल्पों पर ध्यान दिया जाता है और उनमें क्या अनुमति है और वे कैसे काम करते हैं।
jinglesthula

3

संरक्षित इनपुट निर्देशिका पेड़ के लिए उपयोग संरक्षित किया जाएगा।

.pipe(gulp.dest(function(file) {
    var src = path.resolve(SRC_FOLDER);
    var final_dist = file.base.replace(src, '');
    return DIST_FOLDER + final_dist;
}))

इसका उपयोग करके, आप src में डाल सकते हैं .src(SRC_FOLDER + '/**/*.js'):।

दूसरों के जवाबों ने मेरे लिए काम नहीं किया (जैसे) का उपयोग base:करना src(), क्योंकि कुछ प्लगइन्स निर्देशिका ट्री को समतल करते हैं।


0

समानांतर में फ़ाइलों की प्रतिलिपि बनाएँ

gulp.task('copy', gulp.parallel(
() =>  gulp.src('*.json').pipe(gulp.dest('build/')),
() =>  gulp.src('*.ico').pipe(gulp.dest('build/')),
() =>  gulp.src('img/**/*').pipe(gulp.dest('build/img/')),
)
);
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.