eqemu-server/wi/wi-front/gulpfile.js

212 lines
5.3 KiB
JavaScript

'use strict';
var del = require('del');
var fs = require('fs');
var browserify = require('browserify');
var gulp = require('gulp');
var source = require('vinyl-source-stream');
var buffer = require('vinyl-buffer');
var uglify = require('gulp-uglify');
var sourcemaps = require('gulp-sourcemaps');
var gutil = require('gulp-util');
var concat = require('gulp-concat');
var connect = require('gulp-connect');
var templateCache = require('gulp-angular-templatecache');
var minifyCSS = require('gulp-cssnano');
var minifyHTML = require('gulp-htmlmin');
var sass = require('gulp-sass');
var gulpsync = require('gulp-sync')(gulp);
gulp.task('clean:css', function() {
return del([
'dist/css/**/*'
]);
});
gulp.task('clean:javascript', function() {
return del([
'dist/js/**/*'
]);
});
gulp.task('clean', ['clean:css', 'clean:javascript']);
gulp.task('app:javascript:prod', function () {
var b = browserify({
entries: 'src/index.js',
debug: false
});
return b.transform('babelify', {presets: ["es2015"]})
.transform('brfs')
.bundle()
.pipe(source('bundle.js'))
.pipe(buffer())
.pipe(sourcemaps.init({loadMaps: true}))
.pipe(uglify())
.on('error', gutil.log)
.pipe(sourcemaps.write('./'))
.pipe(gulp.dest('./dist/js/'))
.pipe(connect.reload());
});
gulp.task('app:javascript:dev', function () {
var b = browserify({
entries: 'src/index.js',
debug: true
});
return b.transform('babelify', {presets: ["es2015"]})
.transform('brfs')
.bundle()
.pipe(source('bundle.js'))
.pipe(buffer())
.pipe(sourcemaps.init({loadMaps: true}))
.on('error', gutil.log)
.pipe(sourcemaps.write('./'))
.pipe(gulp.dest('./dist/js/'))
.pipe(connect.reload());
});
gulp.task('javascript:dev', ['app:javascript:dev']);
gulp.task('javascript:prod', ['app:javascript:prod']);
var vendor_css = [
'node_modules/angular-material/angular-material.min.css',
'node_modules/angular-loading-bar/build/loading-bar.min.css',
'node_modules/mdi/css/materialdesignicons.min.css',
'node_modules/datatables.net-dt/css/jquery.dataTables.css',
'node_modules/angular-datatables/dist/css/angular-datatables.min.css'
];
gulp.task('vendor:css:prod', function() {
return gulp.src(vendor_css)
.pipe(minifyCSS())
.pipe(concat('vendor.css'))
.pipe(gulp.dest('dist/css'))
.pipe(connect.reload());
});
gulp.task('vendor:css:dev', function() {
return gulp.src(vendor_css)
.pipe(concat('vendor.css'))
.pipe(gulp.dest('dist/css'))
.pipe(connect.reload());
});
var app_sass = [
'src/**/*.scss',
];
gulp.task('app:sass:prod', function() {
return gulp.src(app_sass)
.pipe(sass().on('error', sass.logError))
.pipe(minifyCSS())
.pipe(concat('app.css'))
.pipe(gulp.dest('dist/css'))
.pipe(connect.reload());
});
gulp.task('app:sass:dev', function() {
return gulp.src(app_sass)
.pipe(sass().on('error', sass.logError))
.pipe(concat('app.css'))
.pipe(gulp.dest('dist/css'))
.pipe(connect.reload());
});
gulp.task('css:prod', ['vendor:css:prod', 'app:sass:prod']);
gulp.task('css:dev', ['vendor:css:dev', 'app:sass:dev']);
var assets_images = [
'src/assets/images/**/*',
];
var assets_media = [
'src/assets/media/*',
];
gulp.task('assets:images', function() {
return gulp.src(assets_images)
.pipe(gulp.dest('dist/images'))
.pipe(connect.reload());
});
gulp.task('assets:media', function() {
return gulp.src(assets_media)
.pipe(gulp.dest('dist/media'))
.pipe(connect.reload());
});
var assets_fonts = [
'node_modules/mdi/fonts/*'
];
gulp.task('assets:fonts', function() {
return gulp.src(assets_fonts)
.pipe(gulp.dest('dist/fonts'));
});
gulp.task('assets', ['assets:images', 'assets:media', 'assets:fonts']);
var app_html = [
'src/**/*.html'
];
gulp.task('app:html:prod', function() {
return gulp.src(app_html)
.pipe(minifyHTML({collapseWhitespace: true, removeComments: true}))
.pipe(templateCache({standalone: true}))
.pipe(gulp.dest('dist/js'))
.pipe(connect.reload());
});
gulp.task('app:html:dev', function() {
return gulp.src(app_html)
.pipe(templateCache({standalone: true}))
.pipe(gulp.dest('dist/js'))
.pipe(connect.reload());
});
var app_entry = [
'src/index.html'
];
gulp.task('app:entry:prod', function() {
return gulp.src(app_entry)
.pipe(minifyHTML({collapseWhitespace: true, removeComments: true}))
.pipe(gulp.dest('dist'))
.pipe(connect.reload());
});
gulp.task('app:entry:dev', function() {
return gulp.src(app_entry)
.pipe(gulp.dest('dist'))
.pipe(connect.reload());
});
gulp.task('build:prod', gulpsync.sync(['clean', 'javascript:prod', 'css:prod', 'app:html:prod', 'app:entry:prod', 'assets']));
gulp.task('build:dev', gulpsync.sync(['clean', 'javascript:dev', 'css:dev', 'app:html:dev', 'app:entry:dev', 'assets']));
gulp.task('build', ['build:prod']);
gulp.task('live_reload', function() {
connect.server({
livereload: true,
root: 'dist',
port: '8000'
});
});
gulp.task('watch', ['live_reload'], function() {
gulp.watch('src/**/*.js', ['app:javascript:dev']);
gulp.watch(vendor_css, ['vendor:css:dev']);
gulp.watch(app_sass, ['app:sass:dev']);
gulp.watch(assets_images, ['assets:images']);
gulp.watch(assets_media, ['assets:media']);
gulp.watch(assets_fonts, ['assets:fonts']);
gulp.watch(app_html, ['app:html:dev']);
gulp.watch(app_entry, ['app:entry:dev']);
});
gulp.task('serve', gulpsync.sync(['build:dev', 'watch']));