From 93e9b1a29493a2453598326fb38782a0266478f4 Mon Sep 17 00:00:00 2001 From: Enrico Fasoli Date: Sun, 15 Nov 2015 21:34:41 +0100 Subject: [PATCH] improved build system --- gulpfile.js | 58 +++++++++++++++++++++++++++++++++------------------- package.json | 1 + 2 files changed, 38 insertions(+), 21 deletions(-) diff --git a/gulpfile.js b/gulpfile.js index 219f508..0bcbdee 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -7,6 +7,7 @@ var uglify = require('gulp-uglify') var clean = require('gulp-clean') var exorcist = require('exorcist') var connect = require('gulp-connect') +var watchify = require('watchify') var config = { files: { @@ -27,35 +28,50 @@ gulp.task('css',function(){ }) gulp.task('html',function(){ - gulp.src(config.files.html) + return gulp.src(config.files.html) .pipe(gulp.dest(config.dest)) .pipe(connect.reload()) }) gulp.task('js',function(){ - browserify(config.files.mainJs, { debug: true }) - .transform('babelify', { - global: true, - presets: [ 'es2015', 'react' ], - ignore: /buffer|EventEmitter/ - }) - .transform('eslintify') - .transform({ global: true },'uglifyify') - .bundle() - .pipe(exorcist(__dirname+'/webapp/dist/app.js.map')) - .on('error', console.error.bind(console)) - .pipe(source('app.js')) // do this or browserify won't work - .pipe(buffer()) // do this or uglify won't work - //.pipe(uglify()) - .pipe(gulp.dest(config.dest)) - .pipe(connect.reload()) + return applyBrowserify(getBrowserify()) }) +gulp.task('js-watch',function(){ + var b = watchify(getBrowserify()) + b.on('update', function(){ + applyBrowserify(b) + }) + return b +}) +function getBrowserify(){ + return browserify(config.files.mainJs, { + cache: {}, + packageCache: {}, + fullPaths: true, + debug: true }) + .transform('babelify', { + global: true, + presets: [ 'es2015', 'react' ], + ignore: /buffer|EventEmitter/ + }) + .transform('eslintify') + .transform({ global: true },'uglifyify') +} + +function applyBrowserify(b){ + return b.bundle() + .pipe(exorcist(__dirname+'/webapp/dist/app.js.map')) + .on('error', console.error.bind(console)) + .pipe(source('app.js')) + .pipe(buffer()) + .pipe(gulp.dest(config.dest)) + .pipe(connect.reload()) +} gulp.task('clean',function(){ - gulp.src(config.dest, { read: false }) - .pipe(clean()) + return gulp.src(config.dest, { read: false }).pipe(clean()) }) gulp.task('server',function(){ @@ -67,8 +83,8 @@ gulp.task('server',function(){ }) gulp.task('watch',function(){ - gulp.watch(config.files.js,['js']) - gulp.watch(config.files.jsLibs,['js']) + var jsfiles = config.files.jsLibs.concat(config.files.mainJs) + gulp.watch(jsfiles,['js-watch']) gulp.watch(config.files.html,['html']) gulp.watch(config.files.css,['css']) }) diff --git a/package.json b/package.json index 0aae48c..8320e6d 100644 --- a/package.json +++ b/package.json @@ -43,6 +43,7 @@ "uglifyify": "^3.0.1", "vinyl-buffer": "^1.0.0", "vinyl-source-stream": "^1.1.0", + "watchify": "^3.6.0", "wolfy87-eventemitter": "^4.3.0" } }