如何使用流作为Browserify的输入?
在Gulp中,我试图编译TypeScript,并将它连接起来,然后通过Browserify运行它来处理require
(然后在生产模式下之后的uglify)。
这个示例代码是我发现的最接近我想要做的事情,但它使用中间文件。 如果可能的话,我宁愿将东西留在流中以避免中间文件的开销。
由于Browserify输出一个流,它似乎应该知道如何接受一个流。
相关代码:
var gulp = require('gulp');
var browserify = requ
var concat = require('gulp-concat');
var sourcemaps = require('gulp-sourcemaps');
var transform = require('vinyl-transform');
var typeScript = require('gulp-typescript');
gulp.task('scripts', function () {
return gulp.src([mySrcDir,'typings/**/*.d.ts'])
.pipe(sourcemaps.init())
.pipe(typeScript(typeScriptProject))
.pipe(concat('main.js'))
.pipe(transform(function (filename) {
return browserify(filename).bundle();
}))
.pipe(sourcemaps.write())
.pipe(gulp.dest(ns.outDir))
// Reload, notify...
;
结果:
Error: Cannot find module 'C:pathtoprojectrootsrcmain.js' in 'C:pathtoprojectroot'
当我省略连接时,结果是一样的,除了foobar.js
而不是main.js
,其中foobar.ts
是输入文件之一。
第二次尝试
gulp.task('scripts', function () {
var stream = gulp.src([mySrcDir,'typings/**/*.d.ts'])
.pipe(sourcemaps.init())
.pipe(typeScript(typeScriptProject))
.pipe(concat('main.js'));
var bundleStream = ns.browserify(stream).bundle().on('error', errorHandler);
// and then...
一个新的错误
C:pathtoprojectroot_stream_0.js:1
[object Object]
^
ParseError: Unexpected token
您无法将vinyl
流传递给browserify。 它只接受text
或buffer
流。 唯一的解决方案是将输入的vinyl
流转换为一个text
流,这样browserify可以掌握:
var gutil = require('gulp-util')
var through = require('through2')
var intoStream = require('into-stream')
// ...
.pipe(through.obj(function(file, encoding, next) {
bundle = browserify(intoStream(file.contents))
this.push(new gutil.File({
path: 'index.js',
contents: bundle.bundle()
}))
next()
}))
看看gulp-browserify,它是一个用于browserify的gulp插件。
例:
gulp.src([mySrcDir,'typings/**/*.d.ts'])
.pipe(sourcemaps.init())
.pipe(typeScript(typeScriptProject))
.pipe(concat('main.js'))
.pipe(browserify(options)
.pipe(sourcemaps.write())
.pipe(gulp.dest(ns.outDir))
// Reload, notify...
;
你可以参考上面发布的链接
链接地址: http://www.djcxy.com/p/24095.html上一篇: How to use a stream as input for Browserify?
下一篇: Android Countdown Timer Circular Progress Bar doesn't match with timer