我试图在我的Gulp文件中使用Browserify,但似乎无论我如何设置,它总是抛出一个错误,读取" dest.write不是一个函数"。我最初使用gulp-concat开始执行此任务:
gulp.task('scripts', function()
{
return gulp.src(['src/shared/js/one.js', 'src/shared/js/two.js', 'src/shared/js/*.js'])
.pipe(browserify()
.pipe(concat('main.js'))
.pipe(gulp.dest('dist/js'))
.pipe(browserSync.stream());
});
当我注释掉browserify()行时,一切正常。在谷歌搜索错误消息的解决方案时,我找到this page当有人链接到它时,说" gulp docs对这个解决方案赞不绝口#34; (here):
var gulp = require('gulp');
var browserify = require('browserify');
var transform = require('vinyl-transform');
var uglify = require('gulp-uglify');
gulp.task('browserify', function () {
var browserified = transform(function(filename) {
var b = browserify(filename);
return b.bundle();
});
return gulp.src(['./src/*.js'])
.pipe(browserified)
.pipe(uglify())
.pipe(gulp.dest('./dist'));
});
我进一步挖掘,并且认为vinyl-transform
没有以这种方式使用Browserify,因为没有写入流,而首选的方法是使用vinyl-source-stream
。我现在正在尝试使用此提议的解决方案,但仍然收到错误:
gulp.task('scripts', function()
{
return gulp.src(['src/shared/js/one.js', 'src/shared/js/two.js', 'src/shared/js/*.js'])
.pipe(browserify('src/shared/js/*.js', {
debug: true,
extensions: ['.js']
}))
.bundle()
.pipe(source('main.js'))
.pipe(buffer())
.pipe(gulp.dest('dist/js'))
.pipe(browserSync.stream());
});
以各种方式调整browserify()引用并未改变任何内容。谁能告诉我我做错了什么?
答案 0 :(得分:0)
这是在完全相同的情况下对我有用的解决方案。 我花了一些时间尝试使用browserify进行乙烯基转换工作,但没有成功,因此不得不恢复乙烯基源流和乙烯基缓冲液组合。
我使用以下要点作为我的代码段的基本参考: https://gist.github.com/stoikerty/cfa49330a9609f6f8d2d
var gulp = require('gulp');
var source = require('vinyl-source-stream');
var buffer = require('vinyl-buffer');
var browserify = require('browserify');
var uglify = require('gulp-uglify');
gulp.task('browserify', function () {
var b = browserify({
entries: './js/test.js', // Only need initial file, browserify finds the deps
debug: true // Enable sourcemaps
});
return b.bundle()
.pipe(source('./js/test.js')) // destination file for browserify, relative to gulp.dest
.pipe(buffer())
.pipe(uglify())
.pipe(gulp.dest('./dist'));
});