-
Notifications
You must be signed in to change notification settings - Fork 37
Expand file tree
/
Copy pathgulpfile.js
More file actions
124 lines (114 loc) · 4.22 KB
/
Copy pathgulpfile.js
File metadata and controls
124 lines (114 loc) · 4.22 KB
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
'use strict'
let gulp = require('gulp')
let KarmaServer = require('karma').Server
let mocha = require('gulp-mocha')
let path = require('path')
let fs = require('fs')
let browserify = require('browserify')
let babelify = require('babelify')
let envify = require('envify')
let uglifyify = require('uglifyify')
let glob = require('glob')
require('./config')
gulp.task('build-bundle', function () {
return new Promise(function (resolve, reject) {
browserify({debug: false})
// The babel polyfill is include once in the main bundle, and no where
// else. You must include the main bundle in any HTML that uses
// YoursBitcoin, since the pollyfill must be required exactly once. If
// you build things yourself with babel, you will need to be sure to
// include the polyfill exactly once yourself.
.add(require.resolve('babel-polyfill'))
.transform(envify)
.transform(babelify.configure({presets: ['es2015']}))
.add(require.resolve('./index.js'), {entry: true})
.bundle()
.on('error', reject)
.on('end', resolve)
.pipe(fs.createWriteStream(path.join(__dirname, 'build', process.env.YOURS_BITCOIN_JS_BUNDLE_FILE)))
})
})
gulp.task('build-worker', ['build-bundle'], function () {
return new Promise(function (resolve, reject) {
browserify({debug: false})
.transform(envify)
.transform(babelify.configure({ignore: /node_modules/, presets: ['es2015']}))
.require(require.resolve('./lib/worker-browser.js'), {entry: true})
.bundle()
.on('error', reject)
.on('end', resolve)
.pipe(fs.createWriteStream(path.join(__dirname, 'build', process.env.YOURS_BITCOIN_JS_WORKER_FILE)))
})
})
gulp.task('build-bundle-min', ['build-worker'], function () {
return new Promise(function (resolve, reject) {
browserify({debug: false})
.add(require.resolve('babel-polyfill'))
.transform(envify)
.transform(babelify.configure({ignore: /node_modules/, presets: ['es2015']}))
.transform(uglifyify)
.require(require.resolve('./index.js'), {entry: true})
.bundle()
.on('error', reject)
.on('end', resolve)
.pipe(fs.createWriteStream(path.join(__dirname, 'build', process.env.YOURS_BITCOIN_JS_BUNDLE_MIN_FILE)))
})
})
gulp.task('build-worker-min', ['build-bundle-min'], function () {
return new Promise(function (resolve, reject) {
browserify({debug: false})
.transform(envify)
.transform(babelify.configure({ignore: /node_modules/, presets: ['es2015']}))
.transform(uglifyify)
.require(require.resolve('./lib/worker-browser.js'), {entry: true})
.bundle()
.on('error', reject)
.on('end', resolve)
.pipe(fs.createWriteStream(path.join(__dirname, 'build', process.env.YOURS_BITCOIN_JS_WORKER_MIN_FILE)))
})
})
gulp.task('build-tests', ['build-worker'], function () {
return new Promise(function (resolve, reject) {
glob('./test/**/*.js', {}, function (err, files) {
if (err) {
reject(err)
return
}
let b = browserify({debug: true})
.transform(envify)
.transform(babelify.configure({ignore: /node_modules/, presets: ['es2015']}))
for (let file of files) {
b.add(file)
}
b.bundle()
.on('error', reject)
.on('end', resolve)
.pipe(fs.createWriteStream(path.join(__dirname, 'build', 'tests.js')))
})
})
})
gulp.task('test-node', function () {
return gulp.src(['test/*.js'])
.pipe(mocha({reporter: 'dot'}))
.once('error', function (error) { // eslint-disable-line
process.exit(1)
})
})
gulp.task('build-karma-url', function () {
// karma serves static files, including js files, from /base/
process.env.YOURS_BITCOIN_JS_BASE_URL = '/base/'
})
gulp.task('build-karma', ['build-karma-url', 'build-tests'])
gulp.task('test-karma', ['build-karma'], function (done) {
return new KarmaServer({
configFile: path.join(__dirname, '/.karma.conf.js'),
singleRun: true
}, function () {
process.exit()
done()
}).start()
})
gulp.task('test-browser', ['build-karma', 'test-karma'])
gulp.task('test', ['test-node'])
gulp.task('build', ['build-bundle', 'build-worker', 'build-bundle-min', 'build-worker-min', 'build-tests'])
gulp.task('default', ['build'])