Skip to content

Instantly share code, notes, and snippets.

@demisx
Last active November 6, 2019 23:10
Show Gist options
  • Save demisx/9512212 to your computer and use it in GitHub Desktop.
Save demisx/9512212 to your computer and use it in GitHub Desktop.
My Gulp file example
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