2015-03-11 15 views
5

Có plugin gulp-requirejs, nhưng đó là blacklisted với thông báo sau: "sử dụng trực tiếp mô-đun require.js".Sử dụng mô-đun trình tối ưu hóa requirejs với Gulp

Tài liệu khá thưa thớt, cách tốt nhất tôi nên sử dụng nó cùng với công việc xây dựng Gulp?

Trong docs có một ví dụ:

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

Nhưng điều đó không giúp tôi nhiều ... Dưới đây là thử sức mình:

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

Nhưng module requirejs không sử dụng suối , vì vậy nó sẽ không hoạt động.

Ngoài ra còn có rất nhiều Gulp thân thiện amd-optimize nhưng nó không giống như r.js, được nêu ra.

+0

Vâng, tôi đã không sử dụng ngụm. Nhưng tôi có chuyên môn tốt xung quanh RequireJS và grunt và không grunt ... Vì vậy, dòng này là gì, chúng ta không thể sử dụng như nhiệm vụ bình thường trong gulp? – Vishwanath

+0

Gulp sử dụng [Node stream] (https://nodejs.org/api/stream.html) và [vinyl] (https://github.com/wearefractal/vinyl). Vinyl là ma thuật đen cho tôi vào thời điểm này, [đây] (https://medium.com/@contrahacks/gulp-3828e8126466) một bài đăng tuyệt vời trên đó. Tôi cũng chỉ tìm thấy [vấn đề này] (https://github.com/jrburke/r.js/issues/785) đối phó với điều này. –

+0

Tôi chỉ có thể chạy lệnh shell với gulp-shell. –

Trả lời

4

tôi chỉ kết thúc chạy r.js build lệnh với ngụm-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' 
])) 

Phải mất khoảng 2 giây để chạy, không quá dài ở tất cả.

Cài đặt r được xác định trong tệp bên ngoài build.js mà Gulp không biết gì cả.

+0

Xin lỗi nhưng vì điều này bạn không cần Gupl. Bạn có thể chạy nó thông qua: npm run "task" – AntiCZ

8

Để thực hiện điều này mà không có cách gọi vỏ, bạn có thể làm điều đó thích:

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

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

Các vấn đề liên quan