|
'use strict'; |
|
// generated on 2014-09-26 using generator-gulp-webapp 0.1.0 |
|
|
|
var gulp = require('gulp'); |
|
var browserSync = require('browser-sync'); |
|
var reload = browserSync.reload; |
|
var mainBowerFiles = require('main-bower-files'); |
|
|
|
// load plugins |
|
var $ = require('gulp-load-plugins')({ |
|
pattern: ['gulp-*', 'uglify-save-license'] |
|
}); |
|
|
|
gulp.task('styles', function () { |
|
return gulp.src('public-src/scss/main.scss') |
|
.pipe($.plumber()) |
|
.pipe($.sass({ |
|
// style: 'expanded', |
|
// precision: 10, |
|
// onError: browserSync.notify |
|
errLogToConsole: true, |
|
onError: browserSync.notify |
|
})) |
|
.pipe($.autoprefixer(['last 5 versions', '> 1%', 'ie 8', 'ie 7'], { cascade: true })) |
|
.pipe(gulp.dest('.tmp/styles')) |
|
.pipe($.size()) |
|
.pipe(reload({ stream:true })); |
|
// .pipe(gulp.dest('public/styles')); |
|
}); |
|
|
|
gulp.task('scripts', function () { |
|
return gulp.src('public-src/scripts/**/*.js') |
|
.pipe($.jshint()) |
|
.pipe($.jshint.reporter(require('jshint-stylish'))) |
|
.pipe($.size()); |
|
}); |
|
|
|
gulp.task('views', function () { |
|
return gulp.src('public-src/views/**/*.html') |
|
.pipe($.minifyHtml({ |
|
empty: true, |
|
spare: true, |
|
quotes: true |
|
})) |
|
.pipe($.ngHtml2js({ |
|
moduleName: 'client', |
|
prefix: 'views/' |
|
})) |
|
.pipe(gulp.dest('.tmp/views')) |
|
.pipe($.size()); |
|
}); |
|
|
|
gulp.task('html', ['styles', 'scripts', 'views'], function () { |
|
var jsFilter = $.filter('**/*.js'); |
|
var cssFilter = $.filter('**/*.css'); |
|
|
|
return gulp.src('public-src/*.html') |
|
.pipe($.inject(gulp.src('.tmp/views/**/*.js'), { |
|
read: false, |
|
starttag: '<!-- inject:views -->', |
|
addRootSlash: false, |
|
addPrefix: '../' |
|
})) |
|
// .pipe($.useref.assets({searchPath: '{public-src}'})) |
|
.pipe($.useref.assets()) |
|
.pipe($.rev()) |
|
.pipe(jsFilter) |
|
.pipe($.ngAnnotate()) |
|
.pipe($.uglify({preserveComments: $.uglifySaveLicense})) |
|
.pipe(jsFilter.restore()) |
|
.pipe(cssFilter) |
|
// .pipe($.replace('bower_components/bootstrap-sass-official/vendor/assets/fonts/bootstrap','fonts')) |
|
.pipe($.csso()) |
|
.pipe(cssFilter.restore()) |
|
.pipe($.useref.restore()) |
|
.pipe($.useref()) |
|
.pipe(gulp.dest('public')) |
|
.pipe($.size()); |
|
}); |
|
|
|
gulp.task('images', function () { |
|
return gulp.src('public-src/images/**/*') |
|
.pipe($.cache($.imagemin({ |
|
optimizationLevel: 3, |
|
progressive: true, |
|
interlaced: true |
|
}))) |
|
.pipe(gulp.dest('public/images')) |
|
.pipe($.size()); |
|
}); |
|
|
|
gulp.task('fonts', function () { |
|
return gulp.src(mainBowerFiles()) |
|
.pipe($.filter('**/*.{eot,svg,ttf,woff}')) |
|
.pipe($.flatten()) |
|
.pipe(gulp.dest('public/fonts')) |
|
.pipe($.size()); |
|
}); |
|
|
|
gulp.task('extras', function () { |
|
return gulp.src([ |
|
'public-src/*.*', |
|
'!public-src/*.html' |
|
], { dot: true }) |
|
.pipe(gulp.dest('public')); |
|
}); |
|
|
|
gulp.task('default', ['clean'], function () { |
|
gulp.start('build'); |
|
}); |
|
|
|
gulp.task('serve', function() { |
|
browserSync({ |
|
server: { |
|
baseDir: 'public-src' |
|
} |
|
}); |
|
}); |
|
|
|
// inject bower components |
|
gulp.task('wiredep', function () { |
|
var wiredep = require('wiredep').stream; |
|
|
|
gulp.src('public-src/scss/*.scss') |
|
.pipe(wiredep({ |
|
directory: 'public-src/bower_components' |
|
})) |
|
.pipe(gulp.dest('public-src/styles')); |
|
|
|
gulp.src('public-src/*.html') |
|
.pipe(wiredep({ |
|
directory: 'public-src/bower_components', |
|
exclude: ['bootstrap-sass-official'] |
|
})) |
|
.pipe(gulp.dest('app')); |
|
}); |
|
|
|
gulp.task('watch', ['styles', 'serve'], function () { |
|
|
|
// watch for changes |
|
|
|
gulp.watch([ |
|
'public-src/*.html', |
|
'public-src/styles/**/*.css', |
|
'public-src/scripts/**/*.js', |
|
'public-src/images/**/*' |
|
], { }, reload); |
|
|
|
// gulp.watch([ |
|
// 'public-src/*.html', |
|
// '.tmp/styles/**/*.css', |
|
// 'public-src/scripts/**/*.js', |
|
// 'public-src/images/**/*' |
|
// ]).on('change', function (file) { |
|
// server.changed(file.path); |
|
// }); |
|
|
|
gulp.watch('public-src/scss/**/*.scss', ['styles']); |
|
gulp.watch('public-src/scripts/**/*.js', ['scripts']); |
|
gulp.watch('public-src/images/**/*', ['images']); |
|
gulp.watch('bower.json', ['wiredep']); |
|
}); |
|
|
|
gulp.task('copy-html', function () { |
|
return gulp.src('public/index.html') |
|
.pipe($.rename('index.blade.php')) |
|
.pipe(gulp.dest('../server/app/views/')); |
|
}); |
|
|
|
|
|
//gulp.task('copy-styles', function () { |
|
// return gulp.src('public/styles/**/*.css') |
|
// .pipe(gulp.dest('../server/public/styles/')); |
|
//}); |
|
// |
|
//gulp.task('copy-scripts', function () { |
|
// return gulp.src('public/scripts/**/*.js') |
|
// .pipe(gulp.dest('../server/public/scripts/')); |
|
//}); |
|
// |
|
//gulp.task('copy-partials', function () { |
|
// return gulp.src('public/views/**/*.js') |
|
// .pipe(gulp.dest('../server/public/partials/')); |
|
//}); |
|
// |
|
//gulp.task('copy-images', function () { |
|
// return gulp.src('public/images/**/*') |
|
// .pipe(gulp.dest('../server/public/images/')); |
|
//}); |
|
// |
|
//gulp.task('copy-fonts', function () { |
|
// return gulp.src('public/fonts/**/*.{eot,svg,ttf,woff}') |
|
// .pipe(gulp.dest('../server/public/fonts/')); |
|
//}); |
|
|
|
gulp.task('copy', [ |
|
'copy-html' |
|
// 'copy-styles', |
|
// 'copy-scripts', |
|
// 'copy-partials', |
|
// 'copy-images', |
|
// 'copy-fonts' |
|
]); |
|
|
|
|
|
gulp.task('clean', function () { |
|
return gulp.src(['public'], { read: false }).pipe($.clean()); |
|
}); |
|
|
|
gulp.task('build', ['html', 'views', 'images', 'fonts', 'extras', 'copy']); |
Really awesome. I was looking for this around the whole internet. Thanks!