使用带有 Gulp 的 requirejs 优化器节点模块
Using requirejs optimizer node module with Gulp
直接有gulp-requirejs plugin, but it's blacklisted with the following message: "use the 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 模块不使用流,所以它不会工作。
还有非常 Gulp 友好的 amd-optimize 但它与 r.js 不一样。
我刚刚 运行 使用 gulp-shell:
构建 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 秒,一点也不长。
r 设置在外部 build.js
文件中定义,Gulp 对此一无所知。
要在不调用 shell 的情况下执行此操作,您可以这样做:
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
直接有gulp-requirejs plugin, but it's blacklisted with the following message: "use the 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 模块不使用流,所以它不会工作。
还有非常 Gulp 友好的 amd-optimize 但它与 r.js 不一样。
我刚刚 运行 使用 gulp-shell:
构建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 秒,一点也不长。
r 设置在外部 build.js
文件中定义,Gulp 对此一无所知。
要在不调用 shell 的情况下执行此操作,您可以这样做:
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