为什么我必须使用乙烯源stream与吞咽?

我正在尝试使用.jsx.jsx将我的.jsx文件转换成.js文件。

 var gulp = require('gulp'); var browserify = require('browserify'); var reactify = require('reactify'); gulp.task('js', function () { browserify('public/javascripts/src/app.jsx') .transform(reactify) .bundle() .pipe(gulp.dest('public/javascripts/dist')) }); 

“`

以上将Arguments to path.resolve must be strings 。 我设法通过使用vinyl-source-stream解决它

 var source = require('vinyl-source-stream'); ... .bundle() .source('app.js') ... 

为什么这个工作? 我对nodejs和gulp相当陌生。 在阅读了项目的README和源代码后,我仍然感到困惑。 任何帮助?

我认为阅读这篇文章可以帮助你澄清一些概念,包括项目的远景,历史和未来 。

基本上你可以说乙烯来源stream将您从browserify获得的可读stream转换成乙烯stream ,这是吞咽期望得到的东西。

乙烯stream是一种虚拟文件格式 ,是Gulp的基础 。 由于乙烯基stream Gulp不需要在不同的转换之间编写一个临时文件。 这是Grunt的主要优点之一。

这个模块只是一个桥梁,使得使用传统的文本stream,比如这个结合吞咽简单。