|
1 | 1 | 'use strict';
|
2 |
| - |
3 | 2 | let gulp = require('gulp');
|
4 |
| -let watch = require('gulp-watch'); |
5 |
| -let util = require('gulp-util'); |
6 |
| -let webpack = require('webpack'); |
7 |
| -let nodemon = require('gulp-nodemon'); |
8 | 3 | let runSequence = require('run-sequence');
|
9 |
| -let del = require('del'); |
10 |
| -let miniLr = require('mini-lr'); |
11 |
| - |
12 |
| -let webPackConfig = require('./webpack.config'); |
13 |
| - |
14 |
| -let sourceFolder = 'client'; |
15 | 4 |
|
16 |
| -let source = [ |
17 |
| - 'client/**/*.{html,css}', '!**/app/**', |
18 |
| - 'node_modules/todomvc-common/base.css' |
19 |
| -]; |
20 |
| -let destinationFolder = 'build'; |
21 |
| -let liveReload = miniLr(); |
22 |
| - |
23 |
| -function notifyChanged(files) { |
24 |
| - liveReload.changed({ |
25 |
| - body: { |
26 |
| - files: files |
27 |
| - } |
28 |
| - }); |
29 |
| -} |
30 |
| - |
31 |
| -gulp.task('server-start', function () { |
32 |
| - return nodemon({ |
33 |
| - script: 'server/index.js', |
34 |
| - watch: ['server'], |
35 |
| - ignore: ['node_modules/**'], |
36 |
| - ext: 'js html', |
37 |
| - env: { |
38 |
| - 'NODE_ENV': 'development' |
39 |
| - } |
40 |
| - }); |
41 |
| -}); |
42 |
| - |
43 |
| -gulp.task('livereload', function() { |
44 |
| - liveReload.listen(35729); |
45 |
| -}); |
46 |
| - |
47 |
| -gulp.task('client-copy', function() { |
48 |
| - let clientWatch = watch(source, {verbose: true}); |
49 |
| - clientWatch.on('change', function(fileName) { |
50 |
| - notifyChanged([fileName]); |
51 |
| - }); |
52 |
| - |
53 |
| - gulp.src(source, {}) |
54 |
| - .pipe(clientWatch) |
55 |
| - .pipe(gulp.dest(destinationFolder)); |
56 |
| -}); |
| 5 | +let clientCopyTask = require('./tasks/client_copy'); |
| 6 | +let clientBuildTask = require('./tasks/client_build'); |
| 7 | +let liveReloadTask = require('./tasks/livereload'); |
| 8 | +let serverStartTask = require('./tasks/server_start'); |
| 9 | +let serverCopyTask = require('./tasks/server_copy'); |
| 10 | +let generalCopyTask = require('./tasks/general_copy'); |
| 11 | +let cleanTask = require('./tasks/clean'); |
57 | 12 |
|
58 |
| -gulp.task('client-build', function(callback) { |
59 |
| - let webpackBuild = webpack(webPackConfig); |
60 |
| - let firstRun = true; |
| 13 | +gulp.task('server-start', serverStartTask()); |
| 14 | +gulp.task('server-copy-dist', serverCopyTask()); |
61 | 15 |
|
62 |
| - webpackBuild.watch({ aggregateTimeout: 100 }, function(err, stats) { |
63 |
| - if(err) { |
64 |
| - throw new util.PluginError("webpack:error", err); |
65 |
| - } |
| 16 | +gulp.task('general-copy-dist', generalCopyTask()); |
66 | 17 |
|
67 |
| - let statistics = stats.toJson({ |
68 |
| - children: false, |
69 |
| - source: false, |
70 |
| - modules: false, |
71 |
| - chunkModules: false |
72 |
| - }); |
| 18 | +gulp.task('livereload', liveReloadTask()); |
73 | 19 |
|
74 |
| - let elapsedTime = Math.round(statistics.time / 10) / 100; |
| 20 | +gulp.task('client-copy', clientCopyTask(false, liveReloadTask.notifyChanged)); |
| 21 | +gulp.task('client-copy-dist', clientCopyTask(true)); |
| 22 | +gulp.task('client-build', clientBuildTask(false, liveReloadTask.notifyChanged)); |
| 23 | +gulp.task('client-build-dist', clientBuildTask(true)); |
75 | 24 |
|
76 |
| - if (firstRun) { |
77 |
| - callback(); |
78 |
| - firstRun = false; |
79 |
| - } |
80 |
| - else { |
81 |
| - util.log(`webpack:build ${elapsedTime} s`); |
| 25 | +gulp.task('clean', cleanTask()); |
82 | 26 |
|
83 |
| - notifyChanged( |
84 |
| - statistics.assets.map((file) => file.name) |
85 |
| - ); |
86 |
| - } |
87 |
| - }); |
88 |
| -}); |
89 |
| - |
90 |
| -gulp.task('clean', function() { |
91 |
| - return del([destinationFolder]); |
92 |
| -}); |
93 |
| - |
94 |
| -gulp.task('start', function(callback) { |
| 27 | +gulp.task('serve', function(callback) { |
95 | 28 | runSequence(
|
96 | 29 | 'clean',
|
97 | 30 | ['client-build', 'client-copy', 'livereload'],
|
98 | 31 | 'server-start',
|
99 | 32 | callback
|
100 | 33 | )
|
101 | 34 | });
|
| 35 | + |
| 36 | +gulp.task('dist', function(callback) { |
| 37 | + runSequence( |
| 38 | + 'clean', |
| 39 | + ['client-build-dist', 'client-copy-dist', 'server-copy-dist', 'general-copy-dist'], |
| 40 | + callback |
| 41 | + ) |
| 42 | +}); |
0 commit comments