blob: 024f5ce7638ba45e7b073e24b728eb4d644a925b [file] [log] [blame]
Matteo Scandolofb46ae62017-08-08 09:10:50 -07001
2/*
3 * Copyright 2017-present Open Networking Foundation
4
5 * Licensed under the Apache License, Version 2.0 (the "License");
6 * you may not use this file except in compliance with the License.
7 * You may obtain a copy of the License at
8
9 * http://www.apache.org/licenses/LICENSE-2.0
10
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
16 */
17
18
Matteo Scandolod819c922016-12-02 14:06:14 -080019const gulp = require('gulp');
20const gutil = require('gulp-util');
21
22const webpack = require('webpack');
23const webpackConf = require('../conf/webpack.conf');
24const webpackDistConf = require('../conf/webpack-dist.conf');
25const gulpConf = require('../conf/gulp.conf');
26const browsersync = require('browser-sync');
27
28gulp.task('webpack:dev', done => {
29 webpackWrapper(false, webpackConf, done);
30});
31
32gulp.task('webpack:watch', done => {
33 webpackWrapper(true, webpackConf, done);
34});
35
36gulp.task('webpack:dist', done => {
37 process.env.NODE_ENV = 'production';
38 webpackWrapper(false, webpackDistConf, done);
39});
40
Matteo Scandolo4e870232017-01-30 13:43:05 -080041gulp.task('webpack:dist:watch', done => {
42 process.env.NODE_ENV = 'production';
43 webpackWrapper(true, webpackDistConf, done);
44});
45
Matteo Scandolod819c922016-12-02 14:06:14 -080046function webpackWrapper(watch, conf, done) {
47 const webpackBundler = webpack(conf);
48
49 const webpackChangeHandler = (err, stats) => {
50 if (err) {
51 gulpConf.errorHandler('Webpack')(err);
52 }
53 gutil.log(stats.toString({
54 colors: true,
55 chunks: false,
56 hash: false,
57 version: false
58 }));
59 if (done) {
60 done();
61 done = null;
62 } else {
63 browsersync.reload();
64 }
65 };
66
67 if (watch) {
68 webpackBundler.watch(200, webpackChangeHandler);
69 } else {
70 webpackBundler.run(webpackChangeHandler);
71 }
72}