diff --git a/gulp/build.js b/gulp/build.js index 11919d7f..5aca8094 100644 --- a/gulp/build.js +++ b/gulp/build.js @@ -29,24 +29,24 @@ var gulp = require('gulp'), replace = require('gulp-replace'), argv = require('yargs').argv; -gulp.task('clean', async function (cb) { +gulp.task('default', ['clean'], function () { + gulp.start('fonts', 'styles'); +}); + +gulp.task('clean', function (cb) { del(['.tmp', 'lemur/static/dist'], cb); }); -gulp.task('default', gulp.series('clean', function () { - gulp.start('fonts', 'styles'); -})); - -gulp.task('test', gulp.series(function (done) { +gulp.task('test', function (done) { new karma.Server({ configFile: __dirname + '/karma.conf.js', singleRun: true }, function() { done(); }).start(); -})); +}); -gulp.task('dev:fonts', async function () { +gulp.task('dev:fonts', function () { var fileList = [ 'bower_components/bootstrap/dist/fonts/*', 'bower_components/fontawesome/fonts/*' @@ -56,7 +56,7 @@ gulp.task('dev:fonts', async function () { .pipe(gulp.dest('.tmp/fonts')); }); -gulp.task('dev:styles', async function () { +gulp.task('dev:styles', function () { var baseContent = '@import "bower_components/bootstrap/less/bootstrap.less";@import "bower_components/bootswatch/$theme$/variables.less";@import "bower_components/bootswatch/$theme$/bootswatch.less";@import "bower_components/bootstrap/less/utilities.less";'; var isBootswatchFile = function (file) { @@ -74,6 +74,7 @@ gulp.task('dev:styles', async function () { var fileList = [ 'bower_components/bootswatch/sandstone/bootswatch.less', 'bower_components/fontawesome/css/font-awesome.css', + 'bower_components/angular-spinkit/src/angular-spinkit.css', 'bower_components/angular-chart.js/dist/angular-chart.css', 'bower_components/angular-loading-bar/src/loading-bar.css', 'bower_components/angular-ui-switch/angular-ui-switch.css', @@ -99,7 +100,7 @@ gulp.task('dev:styles', async function () { // http://stackoverflow.com/questions/21719833/gulp-how-to-add-src-files-in-the-middle-of-a-pipe // https://github.com/gulpjs/gulp/blob/master/docs/recipes/using-multiple-sources-in-one-task.md - return merge(stream, gulp.src(['.tmp/styles/font-awesome.css', '.tmp/styles/lemur.css'], { allowEmpty: true })) + return merge(stream, gulp.src(['.tmp/styles/font-awesome.css', '.tmp/styles/lemur.css'])) .pipe(concat('style-' + themeName + '.css')); }))) .pipe(plumber()) @@ -128,14 +129,14 @@ function string_src(filename, string) { return src; } -gulp.task('dev:scripts', async function () { +gulp.task('dev:scripts', function () { return gulp.src(['lemur/static/app/angular/**/*.js']) .pipe(jshint()) .pipe(jshint.reporter('jshint-stylish')) .pipe(size()); }); -gulp.task('build:extras', async function () { +gulp.task('build:extras', function () { return gulp.src(['lemur/static/app/*.*', '!lemur/static/app/*.html']) .pipe(gulp.dest('lemur/static/dist')); }); @@ -161,7 +162,7 @@ function injectHtml(isDev) { })) .pipe( gulpif(!isDev, - inject(gulp.src('lemur/static/dist/ngviews/ngviews.min.js', { allowEmpty: true }), { + inject(gulp.src('lemur/static/dist/ngviews/ngviews.min.js'), { starttag: '', addRootSlash: false }) @@ -169,11 +170,15 @@ function injectHtml(isDev) { ).pipe(gulp.dest('.tmp/')); } -gulp.task('dev:inject', gulp.series(gulp.parallel('dev:styles', 'dev:scripts'), function () { +gulp.task('dev:inject', ['dev:styles', 'dev:scripts'], function () { return injectHtml(true); -})); +}); -gulp.task('build:ngviews', async function () { +gulp.task('build:inject', ['dev:styles', 'dev:scripts', 'build:ngviews'], function () { + return injectHtml(false); +}); + +gulp.task('build:ngviews', function () { return gulp.src(['lemur/static/app/angular/**/*.html']) .pipe(minifyHtml({ empty: true, @@ -184,11 +189,7 @@ gulp.task('build:ngviews', async function () { .pipe(size()); }); -gulp.task('build:inject', gulp.series(gulp.parallel('dev:styles', 'dev:scripts', 'build:ngviews'), function () { - return injectHtml(false); -})); - -gulp.task('build:html', gulp.series(gulp.parallel('dev:styles', 'dev:scripts', 'build:ngviews', 'build:inject'), function () { +gulp.task('build:html', ['dev:styles', 'dev:scripts', 'build:ngviews', 'build:inject'], function () { var jsFilter = filter(['**/*.js'], {'restore': true}); var cssFilter = filter(['**/*.css'], {'restore': true}); @@ -202,14 +203,14 @@ gulp.task('build:html', gulp.series(gulp.parallel('dev:styles', 'dev:scripts', ' .pipe(useref()) .pipe(gulp.dest('lemur/static/dist')) .pipe(size()); -})); +}); -gulp.task('build:fonts', gulp.series('dev:fonts', function () { +gulp.task('build:fonts', ['dev:fonts'], function () { return gulp.src('.tmp/fonts/**/*') .pipe(gulp.dest('lemur/static/dist/fonts')); -})); +}); -gulp.task('build:images', async function () { +gulp.task('build:images', function () { return gulp.src('lemur/static/app/images/**/*') .pipe(cache(imagemin({ optimizationLevel: 3, @@ -220,8 +221,8 @@ gulp.task('build:images', async function () { .pipe(size()); }); -gulp.task('package:strip', async function () { - return gulp.src('lemur/static/dist/scripts/main*') +gulp.task('package:strip', function () { + return gulp.src(['lemur/static/dist/scripts/main*']) .pipe(replace('http:\/\/localhost:3000', '')) .pipe(replace('http:\/\/localhost:8000', '')) .pipe(useref()) @@ -229,22 +230,7 @@ gulp.task('package:strip', async function () { .pipe(size()); }); -gulp.task('addUrlContextPath:revision', async function(){ - return gulp.src(['lemur/static/dist/**/*.css','lemur/static/dist/**/*.js']) - .pipe(rev()) - .pipe(gulp.dest('lemur/static/dist')) - .pipe(rev.manifest()) - .pipe(gulp.dest('lemur/static/dist')) -}); - -gulp.task('addUrlContextPath:revreplace', gulp.series('addUrlContextPath:revision', function(){ - // var manifest = gulp.src("lemur/static/dist/rev-manifest.json"); - // var urlContextPathExists = argv.urlContextPath ? true : false; - return gulp.src( "lemur/static/dist/index.html") - .pipe(gulp.dest('lemur/static/dist')); -})); - -gulp.task('addUrlContextPath', gulp.series('addUrlContextPath:revreplace', async function(){ +gulp.task('addUrlContextPath',['addUrlContextPath:revreplace'], function(){ var urlContextPathExists = argv.urlContextPath ? true : false; ['lemur/static/dist/scripts/main*.js', 'lemur/static/dist/angular/**/*.html'] @@ -256,8 +242,23 @@ gulp.task('addUrlContextPath', gulp.series('addUrlContextPath:revreplace', async return file.base; })) }) -})); +}); + +gulp.task('addUrlContextPath:revision', function(){ + return gulp.src(['lemur/static/dist/**/*.css','lemur/static/dist/**/*.js']) + .pipe(rev()) + .pipe(gulp.dest('lemur/static/dist')) + .pipe(rev.manifest()) + .pipe(gulp.dest('lemur/static/dist')) +}) + +gulp.task('addUrlContextPath:revreplace', ['addUrlContextPath:revision'], function(){ + var manifest = gulp.src("lemur/static/dist/rev-manifest.json"); + var urlContextPathExists = argv.urlContextPath ? true : false; + return gulp.src( "lemur/static/dist/index.html") + .pipe(gulp.dest('lemur/static/dist')); +}) -gulp.task('build', gulp.series(gulp.parallel('build:ngviews', 'build:inject', 'build:images', 'build:fonts', 'build:html', 'build:extras'))); -gulp.task('package', gulp.series(gulp.parallel('addUrlContextPath', 'package:strip'))); +gulp.task('build', ['build:ngviews', 'build:inject', 'build:images', 'build:fonts', 'build:html', 'build:extras']); +gulp.task('package', ['addUrlContextPath', 'package:strip']); diff --git a/gulp/server.js b/gulp/server.js index 804ca115..6c61273e 100644 --- a/gulp/server.js +++ b/gulp/server.js @@ -38,16 +38,7 @@ function browserSyncInit(baseDir, files, browser) { } -gulp.task('watch', gulp.series(['dev:styles', 'dev:scripts', 'dev:inject', 'dev:fonts'], function (done) { - gulp.watch('app/styles/**/*.less', gulp.parallel('dev:styles')); - gulp.watch('app/styles/**/*.css', gulp.parallel('dev:styles')); - gulp.watch('app/**/*.js', gulp.parallel('dev:scripts')); - gulp.watch('app/images/**/*', gulp.parallel('build:images')); - gulp.watch('bower.json', gulp.parallel('dev:inject')); - done(); -})); - -gulp.task('serve', gulp.series('watch', function () { +gulp.task('serve', ['watch'], function () { browserSyncInit([ '.tmp', 'lemur/static/app' @@ -60,9 +51,9 @@ gulp.task('serve', gulp.series('watch', function () { 'lemur/static/app/angular/**/*', 'lemur/static/app/index.html' ]); -})); +}); -gulp.task('serve:dist', gulp.series('build', function () { +gulp.task('serve:dist', ['build'], function () { browserSyncInit('lemur/static/dist'); -})); +}); diff --git a/gulp/watch.js b/gulp/watch.js new file mode 100644 index 00000000..460a935b --- /dev/null +++ b/gulp/watch.js @@ -0,0 +1,12 @@ +'use strict'; + +var gulp = require('gulp'); + + +gulp.task('watch', ['dev:styles', 'dev:scripts', 'dev:inject', 'dev:fonts'] ,function () { + gulp.watch('app/styles/**/*.less', ['dev:styles']); + gulp.watch('app/styles/**/*.css', ['dev:styles']); + gulp.watch('app/**/*.js', ['dev:scripts']); + gulp.watch('app/images/**/*', ['build:images']); + gulp.watch('bower.json', ['dev:inject']); +}); diff --git a/package.json b/package.json index f2d87ab7..828f8899 100644 --- a/package.json +++ b/package.json @@ -58,7 +58,7 @@ "test": "gulp test" }, "devDependencies": { - "gulp": "^4.0.2", + "gulp": "^3.9.1", "jshint": "^2.11.0", "karma-chrome-launcher": "^2.0.0" }