Skip to content

Instantly share code, notes, and snippets.

@hamedb89
Created August 12, 2015 21:43
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save hamedb89/b61be969dde7650d1913 to your computer and use it in GitHub Desktop.
Save hamedb89/b61be969dde7650d1913 to your computer and use it in GitHub Desktop.
// ## Globals
var argv = require('minimist')(process.argv.slice(2));
var browserify = require('browserify');
var buffer = require('vinyl-buffer');
var changed = require('gulp-changed');
var coffeeify = require('coffeeify');
var concat = require('gulp-concat');
var gulp = require('gulp');
var gulpif = require('gulp-if');
var jshint = require('gulp-jshint');
var lazypipe = require('lazypipe');
var merge = require('merge-stream');
var plumber = require('gulp-plumber');
var rev = require('gulp-rev');
var runSequence = require('run-sequence');
var source = require('vinyl-source-stream');
var transform = require('vinyl-transform');
var uglify = require('gulp-uglify');
var manifest = require('asset-builder')('./assets/manifest.json');
var path = manifest.paths;
var config = manifest.config || {};
var globs = manifest.globs;
var project = manifest.getProjectGlobs();
var enabled = {
rev: argv.production,
failJSHint: argv.production,
stripJSDebug: argv.production
};
var revManifest = path.dist + 'assets.json';
var writeToManifest = function(directory){
return lazypipe()
.pipe(gulp.dest, path.dist + directory)
.pipe(rev.manifest, revManifest, {
base: path.dist,
merge: true
})
.pipe(gulp.dest, path.dist)();
};
gulp.task('scripts', ['jshint'], function(){
var merged = merge();
manifest.forEachDependency('js', function(dep){
var b = browserify({
entries: dep.globs,
debug: true,
transform: config.browserify.transform,
extensions: config.browserify.extensions
});
merged.add(
b.bundle()
.on('error', function (err) {
console.log(err.toString());
this.emit("end");
})
.pipe(source(dep.name))
.pipe(buffer())
)
});
return merged.pipe(writeToManifest('scripts'));
});
gulp.task('jshint', function(){
return gulp.src(['bower.json', 'gulpfile.js'].concat(project.js))
.pipe(jshint())
.pipe(jshint.reporter('jshint-stylish'))
.pipe(gulpif(enabled.failJSHint, jshint.reporter('fail')));
});
gulp.task('clean', require('del').bind(null, [path.dist]));
gulp.task('watch', function() {
gulp.watch([path.source + 'scripts/**/*'], ['jshint', 'scripts']);
gulp.watch(['bower.json', 'assets/manifest.json'], ['build']);
});
gulp.task('build', function(callback) {
runSequence( 'scripts', callback);
});
gulp.task('default', ['clean'], function() {
gulp.start('build');
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment