-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathgulpfile.js
93 lines (73 loc) · 2.21 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
const gulp = require('gulp');
const webpack = require('webpack');
const WebpackDevServer = require('webpack-dev-server');
const ip = require('ip');
const portfinder = require('portfinder');
const gutil = require('gulp-util');
const del = require('del');
function runServerOnPort(config, port) {
const localServer = `http://${ip.address()}:${port}`;
config.entry.unshift(
`webpack-dev-server/client?${localServer}`,
'webpack/hot/dev-server'
);
config.output.publicPath = localServer + '/';
const server = new WebpackDevServer(webpack(config), {
hot: true,
contentBase: 'src',
stats: {
colors: true,
chunkModules: false,
chunks: false,
hash: false,
version: false
}
});
server.listen(port, (err) => {
if (err) { throw new gutil.PluginError('webpack', err); }
gutil.log('Listening', gutil.colors.magenta(localServer));
});
}
function runServer(config) {
portfinder.basePort = 9000;
portfinder.getPort((err, port) => {
if (err) { throw new gutil.PluginError('webpack', err); }
runServerOnPort(config, port);
});
}
function webpackTask(cb, opts) {
const config = require('./webpack.config.js')(opts);
if (opts.watch) {
return runServer(config);
}
webpack(config, (err) => {
if (err) { throw new gutil.PluginError('webpack', err); }
cb();
});
}
gulp.task('clean', cb => del.sync(['dist'], cb));
gulp.task('static', () => {
return gulp.src([
'src/*/*.css',
'src/*.html'
], {
dot: true
}).pipe(gulp.dest('dist'));
});
gulp.task('assets', () => {
return gulp.src([
'src/assets/**/*'
], {
dot: true
}).pipe(gulp.dest('dist/assets'));
});
gulp.task('libs', () => {
gulp.src('node_modules/three/build/three.min.js')
.pipe(gulp.dest('dist/libs'));
gulp.src('src/libs/*')
.pipe(gulp.dest('dist/libs'));
});
gulp.task('webpack:prod', cb => webpackTask(cb, {prod: true}));
gulp.task('build', ['clean', 'libs', 'static', 'assets', 'webpack:prod']);
gulp.task('watch', cb => webpackTask(cb, {watch: true}));
gulp.task('default', ['build', 'watch']);