-
Notifications
You must be signed in to change notification settings - Fork 10
/
gulpfile.js
109 lines (103 loc) · 3.17 KB
/
gulpfile.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
var gulp = require('gulp');
var webpack = require('webpack');
var webpackConfig = require('./webpack.config');
var browserSync = require('browser-sync-webpack-plugin');
var ts_project = require('gulp-typescript').createProject('./src/server/tsconfig.json');
var spawn = require('child_process').spawn;
var server_proc;
gulp.task('compile-node', function(){
return gulp.src('./src/server/**/*.ts')
.pipe(ts_project()).js
.pipe(gulp.dest('dist/server/'));
});
gulp.task('start-server', ['compile-node'], function(){
if (server_proc) {
server_proc.kill();
server_proc = undefined;
}
server_proc = spawn('node', ['--inspect=5858', 'dist/server/app.js'], {
cwd: __dirname,
stdio: [0, 1, 2, 'ipc']
});
});
gulp.task('webpack', function(done) {
var config = webpackConfig;
process.env.BUILD_MODE = 'production';
config.plugins.push(
new webpack.optimize.UglifyJsPlugin({
compress: {
warnings: false,
screw_ie8: true,
conditionals: true,
unused: true,
comparisons: true,
sequences: true,
dead_code: true,
evaluate: true,
if_return: true,
join_vars: true,
},
output: {
comments: false
}
})
);
return webpack(config, function(err, stats){
if (err) {
console.error(err);
}
if (stats.hasErrors()) {
if (stats.compilation.errors) {
stats.compilation.errors.forEach(function(e){console.error(e,'\n');});
} else {
console.log(stats);
}
}
console.log(stats.toString());
return done(err);
});
});
gulp.task('webpack-watch', function() {
var config = webpackConfig;
process.env.BUILD_MODE = 'development';
config.watch = true;
config.cache = true;
config.bail = false;
config.devtool = 'source-map';
config.stats = 'errors-only';
config.module.rules.push(
{
enforce: 'pre',
test: /\.ts$/,
use: 'source-map-loader'
}
);
config.plugins.push(
new browserSync({
host: 'localhost',
port: 3001,
proxy: 'localhost:3000',
ws: true,
open: !(process.env.DOCKER_MODE)
})
);
webpack(config, function(err, stats) {
if (err) {
console.error(err);
}
if (stats.hasErrors()) {
if (stats.compilation.errors) {
stats.compilation.errors.forEach(function(e){console.error(e,'\n');});
} else {
console.log(stats);
}
}
console.log(stats.toString());
});
});
gulp.task('watch', ['start-server', 'webpack-watch'], function(){
console.log('watching for changes...');
gulp.watch(['src/server/**/*.ts'], ['start-server']);
});
// Default Task
gulp.task('default', ['compile-node', 'webpack']);