-
Notifications
You must be signed in to change notification settings - Fork 1
/
gulpfile.babel.js
91 lines (84 loc) · 2.43 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
import fs from 'fs';
import del from 'del';
import gulp from 'gulp';
import gIf from 'gulp-if';
import watch from 'gulp-watch';
import sequence from 'gulp-sequence';
import plumber from 'gulp-plumber';
import gutil from 'gulp-util';
import packageJSON from './package.json';
import ncu from 'npm-check-updates';
// rollup
import rollup from 'gulp-better-rollup';
import sourcemaps from 'gulp-sourcemaps';
import resolve from 'rollup-plugin-node-resolve';
import babel from 'rollup-plugin-babel';
import commonjs from 'rollup-plugin-commonjs';
import uglify from 'rollup-plugin-uglify';
// Configurations.
const sourceDirectory = packageJSON.directories.src;
const destinationDirectory = packageJSON.directories.compiled;
const glob = `${sourceDirectory}/**/*.js`;
// sequence for outdated packages, cleans the distribution directory,
// watches for file changes and compiles the scripts.
gulp.task('default', (callback) => {
sequence('outdated', 'clean', 'compile', 'watch', callback);
});
// check on outdated npm packages
gulp.task('outdated', (callback) => {
ncu.run({
packageFile: './package.json',
silent: true,
jsonUpgraded: true,
}).then((upgraded) => {
if (upgraded.length) {
gutil.log('Hold On. Dependencies need update', upgraded);
}
callback();
});
});
// Cleans the dist directory.
gulp.task('clean', (callback) => {
del([destinationDirectory]).then(() => callback() );
});
// Compiles, minifies scripts and generates sourcemaps.
gulp.task('compile', (callback) => {
gulp.src(`${sourceDirectory}/index.js`)
.pipe(sourcemaps.init())
.pipe(
rollup({
plugins: [
resolve({
jsnext: true,
main: true,
}),
commonjs({
include: 'node_modules/**',
}),
babel({
babelrc: false,
exclude: 'node_modules/**',
presets: [
['es2015', {"modules": false}]
],
plugins: ['external-helpers', 'transform-object-assign'],
}),
uglify({
output: {
beautify: true,
},
mangle: true,
})
]
}, {
dest: `${destinationDirectory}/engage.js`,
moduleName: 'engage',
format: 'iife',
}))
.pipe(sourcemaps.write(''))
.pipe(gulp.dest(destinationDirectory));
});
// Watches for changes.
gulp.task('watch', () => {
watch(glob, () => { gulp.start('compile'); });
});