Gulp

2015-03-11 11 views
5

के साथ requjs अनुकूलक नोड मॉड्यूल का उपयोग करके gulp-requirejs प्लगइन है, लेकिन यह blacklisted निम्न संदेश के साथ है: "require.js मॉड्यूल का सीधे उपयोग करें"।Gulp

दस्तावेज़ काफी अस्पष्ट हैं, मैं गुलप बिल्ड कार्य के संयोजन के साथ इसका सबसे अच्छा उपयोग कैसे करूं?

वहाँ docs में एक उदाहरण है:

var requirejs = require('requirejs'); 

var config = { 
    baseUrl: '../appDir/scripts', 
    name: 'main', 
    out: '../build/main-built.js' 
}; 

requirejs.optimize(config, function (buildResponse) { 
    //buildResponse is just a text output of the modules 
    //included. Load the built file for the contents. 
    //Use config.out to get the optimized file contents. 
    var contents = fs.readFileSync(config.out, 'utf8'); 
}, function(err) { 
    //optimization err callback 
}); 

लेकिन वह मुझे बहुत मदद नहीं करता है ... यहाँ मेरी सबसे अच्छी कोशिश है:

var gulp = require('gulp'), 
    r = require('requirejs').optimize; 

var config2 = { 
    baseUrl: 'src/js', 
    name: 'config', 
    out: 'dist/js/main-built.js' 
}; 

gulp.task('scripts3', function() { 
    gulp.src(['src/js/**/*.js']) 
     .pipe(r(config) 
    .pipe(gulp.dest(config.out)) 
}); 

लेकिन requirejs मॉड्यूल धाराओं का उपयोग नहीं करता , तो यह काम नहीं करेगा।

बहुत गुलदस्ता अनुकूल amd-optimize भी है लेकिन यह आरजे के समान नहीं है, फिर भी।

+0

खैर मैं उपयोग नहीं किया है घूंट। लेकिन मेरे पास RequJS और grunt और non grunt के आसपास अच्छी विशेषज्ञता है ... तो यह धाराएं क्या हैं, क्या हम सामान्य कार्य की तरह गल्प में उपयोग नहीं कर सकते? – Vishwanath

+0

गुलप [नोड स्ट्रीम] का उपयोग करता है (https://nodejs.org/api/stream.html), और [vinyl] (https://github.com/wearefractal/vinyl)। इस बिंदु पर विनील मेरे लिए काला जादू है, [यहां] [https://medium.com/@contrahacks/gulp-3828e8126466) उस पर एक महान पोस्ट है। मुझे अभी भी यह समस्या मिली है (https://github.com/jrburke/r.js/issues/785) इस से निपटने के लिए। –

+0

मैं सिर्फ शेल कमांड को गल्प-शैल के साथ चला सकता था। –

उत्तर

4

मैं सिर्फ घूंट-शेल के साथ r.js निर्माण आदेश चलाकर समाप्त हो गया:

var gulp = require('gulp'), 
    shell = require('gulp-shell'); 

// Run the r.js command, so simple taks :) 
gulp.task('scripts', shell.task([ 
    'r.js -o build/r/build.js' 
])) 

यह चलाने के लिए है, न कि बहुत लंबा बिल्कुल मोटे तौर पर ले जाता है 2 सेकंड।

आर सेटिंग्स को बाहरी build.js फ़ाइल में परिभाषित किया गया है जो Gulp के बारे में कुछ भी नहीं जानता है।

+0

क्षमा करें, लेकिन इसके लिए आपको गुप्ल की आवश्यकता नहीं है। आप इसे चला सकते हैं: एनपीएम रन "टास्क" – AntiCZ

8

खोल लागू बिना ऐसा करने के लिए, आप इसे पसंद कर सकते हैं:

var gulp = require('gulp'), 
    rjs = require('requirejs'), 

    config = { 
     baseUrl: '../appDir/scripts', 
     name: 'main', 
     out: '../build/main-built.js' 
    }; 

gulp.task('scripts', function(cb){ 
    rjs.optimize(config, function(buildResponse){ 
     // console.log('build response', buildResponse); 
     cb(); 
    }, cb); 
}); 

देखें: https://github.com/phated/requirejs-example-gulpfile/blob/master/gulpfile.js