I blew so much time on this, it’s crazy.
I got it down to something simple and clean, finally. And it turns out the “recipes” section on the Gulp website pretty much had the answer already. I just needed to understand more about what I was trying to do in the first place.
Note: You need to install coffeeify to have it available as a transform!
var gulp = require('gulp');
var browserify = require('browserify');
var source = require('vinyl-source-stream'); //to 'rename' your resulting file
var uglify = require('gulp-uglify');
var buffer = require('vinyl-buffer'); // to transform the browserify results into a 'stream'
var sourcemaps = require('gulp-sourcemaps');
gulp.task("your_target",function() {
browserify({
entries: ["./sample.coffee"],
debug: true,
extensions: [".coffee"],
transform: ["coffeeify"] // npm install --save-dev coffeeify
})
.bundle()
.pipe(source('resulting_file_name.js'))
.pipe(buffer())
.pipe(sourcemaps.init({loadMaps: true,debug: true}))
.pipe(uglify(/* {
debug: true,
options: {
sourceMap: true,
}
}*/)).pipe(sourcemaps.write("./" /* optional second param here */))
.pipe(gulp.dest('./build/'));
});
If you don’t want the sourcemap URL in your resulting JS file (which I didn’t, because I keep my sourcemap file private), add a second parameter ,{addComment: false}
to the sourcemaps.write
line near the end.
Edit: – the parameter to uglify isn’t even needed.