2015-05-29 7 views
6

मैं कुछ प्लेसहोल्डर्स को अलग-अलग फ़ाइलों में प्रतिस्थापित करने की कोशिश कर रहा हूं। मेरी gruntfile ठीक काम करता है, लेकिन प्रतिस्थापन करने के लिए प्रक्रिया विकल्प में जोड़, यह सिर्फ काम नहीं कर रहा है।प्रक्रिया विकल्प भ्रम के लिए ग्रंट-कॉन्ट्रिब-कॉपी सिंटैक्स

grunt.initConfig({ 

    copy: { 
     js: { 
      files: [{ 
       expand: true, 
       cwd: 'src/wp-content/themes/pilau-starter/', 
       src: ['**/*.js'], 
       dest: 'public/wp-content/themes/pilau-starter/' 
      }], 
      options: { 
       process: function (content) { 
        console.log(content); 
        content = content.replace(/pilauBreakpointLarge/g, breakpoints.large); 
        content = content.replace(/pilauBreakpointMedium/g, breakpoints.medium); 
        return content; 
       } 
      } 
     }, 
    } 

}); 

रास्तों GitHub पर कोड के संदर्भ में समझा जा सकता है: https://github.com/pilau/starter (सार्वजनिक निर्देशिका रेपो करने के लिए प्रतिबद्ध नहीं है क्योंकि यह एक स्टार्टर विषय है) के नीचे मेरी gruntfile के प्रासंगिक अनुभाग है। वे पथ मेरे मूल ग्रंटफाइल में चर हैं, और अन्य सभी कार्यों में ठीक काम कर रहे हैं।

सभी वर्र्स ठीक स्थापित किए गए हैं। मैंने यह जांचने के लिए console.log(content) शामिल किया है कि प्रक्रिया फ़ंक्शन वास्तव में चल रहा है - ऐसा प्रतीत नहीं होता है, इसलिए मुझे लगता है कि यह मूल वाक्यविन्यास है।

एक उत्तर (https://stackoverflow.com/a/28600474/1087660) है जो इसे संबोधित करता है, लेकिन जहां तक ​​मैं कह सकता हूं, ऐसा करने का तरीका बस खराब जेएस वाक्यविन्यास है - यह सुनिश्चित नहीं है कि इसे सही के रूप में कैसे चिह्नित किया गया है। प्रतिलिपि कार्य चलाने के लिए

--verbose उत्पादन:

Running "copy:js" (copy) task 
Verifying property copy.js exists in config...OK 
Files: src/wp-content/themes/pilau-starter/js/admin.js -> public/wp-content/themes/pilau-starter/js/admin.js 
Files: src/wp-content/themes/pilau-starter/js/flickity.js -> public/wp-content/themes/pilau-starter/js/flickity.js 
Files: src/wp-content/themes/pilau-starter/js/global.js -> public/wp-content/themes/pilau-starter/js/global.js 
Files: src/wp-content/themes/pilau-starter/js/modernizr.js -> public/wp-content/themes/pilau-starter/js/modernizr.js 
Files: src/wp-content/themes/pilau-starter/js/picturefill.js -> public/wp-content/themes/pilau-starter/js/picturefill.js 
Files: src/wp-content/themes/pilau-starter/js/respond.js -> public/wp-content/themes/pilau-starter/js/respond.js 
Options: processContent=false, processContentExclude=[], process=undefined 
Options: processContent=false, processContentExclude=[], process=undefined 
Copying src/wp-content/themes/pilau-starter/js/admin.js -> public/wp-content/themes/pilau-starter/js/admin.js 
Reading src/wp-content/themes/pilau-starter/js/admin.js...OK 
Writing public/wp-content/themes/pilau-starter/js/admin.js...OK 
+1

अगर आप '--verbose' ध्वज के साथ काम चलाने के उत्पादन क्या है प्रवेश करने के लिए विधि reponsible है? साथ ही, डीबगिंग के दौरान 'nonull' विकल्प सहायक हो सकता है। – steveax

+0

आप 'ग्रंट-कॉन्ट्रिब-कॉपी' का कौन सा संस्करण उपयोग कर रहे हैं? आप 'प्रक्रिया' के बजाय 'processContent' का उपयोग करने का प्रयास कर सकते हैं क्योंकि इसका उपयोग v0.4.1 और पहले में किया गया था। आप अपने 'breakpoints.large' और' breakpoints.medium' को लॉग इन करने का भी प्रयास कर सकते हैं, हो सकता है कि वे आपकी कॉन्फ़िगरेशन में सही ढंग से सेट न हों ... – nemesv

+0

क्या यह चलने पर आउटपुट में फ़ाइलों की प्रतिलिपि बनाई जा रही है? '--verbose' सुझाव पर +1। – James

उत्तर

2

का आपका संस्करण grunt-contrib-copy 0.4.0 है। इस संस्करण में उपयोग करने के लिए संपत्ति नाम के ऊपर @nemesv द्वारा सही ढंग से इंगित करें processContentprocess नहीं होगा।

मैंने आपके रेपो को क्लोन किया और json-breakpoints शाखा में स्विच किया। और grunt copy:js भाग गया और यह सामग्री को बदल दिया।

original-content replaced-content

अब, जब आप grunt copy:js --verbose चलाने यह अभी भी इस

cli

processContent दिखाएगा अपरिभाषित लॉग इन किया क्योंकि घुरघुराना JSON.stringify का उपयोग करता है एक मूल्य के प्रवेश करने के लिए किया जाता है। और JSON.stringifyundefined लौटाता है जब आप इसे फ़ंक्शन परिभाषा पास करते हैं।


आप रुचि रखते हैं, यहाँ सभी विकल्प

Log.prototype.writeflags = function(obj, prefix) { 
     var wordlist; 
     if (Array.isArray(obj)) { 
      wordlist = this.wordlist(obj); 
     } else if (typeof obj === 'object' && obj) { 
      wordlist = this.wordlist(Object.keys(obj).map(function(key) { 
       var val = obj[key]; 
       return key + (val === true ? '' : '=' + JSON.stringify(val)); 
      })); 
     } 
     this._writeln((prefix || 'Flags') + ': ' + (wordlist || '(none)'.cyan)); 
     return this; 
    }; 
0

यह सब पर process विकल्प के साथ एक मुद्दा है, लेकिन srcThemeDir के साथ और अधिक एक मुद्दा हो प्रतीत नहीं होता है। मैं यह सुनिश्चित करने के लिए लॉग इन करूंगा कि आप वास्तव में क्या जानते हैं, क्योंकि ऐसा लगता है कि यह copy कार्य को किसी भी फाइल को नहीं ढूंढ रहा है (और इसलिए प्रक्रिया फ़ंक्शन को कॉल नहीं करता है)।

+0

क्षमा करें, इसे बाहर करने के लिए भूल गए। मैंने इसे उस मान के साथ बदल दिया है जिस पर यह सेट है। Var बाकी सब कुछ के लिए ठीक काम करता है। उपरोक्त संपादन में '--verbose' आउटपुट भी देखें, फाइलें मिल रही हैं ठीक है ऐसा लगता है। मेरे द्वारा किए गए किसी भी संपादन की प्रतिलिपि बनाई गई है - बस प्रतिस्थापन नहीं हो रहा है। –

संबंधित मुद्दे