Last active
November 6, 2019 23:10
-
-
Save demisx/9512212 to your computer and use it in GitHub Desktop.
My Gulp file example
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
var gulp = require('gulp'), | |
debug = require('gulp-debug'), | |
size = require('gulp-filesize'), | |
clean = require('gulp-clean'), | |
coffee = require('gulp-coffee'), | |
coffeelint = require('gulp-coffeelint'), | |
gutil = require('gulp-util'), | |
sass = require('gulp-sass'), | |
imagemin = require('gulp-imagemin'), | |
changed = require('gulp-changed'), | |
livereload = require('gulp-livereload'), | |
karma = require('gulp-karma'), | |
protractor = require('gulp-protractor').protractor, | |
webdriver_standalone = require('gulp-protractor').webdriver_standalone, | |
webdriver_update = require('gulp-protractor').webdriver_update; | |
var filePath = { | |
build_dir: './.build', | |
lint: { src: ['./app/app.coffee','./app/**/*.coffee'] }, | |
coffee: { | |
src: ['./app/**/*.coffee','!./app/**/*_spec.coffee'], | |
dest: './.build/**/*.js', | |
dest_dir: './.build', | |
}, | |
vendor: { | |
src: ['./bower_components/**/*.{js,css}','./bower_components/**/fonts/*'], | |
dest_dir: './.build/bower_components' | |
}, | |
images: { | |
src: './app/**/*.{jpg,png,gif}', | |
dest_dir: './.build' | |
}, | |
data: { | |
src: './app/data/**/*', | |
dest_dir: './.build/data' | |
}, | |
sass: { | |
src: ['./app/**/*.scss'], | |
dest: './.build/**/*.css', | |
dest_dir: './.build' | |
}, | |
html: { | |
src: './app/**/*.html', | |
dest: './.build/**/*.html', | |
dest_dir: './.build' | |
}, | |
unit: { | |
src: [ | |
'bower_components/angular/angular.js', | |
'bower_components/angular-*/angular-*.js', | |
'app/app.coffee', | |
'app/modules/**/*.coffee', | |
'app/modules/**/*_spec.coffee' | |
] | |
}, | |
e2e: { src: 'spec/e2e/**/*.coffee' } | |
}; | |
var server; | |
gulp.task('unit', function() { | |
// Be sure to return the stream | |
return gulp.src(filePath.unit.src) | |
.pipe(karma({ | |
configFile: './spec/config/karma-unit.conf.js', | |
action: 'run' | |
})); | |
}); | |
gulp.task('webdriver_update', webdriver_update); | |
gulp.task('webdriver_standalone', webdriver_standalone); | |
gulp.task('e2e', ['webdriver_update'], function() { | |
gulp.src(filePath.e2e.src) | |
.pipe(protractor({ | |
configFile: "spec/config/protractor-e2e.config.js", | |
args: ['--baseUrl', 'http://127.0.0.1:8000'] | |
})) | |
.on('error', function(e) { throw e }) | |
}); | |
gulp.task('livereload', function() { | |
server = livereload(); | |
}); | |
gulp.task('clean', function() { | |
return gulp.src(filePath.build_dir, {read: false}) | |
.pipe(clean()); | |
}); | |
gulp.task('lint', function () { | |
gulp.src(filePath.lint.src) | |
.pipe(coffeelint()) | |
.pipe(coffeelint.reporter()) | |
}); | |
gulp.task('vendor', function() { | |
gulp.src(filePath.vendor.src) | |
// .pipe(changed(filePath.vendor.dest_dir)) | |
.pipe(size()) | |
.pipe(gulp.dest(filePath.vendor.dest_dir)); | |
}); | |
gulp.task('images', function() { | |
gulp.src(filePath.images.src) | |
// .pipe(changed(filePath.images.dest_dir)) | |
.pipe(imagemin()) | |
.pipe(size()) | |
.pipe(gulp.dest(filePath.images.dest_dir)) | |
}); | |
gulp.task('data', function() { | |
gulp.src(filePath.data.src) | |
.pipe(changed(filePath.data.dest_dir)) | |
.pipe(gulp.dest(filePath.data.dest_dir)); | |
}); | |
gulp.task('html', function() { | |
gulp.src(filePath.html.src) | |
.pipe(changed(filePath.html.dest_dir)) | |
.pipe(gulp.dest(filePath.html.dest_dir)); | |
}); | |
gulp.task('coffee', function() { | |
gulp.src(filePath.coffee.src) | |
.pipe(changed(filePath.coffee.dest_dir, { extension: '.js' })) | |
.pipe(gulp.dest(filePath.coffee.dest_dir)) | |
.pipe(size()) | |
.pipe(coffee({ bare: true, sourceMap: true, sourceFiles: './app' }).on('error', gutil.log)) | |
.pipe(gulp.dest(filePath.coffee.dest_dir)); | |
}); | |
gulp.task('sass', function() { | |
gulp.src(filePath.sass.src) | |
.pipe(changed(filePath.sass.dest_dir, { extension: '.css' })) | |
.pipe(size()) | |
.pipe(sass()) | |
.pipe(gulp.dest(filePath.sass.dest_dir)); | |
}); | |
gulp.task('watch-html', function() { | |
console.log("Watching: " + filePath.html.src); | |
gulp.watch(filePath.html.src, ['html']); | |
gulp.watch(filePath.html.dest).on('change', function(file) { | |
console.log("Changed HTML: " + file.path); | |
server.changed(file.path); | |
}); | |
}); | |
gulp.task('watch-images', function() { | |
console.log("Watching: " + filePath.images.src); | |
gulp.watch(filePath.images.src, ['images']); | |
gulp.watch(filePath.images.dest).on('change', function(file) { | |
console.log("Changed HTML: " + file.path); | |
server.changed(file.path); | |
}); | |
}); | |
gulp.task('watch-coffee', function() { | |
gulp.watch(filePath.coffee.src, ['coffee']); | |
gulp.watch(filePath.coffee.dest).on('change', function(file) { | |
server.changed(file.path); | |
}); | |
}); | |
gulp.task('watch-sass', function() { | |
gulp.watch(filePath.sass.src, ['sass']); | |
gulp.watch(filePath.sass.dest).on('change', function(file) { | |
console.log("Changed sass: " + file.path); | |
server.changed(file.path); | |
}); | |
}); | |
gulp.task('watch-unit', function() { | |
return gulp.src(filePath.unit.src) | |
.pipe(karma({ | |
configFile: './spec/config/karma-unit.conf.js', | |
action: 'watch' | |
})); | |
}); | |
gulp.task('build', ['lint', 'coffee', 'vendor', 'sass', 'images', 'html', 'data']); | |
gulp.task('watch', ['livereload', 'watch-sass', 'watch-coffee', 'watch-html', 'watch-images', 'watch-unit']); | |
gulp.task('default', ['watch']); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment