我在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));
答案 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()
返回的值。