Improved watch script

This commit is contained in:
jos 2016-10-14 09:54:37 +02:00
parent ceea59b30d
commit a607d2c2f4
2 changed files with 33 additions and 8 deletions

View File

@ -4,6 +4,17 @@ var gutil = require('gulp-util')
var shell = require('gulp-shell') var shell = require('gulp-shell')
var mkdirp = require('mkdirp') var mkdirp = require('mkdirp')
var webpack = require('webpack') var webpack = require('webpack')
var browserSync = require('browser-sync').create()
var WATCH = 'watch'
var WATCHING = process.argv[2] === WATCH
if (WATCHING) {
gutil.log('Watching src/*.')
gutil.log('The bundle ./dist/jsoneditor.js will be updated automatically ')
gutil.log('on changes in the source code this bundle will not be minified.')
gutil.log('Also, ./dist/minimalist code is not updated on changes.')
}
var NAME = 'jsoneditor' var NAME = 'jsoneditor'
var NAME_MINIMALIST = 'jsoneditor-minimalist' var NAME_MINIMALIST = 'jsoneditor-minimalist'
@ -35,6 +46,10 @@ var loaders = [
] ]
// create a single instance of the compiler to allow caching // create a single instance of the compiler to allow caching
var plugins = [bannerPlugin]
if (!WATCHING) {
plugins.push(new webpack.optimize.UglifyJsPlugin())
}
var compiler = webpack({ var compiler = webpack({
entry: ENTRY, entry: ENTRY,
devtool: 'source-map', devtool: 'source-map',
@ -46,10 +61,7 @@ var compiler = webpack({
path: DIST, path: DIST,
filename: NAME + '.js' filename: NAME + '.js'
}, },
plugins: [ plugins: plugins,
bannerPlugin,
new webpack.optimize.UglifyJsPlugin() // TODO: don't minify when watching
],
module: { module: {
loaders: loaders loaders: loaders
}, },
@ -71,7 +83,7 @@ var compilerMinimalist = webpack({
bannerPlugin, bannerPlugin,
new webpack.NormalModuleReplacementPlugin(new RegExp('^brace$'), EMPTY), new webpack.NormalModuleReplacementPlugin(new RegExp('^brace$'), EMPTY),
new webpack.NormalModuleReplacementPlugin(new RegExp('^ajv'), EMPTY), new webpack.NormalModuleReplacementPlugin(new RegExp('^ajv'), EMPTY),
new webpack.optimize.UglifyJsPlugin() // TODO: don't minify when watching new webpack.optimize.UglifyJsPlugin()
], ],
module: { module: {
loaders: loaders loaders: loaders
@ -131,13 +143,25 @@ gulp.task('zip', shell.task([
'zip ' + pkg + ' ' + 'README.md LICENSE HISTORY.md index.html src dist docs examples -r ' 'zip ' + pkg + ' ' + 'README.md LICENSE HISTORY.md index.html src dist docs examples -r '
])) ]))
// execute all tasks and reload the browser afterwards
gulp.task('bundle-and-reload', ['bundle'], function (done) {
browserSync.reload();
done();
});
// The watch task (to automatically rebuild when the source code changes) // The watch task (to automatically rebuild when the source code changes)
// Does only generate jsoneditor.js and jsoneditor.css, and copy the image // Does only generate jsoneditor.js and jsoneditor.css, and copy the image
// Does NOT minify the code and does NOT generate the minimalist version // Does NOT minify the code and does NOT generate the minimalist version
gulp.task('watch', ['bundle'], function () { gulp.task(WATCH, ['bundle'], function() {
// TODO: don't minify when in watch mode browserSync.init({
open: 'local',
server: '.',
startPath: '/src/develop.html',
minify: false
})
gulp.watch(['src/**/*'], ['bundle']) gulp.watch('src/**/*', ['bundle-and-reload'])
}) })
// The default task (called when you run `gulp`) // The default task (called when you run `gulp`)

View File

@ -35,6 +35,7 @@
"babel-loader": "6.2.5", "babel-loader": "6.2.5",
"babel-preset-stage-2": "6.16.0", "babel-preset-stage-2": "6.16.0",
"babel-preset-stage-3": "6.16.0", "babel-preset-stage-3": "6.16.0",
"browser-sync": "2.17.3",
"css-loader": "0.25.0", "css-loader": "0.25.0",
"gulp": "3.9.1", "gulp": "3.9.1",
"gulp-shell": "0.5.2", "gulp-shell": "0.5.2",