ग्रंट-कॉनरीब-कॉपी में "विस्तार" विकल्प क्या करता है? उदाहरण सभी इसका उपयोग करते हैं लेकिन डॉक्स कुछ भी नहीं कहता है कि यह क्या करता है


100
  1. यहां README और उदाहरण हैं: https://github.com/gruntjs/grunt-contrib-copy/blob/master/README.md
  2. यहाँ कोड (है कि मैं जाहिरा तौर पर समझ में नहीं कर सकते हैं) से की प्रासंगिक हिस्सा है https://github.com/gruntjs/grunt-contrib-copy/blob/master/tasks/copy.js :
mod.exports = function (ग्रंट) {
  'सख्त का उपयोग करें';

  var path = आवश्यकता ('path');

  grunt.registerMultiTask ('कॉपी', 'कॉपी फ़ाइलें।', फ़ंक्शन () {
    var kindOf = grunt.util.kindOf;

    var विकल्प = this.options ({
      प्रक्रियासंपर्क: गलत,
      processContentExclude: []
    });

    var copyOptions = {
      प्रक्रिया: Options.processContent,
      noProcess: options.processContentExclude
    };

    grunt.verbose.writeflags (विकल्प, 'विकल्प');

    var भाग्य;
    var का विस्तार है;
    var टैली = {
      dirs: 0,
      फ़ाइलें: 0
    };

    this.files.forEach (फ़ंक्शन (फ़ाइलपेयर))
      isExpandedPair = filePair.orig.expand || असत्य;

      filePair.src.forEach (फ़ंक्शन (src) {
        अगर (DetDestType (filePair.dest) === 'निर्देशिका') {
          dest = (isExpandedPair) है? filePair.dest: unixifyPath (path.join (filePair.dest, src));
        } अन्य {
          dest = filePair.dest;
        }

        अगर (grunt.file.isDir (src)) {
          grunt.verbose.writeln ('बनाना' + dest.cyan);
          grunt.file.mkdir (गंतव्य);
          tally.dirs ++;
        } अन्य {
          grunt.verbose.writeln ('कॉपी करना' + src.cyan + '->' + dest.cyit);
          grunt.file.copy (src, dest, copyOptions);
          tally.files ++;
        }
      });
    });

क्या आप जानते हैं कि स्वीकृत उत्तर गलत है? देखें नीचे इस सवाल का जवाब
डेविड पेर्सन

जवाबों:


59

विस्तृत करें आपको यह निर्दिष्ट करने की अनुमति देता है कि आप गंतव्य पथ को पूर्ण बनाना चाहते हैं (जैसे:) /path/missing1/missing2, या केवल अंतिम निर्देशिका तब बनाएँ जब इसका मूल मौजूद हो ( /path/existing/missing)।


4
आह, तो यह mkdir के लिए प्रभावी रूप से -p विकल्प है। मिल गया धन्यवाद!
पैट्रिक

6
यह उत्तर सही नहीं है। यह सबसे सरल है।
डेविड पेर्सन

3
-1। यह भ्रामक है - इस उत्तर के आधार पर मैंने हटा दिया expand: true, मुझे लगा कि मुझे इसकी आवश्यकता नहीं है, और फिर मेरे निर्माण ने काम करना बंद कर दिया।
Claudiu

82

चूंकि expandग्रंट का एक हिस्सा है, और ग्रंट-कॉन्ट्रिब-कॉपी के लिए विशिष्ट नहीं है, इसके बारे में जानकारी ग्रंट की फ़ाइल कॉन्फ़िगरेशन एपीआई में पाई जा सकती है :

निम्नलिखित विकल्पों को सक्षम expandकरने के trueलिए सेट करें:

  • cwdसभी srcमैच इस पथ के सापेक्ष हैं (लेकिन इसमें शामिल नहीं हैं)।
  • srcपैटर्न (रों) मैच के लिए, के सापेक्ष cwd
  • dest गंतव्य पथ उपसर्ग।
  • extकिसी भी मौजूदा एक्सटेंशन को जनरेट किए गए destपथों में इस मान से बदलें ।
  • extDotयह इंगित करने के लिए उपयोग किया जाता है कि विस्तार को इंगित करने वाली अवधि कहाँ स्थित है। या तो ले सकते हैं 'first'(फ़ाइल नाम में पहली अवधि के बाद विस्तार शुरू होता है) या 'last'(अंतिम अवधि के बाद विस्तार शुरू होता है), और डिफ़ॉल्ट रूप से सेट किया गया है 'first'
  • flattenउत्पन्न destरास्तों से सभी पथ भागों को निकालें ।
  • renameयह फ़ंक्शन प्रत्येक मिलान की गई srcफ़ाइल के लिए कहा जाता है , (एक्सटेंशन का नाम बदलने और चपटे होने के बाद)। destऔर मिलान किया srcरास्ते में पारित कर रहे हैं, और इस समारोह के लिए एक नया लौटना चाहिए destमूल्य। यदि समान destको एक से अधिक बार लौटाया srcजाता है, तो इसका उपयोग करने वाले प्रत्येक को इसके लिए स्रोतों की एक सरणी में जोड़ा जाएगा।

इसके अतिरिक्त ऐसा लगता है कि destअगर सेट expandकरने के लिए हमेशा एक गंतव्य निर्देशिका माना जाएगा true


बेहतर जवाब। लेकिन क्या यह कहीं भी प्रलेखित नहीं है?
syonip

मुझे वास्तव में दूसरी बार देखने के बाद दस्तावेज़ मिला, और मैंने अपने उत्तर को उसी के अनुसार अद्यतन किया है।
डेविड पैर्सन

मैंने डॉक में उपलब्ध कराए गए उपयोगी उदाहरण को जोड़ा। अब यह अधिक स्पष्ट है।
रेमी बीचेस
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.