title: Why do I have to use vinyl-source-stream with gulp?
body: <p>I am trying to use gulp and browserify to transform my <code>.jsx</code> files into <code>.js</code> files.</p>
  
  <pre><code>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'))
  });
  </code></pre>
  
  <p>```</p>
  
  <p>The above threw <code>Arguments to path.resolve must be strings</code>. I managed to get around it by using <code>vinyl-source-stream</code></p>
  
  <pre><code>var source = require('vinyl-source-stream');
  ...
  .bundle()
  .source('app.js')
  ...
  </code></pre>
  
  <p>Why does this work? I am fairly new to nodejs and gulp. After reading the README of the project and the source code, I am still confused. Any help?</p>