-
Notifications
You must be signed in to change notification settings - Fork 5
/
gulpfile.js
111 lines (92 loc) · 3.15 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
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
var _ = require('lodash')
var concat = require('gulp-concat')
var groc = require('gulp-groc')
var gulp = require('gulp')
var jshint = require('gulp-jshint')
var notify = require('gulp-notify')
var path = require('path')
var rename = require('gulp-rename')
var replace = require('gulp-replace')
var uglify = require('gulp-uglify')
var webserver = require('gulp-webserver')
var ALL_SOURCES = ['gulpfile.js', '{demo,src,test}/**/*.{html,js}']
var MAIN_SOURCES = ['src/**/*.js']
var PROJECT_ROOT = __dirname
var BUILD_VARIATIONS = {
main: {
sources: ['src/util.js', 'src/loaderhooks.js', 'src/documentloader.js', 'src/scopedscript.js', 'src/system.js'],
destBase: './dist/html-exports',
},
sysjs: {
sources: ['src/util.js', 'src/loaderhooks.js', 'src/sysjs-plugin.js'],
destBase: './dist/sysjs-plugin/html',
},
}
// Tasks
require('web-component-tester').gulp.init(gulp);
gulp.task('default', ['watch', 'build', 'test:style', 'doc'])
gulp.task('test', ['test:style', 'test:local'])
gulp.task('watch', function() {
watching = true
return gulp.watch(ALL_SOURCES, {debounceDelay: 10}, ['test:style', 'build', 'doc'])
})
gulp.task('demo', ['build'], function() {
return gulp.src('.')
.pipe(webserver({
livereload: true,
open: '/demo/',
}))
})
gulp.task('doc', function() {
return gulp.src('src/**/*.js')
.pipe(groc())
})
gulp.task('test:style', function() {
return gulp.src(MAIN_SOURCES)
.pipe(jshint.extract('auto'))
.pipe(jshint())
.pipe(jshint.reporter('jshint-stylish'))
.pipe(jshint.reporter('fail'))
.on('error', onError)
})
// Build Variations
_.each(BUILD_VARIATIONS, function(config, name) {
var targetBase = 'build:' + name
function target(kind) {
return targetBase + ':' + kind
}
function dest(kind) {
return config.destBase + (kind === 'release' ? '' : '.' + kind) + '.js'
}
gulp.task(targetBase, [target('debug'), target('release'), target('min')])
gulp.task(target('debug'), function() {
return gulp.src(config.sources)
.pipe(concat(dest('debug')))
.pipe(gulp.dest('.'))
})
gulp.task(target('release'), [target('debug')], function() {
return gulp.src([dest('debug')])
.pipe(replace(/\n\s*console.(debug|assert)[^\n]+/g, ''))
.pipe(rename(dest('release')))
.pipe(gulp.dest('.'))
})
gulp.task(target('min'), [target('release')], function() {
return gulp.src([dest('release')])
.pipe(uglify())
.pipe(rename(dest('min')))
.pipe(gulp.dest('.'))
})
})
var variations = _.keys(BUILD_VARIATIONS)
gulp.task('build', _.map(variations, function(v) { return 'build:' + v }))
gulp.task('build:debug', _.map(variations, function(v) { return 'build:' + v + ':debug' }))
gulp.task('build:release', _.map(variations, function(v) { return 'build:' + v + ':release' }))
gulp.task('build:min', _.map(variations, function(v) { return 'build:' + v + ':min' }))
// Pretty errors for our various tasks.
var watching = false
function onError(error) {
if (watching) {
var message = error.message.replace(new RegExp(PROJECT_ROOT + path.sep, 'g'), '')
notify.onError(message)(this)
}
}