2015-03-11 20 views
5

C'è il plugin gulp-requirejs, ma è il blacklisted con il seguente messaggio: "usa direttamente il modulo require.js".Utilizzo del modulo di nodo requirejs optimizer con Gulp

I documenti sono piuttosto sparsi, come utilizzarli in combinazione con l'attività di generazione di Gulp?

Nel docs c'è un esempio:

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

Ma questo non mi aiuta molto ... Ecco la mia miglior prova:

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

Ma il modulo requirejs non usa i flussi , quindi non funzionerà.

C'è anche lo stesso Gulp amd-optimize ma non è lo stesso di r.js, ancora.

+0

gulp Beh non ho usato. Ma ho una buona conoscenza di RequireJS e grugnito e non grugnito ... Allora, cosa sono questi flussi, non possiamo usare come normale compito in gola? – Vishwanath

+0

Gulp utilizza [Nodi stream] (https://nodejs.org/api/stream.html) e [vinyl] (https://github.com/wearefractal/vinyl). Il vinile è magia nera per me a questo punto, [qui] (https://medium.com/@contrahacks/gulp-3828e8126466) un ottimo post su di esso. Ho anche appena trovato [questo problema] (https://github.com/jrburke/r.js/issues/785) che tratta proprio questo. –

+0

Potrei semplicemente eseguire il comando shell con gulp-shell. –

risposta

4

ho appena finito per l'esecuzione del comando r.js compilazione con gulp-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' 
])) 

ci vogliono circa 2 secondi per correre, non troppo a lungo a tutti.

Le impostazioni r sono definite in un file esterno build.js di cui Gulp non sa nulla.

+0

Scusate ma per questo non avete bisogno di Gupl. Puoi eseguirlo tramite: npm eseguire "task" – AntiCZ

8

Per fare questo senza invocare il guscio, si può fare come:

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

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

Problemi correlati