Skip to content

Instantly share code, notes, and snippets.

@igez
Created June 1, 2016 17:07
Show Gist options
  • Save igez/549bc562a1e4249018ddf1a86a39e130 to your computer and use it in GitHub Desktop.
Save igez/549bc562a1e4249018ddf1a86a39e130 to your computer and use it in GitHub Desktop.
var gulp = require('gulp'),
gutil = require('gulp-util'),
clean = require('gulp-clean'),
cssmin = require('gulp-cssmin'),
rename = require('gulp-rename'),
concat = require('gulp-concat'),
uglify = require('gulp-uglify'),
cache = require('gulp-angular-templatecache'),
watch = require('gulp-watch'),
annotate = require('gulp-ng-annotate'),
livereload = require('gulp-livereload');
var config = {
public_path: './public',
dist_path: './public/dist',
src_path: './public/src',
tmp_path: './public/dist/_tmp',
template_cache: {
file: 'templates.js',
options: {
module: 'Fultrac.template',
standalone: true
}
},
production: !!!!!!!!!!gutil.env.production
};
gulp.task('images', ['css'], function() {
return gulp.src('./public/assets/img/**/*')
.pipe(gulp.dest('./public/dist/img'));
})
gulp.task('clean', function(cb) {
return gulp.src('./public/dist', {read: false})
.pipe(clean());
})
gulp.task("bower-copy-css", ['clean'], function() {
return gulp.src([
'./public/components/bootstrap/dist/css/bootstrap.css',
'./public/components/bootstrap/dist/css/bootstrap.css.map',
'./public/components/angular-datatables/dist/css/angular-datatables.css',
'./public/components/angular-datatables/dist/plugins/bootstrap/datatables.bootstrap.min.css',
'./public/assets/css/mdb.css'
]).pipe(gulp.dest('./public/dist/css'));
});
gulp.task("bower-copy-fonts", ['clean'], function() {
return gulp.src([
'./public/components/bootstrap/dist/fonts/*.*',
'./public/assets/fonts/roboto/*.*'
]).pipe(gulp.dest('./public/dist/fonts'))
});
gulp.task("bower-copy-js", ['clean'], function() {
return gulp.src([
'./public/components/bootstrap/dist/js/bootstrap.min.js',
'./public/components/jquery/dist/jquery.min.js',
'./public/components/lodash/dist/lodash.min.js',
'./public/assets/js/mdb.min.js'
]).pipe(gulp.dest('./public/dist/js'))
});
gulp.task("css", ['clean', 'bower-copy'], function() {
return gulp
.src('./public/assets/css/style.css')
.pipe(config.production ? cssmin() : gutil.noop())
.pipe(rename({suffix: '.min'}))
.pipe(gulp.dest('./public/dist/css'));
});
gulp.task('bundle-js', ['clean', 'ng-template', 'ng-controller', 'ng-services', 'ng-factories'], function() {
return gulp
.src([
'./public/src/_head.js.tpl',
'./public/src/env.js',
'./public/dist/_tmp/*.js',
'./public/src/routes.js',
'./public/src/app.js',
'./public/src/_bottom.js.tpl'
])
.pipe(concat('bundle.min.js'))
.pipe(annotate())
.pipe(config.production ? uglify() : gutil.noop())
.pipe(gulp.dest('./public/dist'))
.pipe(livereload());
});
gulp.task("bower-copy", ['bower-copy-css', 'bower-copy-fonts', 'bower-copy-js']);
gulp.task("build", ['angular-bundle', 'bundle-js']);
// Angular Sections
gulp.task('ng-template', ["ng-controller"], function() {
return gulp.src(config.public_path + '/src/templates/**/*.html')
.pipe(cache(config.template_cache.file, config.template_cache.options))
.pipe(config.production ? uglify() : gutil.noop())
.pipe(gulp.dest(config.tmp_path));
});
gulp.task('angular-bundle', ['clean', 'bower-copy', 'css', 'images'], function() {
gulp.src([
'./public/components/angular/angular.min.js.map',
'./public/components/angular-permission/dist/angular-permission-ui.min.js.map',
'./public/components/angular-local-storage/dist/angular-local-storage.min.js.map'
]).pipe(gulp.dest(config.dist_path + '/js'));
return gulp
.src([
'./public/components/angular/angular.min.js',
'./public/components/angular-ui-router/release/angular-ui-router.min.js',
'./public/components/angular-permission/dist/angular-permission.min.js',
'./public/components/angular-permission/dist/angular-permission-ui.min.js',
'./public/components/angular-local-storage/dist/angular-local-storage.min.js',
'./public/components/angular-datatables/dist/angular-datatables.min.js',
'./public/components/angular-datatables/dist/plugins/bootstrap/angular-datatables.bootstrap.min.js',
])
.pipe(concat('angular-bundle.min.js'))
.pipe(gulp.dest(config.dist_path + '/js'));
});
gulp.task('ng-services', ['angular-bundle'], function() {
return gulp
.src([
'./public/src/services/*.js',
])
.pipe(concat('services.js'))
.pipe(gulp.dest('./public/dist/_tmp/'));
});
gulp.task('ng-factories', ['angular-bundle'], function() {
return gulp
.src([
'./public/src/factories/*.js',
])
.pipe(concat('factories.js'))
.pipe(gulp.dest('./public/dist/_tmp/'));
});
gulp.task("ng-controller", ['angular-bundle'], function() {
return gulp
.src([
'./public/src/controllers/*.js',
])
.pipe(concat('controllers.js'))
.pipe(annotate())
.pipe(gulp.dest('./public/dist/_tmp/'));
});
gulp.task("dev", ['angular-bundle', 'bundle-js'], function() {
livereload.listen();
gulp.watch([config.src_path + '/**/*.js', config.src_path + '/**/*.html'], ['bundle-js']);
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment