2015-03-11 11 views
5

Istnieje wtyczka gulp-requirejs, ale jest to blacklisted z następującym komunikatem: "bezpośrednio użyj modułu require.js".Używanie modułu węzła optymalizującego requirejs z Gulp

Dokumenty są dość nieliczne, jak najlepiej użyć go w połączeniu z zadaniem Gulp-a?

W tamtejszym docs przykład:

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

Ale to mi nie pomogło ... Oto moja najlepsza próba:

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

Ale moduł requirejs nie używać strumieni , więc to nie zadziała.

Istnieje również bardzo przyjazny Gulp amd-optimize, ale to nie to samo co r.js, jeszcze.

+0

No ja nie używany łyk. Ale mam dobrą wiedzę na temat RequireJS i chrząkać i nie chrząkać ... Więc co to za strumienie, nie możemy używać normalnego zadania w haustem? – Vishwanath

+0

Gulp używa [strumieni węzłów] (https://nodejs.org/api/stream.html) i [winylowych] (https://github.com/wearefractal/vinyl). Winyl jest dla mnie czarną magią w tym miejscu, [tutaj jest (https://medium.com/@contrahacks/gulp-3828e8126466) świetny post na jego temat. Właśnie znalazłem [ten problem] (https://github.com/jrburke/r.js/issues/785) zajmujący się właśnie tym. –

+0

Mogłem po prostu uruchomić polecenie powłoki z gulp-shell. –

Odpowiedz

4

Właśnie zakończył się uruchamiając komendę r.js budować z łykiem-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' 
])) 

To trwa około 2 sekund do uruchomienia, nie zbyt długo.

Ustawienia r są zdefiniowane w zewnętrznym pliku build.js, o którym Gulp nic nie wie.

+0

Przepraszamy, ale do tego nie potrzebujesz Gupl. Możesz uruchomić go przez: npm run "task" – AntiCZ

8

Aby to zrobić, bez odwoływania się do powłoki, można to zrobić jak:

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

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

Powiązane problemy