2015-03-11 18 views
5

Es gibt gulp-requirejs Plugin, aber es ist blacklisted mit der folgenden Meldung: "Verwenden Sie das require.js Modul direkt".Verwenden requirjs Optimierer Knotenmodul mit Gulp

Die Dokumente sind ziemlich spärlich, wie würde ich es am besten in Verbindung mit Gulp bauen Aufgabe verwenden?

Im docs gibt ein Beispiel:

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 
}); 

Aber das macht mir nicht viel helfen ... Hier ist mein bester Versuch:

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)) 
}); 

Aber das requirejs Modul nicht-Streams verwenden , also wird es nicht funktionieren.

Es gibt auch die sehr Gulp freundliche amd-optimize, aber es ist nicht das gleiche wie r.js, noch.

+0

Nun, ich habe nicht verwendet Schluck. Aber ich habe gute Kenntnisse um RequireJS und grunzen und nicht grunzen ... Also was sind das für Ströme, können wir nicht wie normale Aufgaben im Schluck verwenden? – Vishwanath

+0

Gulp verwendet [Knotenströme] (https://nodejs.org/api/stream.html) und [Vinyl] (https://github.com/wearefractal/vinyl). Vinyl ist an diesem Punkt schwarze Magie, [hier ist] (https://medium.com/@contrahacks/gulp-3828e8126466) ein toller Beitrag dazu. Ich habe gerade [gerade diese Ausgabe] (https://github.com/jrburke/r.js/issues/785) gefunden, die gerade damit beschäftigt ist. –

+0

Ich könnte einfach den Shell-Befehl mit Gulp-Shell ausführen. –

Antwort

4

ich gerade zu Ende gegangen, den r.js Build Befehl angerannt mit schluck-Shell:

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' 
])) 

Es ca. 2 Sekunden in Anspruch nimmt, nicht zu lange auf Anhieb funktioniert.

Die Einstellungen sind in einer externen build.js Datei definiert, über die Gulp nichts weiß.

+0

Tut mir leid, aber dafür brauchst du kein Gupl. Sie können es ausführen: npm run "task" – AntiCZ

8

Um dies zu tun, ohne die Shell aufrufen, können Sie es tun:

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); 
}); 

siehe: https://github.com/phated/requirejs-example-gulpfile/blob/master/gulpfile.js