如何以编程方式循环遍历文件并要求每个文件?

时间:2014-07-02 23:51:04

标签: javascript node.js gulp browserify

我在Node(实际上是gulp)尝试以编程方式循环遍历文件并要求每个文件。但我一直收到一个错误,即Browserify没有管道方法。当我明确地写出每个require语句时,这不会发生。这是我的代码:

var bStream = browserify({
         entries: [options.JSX_DEST + '/main']
     })
     .require('react')
     .require('react-addons');

fs.readdirSync(options.JSX_DEST).forEach(function(file){
        bStream.require(options.JSX_DEST + '/' + file);
    });

bStream.bundle({debug: false});
bStream.pipe(source('bundle.js'))
    .pipe(gulp.dest(options.JSX_DEST));

有关正确方法的任何想法吗?只是为了澄清以下工作如果我在第一行链接我的bundle语句但这需要我明确地写每个需求行,而我想以编程方式进行。

var bStream = browserify({
        entries: [options.JSX_DEST + '/main']
    })  
    .require('react')
    .require('react-addons')
    .bundle({debug: false});
    bStream
    .pipe(source('bundle.js'))
    .pipe(gulp.dest(options.JSX_DEST));

1 个答案:

答案 0 :(得分:1)

您忘记将函数调用的结果分配回bstream

fs.readdirSync(options.JSX_DEST).forEach(function(file){
    bStream = bStream.require(options.JSX_DEST + '/' + file);
});

bStream.bundle({debug: false});
  .pipe(source('bundle.js')) // <- call .pipe on the result of .bundle!
  .pipe(gulp.dest(options.JSX_DEST));

请注意,如果您使用方法链接,例如

var x = foo().bar().baz();

那么没有链接的等效版本将是

var x = foo();
x = x.bar();
x = x.baz();

<强>不

var x = foo();
x.bar();
x.baz();

请注意,x仍然会返回foo()返回的值,而不是baz()返回的值。