-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathgulpfile.babel.js
128 lines (109 loc) · 3.29 KB
/
gulpfile.babel.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
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
'use strict';
// This gulpfile makes use of new JavaScript features.
// Babel handles this without us having to do anything. It just works.
// You can read more about the new JavaScript features here:
// https://babeljs.io/docs/learn-es2015/
import gulp from 'gulp';
import gulpLoadPlugins from 'gulp-load-plugins';
import webpack from 'webpack';
import del from 'del';
import pkg from './package.json';
import webpackConfig from "./webpack.config.js";
var $ = gulpLoadPlugins();
var libFolder = 'lib';
var sources = './src/**/*.js';
gulp.task('default', ['build', 'build-web']);
// Build for node
gulp.task('build', pkg.library['bundle-node'] ? ['webpack:build-node'] : ['build-babel']);
// Build for node + watch
gulp.task('build-dev', ['webpack:build-node-dev'], () => {
gulp.watch([sources], ['webpack:build-node-dev'])
});
// Build for web
gulp.task('build-web', ['webpack:build-web']);
gulp.task('build-test', ['webpack:build-test']);
// Build for web + watch
gulp.task('build-web-dev', ['webpack:build-web-dev'], () => {
gulp.watch([sources], ['webpack:build-web-dev'])
});
// Run Babel only
gulp.task('build-babel', ['clean', 'lint'], () =>
gulp.src([sources])
.pipe($.babel())
// Output files
.pipe(gulp.dest(libFolder))
);
// Lint javascript
gulp.task('lint', () =>
gulp.src(sources)
.pipe($.eslint())
.pipe($.eslint.format())
.pipe($.eslint.failOnError())
);
// Clean folder
gulp.task('clean', () =>
del([`${libFolder}/**/*`])
);
// Webpack helper
gulp.task('webpack:build-web', done => {
var env = {'BUILD_ENV':'PROD', 'TARGET_ENV': 'WEB'};
var taskName = 'webpack:build-web';
// run webpack
webpack(webpackConfig(env), onBuild(done, taskName));
});
// Webpack helper
gulp.task('webpack:build-test', done => {
var env = {'BUILD_ENV':'PROD', 'TARGET_ENV': 'TEST'};
var taskName = 'webpack:build-test';
// run webpack
webpack(webpackConfig(env), onBuild(done, taskName));
});
// Webpack watch helper
// create a single instance of the compiler to allow caching
var webDevCompiler = null;
gulp.task('webpack:build-web-dev', done => {
var env = {'BUILD_ENV':'DEV', 'TARGET_ENV': 'WEB'};
var taskName = 'webpack:build-web-dev';
// build dev compiler
if(!webDevCompiler){
webDevCompiler = webpack(webpackConfig(env));
}
// run webpack
webDevCompiler.run(onBuild(done, taskName));
});
// Webpack helper
gulp.task('webpack:build-node', done => {
var env = {'BUILD_ENV':'PROD', 'TARGET_ENV': 'NODE'};
var taskName = 'webpack:build-node';
// run webpack
webpack(webpackConfig(env), onBuild(done, taskName));
});
// Webpack watch helper
// create a single instance of the compiler to allow caching
var nodeDevCompiler = null;
gulp.task('webpack:build-node-dev', done => {
var env = {'BUILD_ENV':'DEV', 'TARGET_ENV': 'NODE'};
var taskName = 'webpack:build-node-dev';
// build dev compiler
if(!nodeDevCompiler){
nodeDevCompiler = webpack(webpackConfig(env));
}
// run webpack
nodeDevCompiler.run(onBuild(done, taskName));
});
function onBuild(done, taskName){
return (err, stats) => {
if(err)
throw new gutil.PluginError(taskName, err);
$.util.log(`${taskName}`, stats.toString({colors: true}));
done && done();
}
}
// Sets environment variable
function setEnv(buildEnv){
$.env({
vars: {
BUILD_ENV: buildEnv
}
});
}