2015-09-14 6 views
7

मैंने अपनी .jsx और .js स्क्रिप्ट को एक बंडल में संकलित करने और एक ट्रांसफॉर्म के रूप में बेबिलिफ़ाई का उपयोग करके संकलित करने के लिए एक गल्प कार्य लिखा है। किसी कारण से मेरी घूंट स्क्रिप्ट को बदलने पर घुट किया जा रहा है और मुझे यकीन है कि नहीं कर रहा हूँ क्यों:ब्राउज़रिफ़ाई बेबेलिफ़ाई ट्रांसफ़ॉर्म के साथ बंडल बनाने में विफल रहता है (टाइपरर: पथ एक स्ट्रिंग होना चाहिए।)

gulp.task('browserify', function() { 
    var bundle = watchify(browserify('./app/jsx/client/index.jsx', { 
    extensions: ['.js', '.jsx'], 
    debug: process.env.NODE_ENV === 'development' 
    })); 
    bundle.transform(babelify); 
    bundle.on('update', function() { 
    rebundle(bundle); 
    }); 


    function rebundle(bundle) { 
    return bundle.bundle() 
    .on('error', function(error) { 
     console.log(error.stack, error.message); 
     this.emit('end'); 
    }) 
    .pipe(
     gulpif(
      (process.env.NODE_ENV == 'production'), 
      require('gulp-rename')('bundle.min.js'), 
      require('gulp-rename')('bundle.js') 
     ) 
    ) 
    .pipe(gulpif((process.env.NODE_ENV == 'production'), buffer())) 
    .pipe(gulpif((process.env.NODE_ENV == 'production'), uglify())) 
    .pipe(gulp.dest('dist/js')); 
    } 

    return rebundle(bundle); 
}); 

कंसोल में ...

path.js:8 
    throw new TypeError('Path must be a string. Received ' + 
    ^

TypeError: Path must be a string. Received undefined 
    at assertPath (path.js:8:11) 
    at Object.posix.join (path.js:480:5) 
    at Transform.stream._transform (/home/zipp/search-admin/node_modules/gulp-rename/index.js:52:22) 
    at Transform._read (_stream_transform.js:167:10) 
    at Transform._write (_stream_transform.js:155:12) 
    at doWrite (_stream_writable.js:292:12) 
    at writeOrBuffer (_stream_writable.js:278:5) 
    at Transform.Writable.write (_stream_writable.js:207:11) 
    at Readable.ondata (/home/zipp/search-admin/node_modules/browserify/node_modules/read-only-stream/node_modules/readable-stream/lib/_stream_readable.js:572:20) 
    at emitOne (events.js:77:13) 
    at Readable.emit (events.js:169:7) 

उत्तर

14

क्योंकि आप एक vinyl-source-stream में की जरूरत है कि त्रुटि है क्या आप वहां मौजूद हैं। .bundle() का परिणाम फ़ाइल डेटा का एक मानक नोड स्ट्रीम है। आप यह डेटा ले रहे हैं कि इसे rename पर गुजर रहा है जो गुलप File ऑब्जेक्ट्स की स्ट्रीम की अपेक्षा करता है।

var source = require('vinyl-source-stream'); 

// stuff 

    function rebundle(bundle) { 
    return bundle.bundle() 
    .on('error', function(error) { 
     console.log(error.stack, error.message); 
     this.emit('end'); 
    }) 
    .pipe(
     gulpif(
      (process.env.NODE_ENV == 'production'), 

      // Use 'source' here instead, which converts binary 
      // streams to file streams. 
      source('bundle.min.js'), 
      source('bundle.js') 
     ) 
    ) 
    .pipe(gulpif((process.env.NODE_ENV == 'production'), buffer())) 
    .pipe(gulpif((process.env.NODE_ENV == 'production'), uglify())) 
    .pipe(gulp.dest('dist/js')); 
    } 
इसके बजाय rename का उपयोग करने का

, आप source का उपयोग फ़ाइल के प्रारंभिक नाम निर्धारित कर सकते हैं।

+0

धन्यवाद। मैंने इसे समझ लिया, लेकिन आप अंक प्राप्त कर सकते हैं :) – sent1nel

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