Skip to content

Instantly share code, notes, and snippets.

@bullrico
Last active August 29, 2015 14:00
Show Gist options
  • Save bullrico/43a2d2f22d6aaebd98e3 to your computer and use it in GitHub Desktop.
Save bullrico/43a2d2f22d6aaebd98e3 to your computer and use it in GitHub Desktop.
Gulp setup
`
//= require ./../bower_components/jquery/jquery.js
//= require ./../bower_components/modernizr/modernizr.js
//= require_tree ./common
`
#= require_tree ./modules
$ ->
new CustomBehavior()
// Include gulp
var gulp = require('gulp');
// Include Our Plugins
var jshint = require('gulp-jshint'),
sass = require('gulp-sass'),
coffee = require('gulp-coffee'),
neat = require('node-neat').includePaths,
concat = require('gulp-concat'),
uglify = require('gulp-uglify'),
rename = require('gulp-rename'),
http = require('http'),
ecstatic = require('ecstatic'),
gutil = require('gulp-util'),
gulpif = require('gulp-if'),
slim = require('gulp-slim'),
imagemin = require('gulp-imagemin'),
watch = require('gulp-watch'),
include = require('gulp-include');
;
var paths = {
html: {
source: "templates/**/*.slim",
destination: "public/"
},
sass: {
source: "css/**/*.scss",
destination: "public/css"
},
js: {
source: "js/common/**/*.js",
destination: "public/js"
},
coffee: {
source: "js/modules/**/*.coffee",
main: "js/app.coffee"
},
images: {
sources: "images/**",
destination: "images/**"
},
fonts: {
source: "fonts/**/*.*",
destination: "public/fonts"
}
};
// Compile fonts
gulp.task('fonts', function() {
return gulp.src(paths.fonts.source)
.pipe(gulp.dest(paths.fonts.destination));
});
// Run images through imagemin and move them to public
gulp.task('images', function() {
return gulp.src('images/**')
.pipe(imagemin())
.pipe(gulp.dest('public/images'));
});
// Lint Task
gulp.task('lint', function() {
return gulp.src([paths.js.source, paths.coffee.source])
.pipe(gulpif(/[.]coffee$/, coffee()))
.pipe(jshint())
.pipe(jshint.reporter('default'));
});
// Compile Sass
gulp.task('sass', function() {
return gulp.src('css/all.scss')
.pipe(include())
.pipe(sass({ includePaths: ['sass'].concat(neat), errLogToConsole: true }))
.pipe(gulp.dest(paths.sass.destination));
});
// Compile coffee first, then Bower and js/common JS files
gulp.task('scripts', function() {
return gulp.src(paths.coffee.main)
.pipe(include({
extensions: "coffee"
}))
.pipe(coffee())
.pipe(include({
extensions: "js"
}))
.pipe(concat('compiled.js'))
.pipe(gulp.dest(paths.js.destination))
.pipe(rename('compiled.min.js'))
.pipe(uglify())
.pipe(gulp.dest(paths.js.destination))
});
// Compile Slim
gulp.task('slim', function() {
return gulp.src(paths.html.source)
.pipe(slim({ pretty: true }))
.pipe(gulp.dest(paths.html.destination));
});
// Watch Files For Changes
gulp.task('watch', function() {
watch({glob: [paths.js.source, paths.coffee.source]}, function() {
gulp.start('lint');
gulp.start('scripts');
});
watch({glob: paths.sass.source}, function () {
gulp.start('sass');
});
watch({glob: paths.html.source}, function () {
gulp.start('slim');
});
watch({glob: paths.images.source}, function() {
gulp.start('images');
});
});
gulp.task('run', function() {
http.createServer(
ecstatic({ root: __dirname + '/public' })
).listen(8000);
console.log('Listening on :8000');
});
// Build source
gulp.task('build', ['lint', 'fonts', 'sass', 'scripts', 'slim', 'images']);
// Default Task
gulp.task('default', ['build', 'watch', 'run']);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment