gulp-browser/ts/gulpbrowser.browserify.ts

51 lines
1.5 KiB
TypeScript
Raw Permalink Normal View History

2018-03-14 23:33:43 +00:00
import * as stream from 'stream';
import plugins = require('./gulpbrowser.plugins');
2019-02-12 23:22:18 +00:00
import * as smartpromise from '@pushrocks/smartpromise';
2018-03-14 23:33:43 +00:00
let browserify = function(transforms = []) {
if (!Array.isArray(transforms)) {
transforms = [transforms];
}
let forEach = function(file, enc, cb) {
// do this with every chunk (file in gulp terms)
let bundleCallback = function(err, bufferedContent) {
// our bundle callback for when browserify is finished
if (Buffer.isBuffer(bufferedContent)) {
file.contents = bufferedContent;
} else {
console.log('gulp-browser: .browserify() ' + err.message);
cb(new Error(err.message), file);
return;
}
cb(null, file);
};
if (file.contents.length > 0) {
let browserified = plugins.browserify(file, { basedir: file.base });
transforms.forEach(function(transform) {
if (typeof transform === 'function') {
browserified.transform(transform);
} else {
browserified.transform(transform.transform, transform.options);
2016-12-13 22:01:25 +00:00
}
2018-03-14 23:33:43 +00:00
});
2018-03-14 23:33:43 +00:00
browserified.bundle(bundleCallback);
} else {
console.warn('gulp-browser: .browserify() file.contents appears to be empty');
cb(null, file);
}
2018-03-14 23:33:43 +00:00
};
2018-03-14 23:33:43 +00:00
let atEnd = function(cb) {
cb();
}; // no need to clean up after ourselves
2018-03-14 23:33:43 +00:00
return plugins.through2.obj(forEach, atEnd); // this is the through object that gets returned by gulpBrowser.browserify();
};
2016-02-26 16:57:53 +00:00
2018-03-14 23:33:43 +00:00
export = browserify;