-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathgulpfile.babel.js
117 lines (104 loc) · 2.45 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
/**
* Clay Reimann, 2015
* See LICENSE.txt for details
*/
'use strict';
import gulp from 'gulp';
import zip from 'gulp-zip';
import watch from 'gulp-watch';
import webpack from 'webpack-stream';
import del from 'del';
import sequence from 'run-sequence';
const VENDOR_ASSETS = [
'bower_components/bootstrap/dist/css/bootstrap.min.css',
'bower_components/jquery/dist/jquery.min.js',
'bower_components/bootstrap/dist/js/bootstrap.min.js'
]
const PLATFORMS = [
'chrome'
];
gulp.task('watch', function(done) {
watch(['platform/**', 'lib/**'], function() {
gulp.start('build');
});
});
gulp.task('build', PLATFORMS.map((p) => `build:${p}`));
PLATFORMS.forEach((platform) => {
gulp.task(`build:${platform}`, function(done) {
sequence(
`${platform}:clean`,
`${platform}:move-assets`,
`${platform}:move-vendor`,
`${platform}:compile`,
`${platform}:build-distributable`,
done);
});
});
////////////////////////////
// Build Chrome extension //
////////////////////////////
gulp.task('chrome:clean', function(done) {
del('build/chrome/**').then(() => {
done()
});
});
gulp.task('chrome:move-assets', function() {
return gulp.src([
'platform/chrome/manifest.json',
'platform/chrome/options/options.html',
'assets/**'
])
.pipe(gulp.dest('build/chrome'))
;
});
gulp.task('chrome:move-vendor', function() {
return gulp.src(VENDOR_ASSETS)
.pipe(gulp.dest('build/chrome/vendor'))
})
var WEBPACK_CONFIG = {
entry: {
chrome: './platform/chrome/chrome.js',
options: './platform/chrome/options/options.js'
},
output: {
filename: '[name].min.js'
},
resolve: {
extensions: ['', '.js']
},
externals: {
chrome: 'chrome'
},
module: {
loaders: [
{
test: /\.js$/,
exclude: /(node_modules|bower_components)/,
loader: 'babel',
query: {
presets: ['es2015']
}
}
]
},
plugins: [
// new webpack.webpack.optimize.UglifyJsPlugin()
],
devtool: 'source-map',
stats: {
colors: 'true'
}
};
gulp.task('chrome:compile', function(done) {
return gulp.src(['platform/chrome/chrome.js', 'platform/chrome/options/options.html'])
.pipe(webpack(WEBPACK_CONFIG))
.on('error', function(e) {done()})
.pipe(gulp.dest('build/chrome'))
;
});
gulp.task('chrome:build-distributable', function() {
return gulp.src('build/chrome/**')
.pipe(zip('chrome.zip'))
.pipe(gulp.dest('build'))
;
})