gulp插件可以接收一个文件并返回多个文件吗?
Can a gulp plugin take in one file and return many files?
我试图将RequireJS优化器包装在gulp插件中。在gulp中已经有其他的尝试来提供这个功能,但是没有一个能满足我的需求。
插件开发的一个常见方法是接收文件,处理它们,然后分发它们;然而,这种方法与RequireJS优化器的工作方式并不真正兼容。
虽然它不符合gulp插件指南,但我正在研究一种不同的方法,即接受优化器构建配置,处理它,并分发结果文件。
// Read in the r.js configuration
gulp.src( './build.js' )
// Optimize the files according to the config
.pipe( optimize() )
// Return the resulting files for additional processing
.pipe( size() );
gulp插件可以接收一个文件并返回多个文件吗?如果有,怎么做?
- 是的,只是发出多个文件。输出只需要是一个或多个Vinyl文件。
- 插件只接收管道(发射)给他们的东西。这就是使用异步管道的全部意义。
查看插件文档,了解它们是如何工作的
我最终使用vinyl-fs
来传递优化过程的输出。
var requirejs = require( 'requirejs' ),
through = require( 'through2' ),
vfs = require( 'vinyl-fs' );
return through.obj( function( file, encoding, done ){
// Parse config from file
requirejs.optimize( config,
// Success callback
function( buildResponse ){
vfs.src( config.dir + '/**/*.js' )
.on( 'data', this.push.bind( this ) )
.on( 'error', this.emit.bind( this, 'error' ) )
.on( 'end', done );
}.bind( this ),
// Error callback
function( buildError ){
// Handle error
} );
用法最终看起来像…
// Read in build configuration
gulp.src( 'build.js' )
// Run files from the config through the optimizer
.pipe( optimize( settings ) )
// Measure the size of the optimized files
.pipe( size() );
相关文章:
- 如何在elfinder插件(一个文件管理器插件)上获得上传前事件
- 合并TinyMCE(jQuery插件)文件
- 使用filetransfer/cordova插件上传一些文件
- 使用Tabris-js,并尝试使用cordova文件和文件传输插件
- 在部署ckeditor时,我需要包括插件文件夹吗
- IE 9 BHO插件.加载外部JS文件时出现错误SCRIPT1014
- Firefox插件:保存到文本文件的HTTP日志,其中包含时间、用户名、计算机名;t创建文本文件
- 在jquery的另一个文件上浏览jquery插件
- 如何在ngCordova文件插件中使用readAsText时设置编码
- 链接配置文件插件不起作用
- Cordova 3.6.3文件插件-在android上获取本地视频文件
- 更新的iOS设备上的Cordova文件插件错误代码3(Abort_Error)
- Cordova 3.5 android文件插件中的NullPointer异常
- Cordova文件插件从未在Android中准备好
- Cordova文件插件没有写入文件
- Cordova文件插件不工作
- 使用委托动态添加jQuery上传文件插件
- 使用Meteor的Cordova文件插件,在getDirectory()回调中接收一个代码:5 ENCODING_ERR
- Cordova文件插件FileReader.readAsText收到错误,但不调用错误回调
- 科尔多瓦文件插件与应用程序浏览器插件和文件打开器插件