-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathGulpfile.js
More file actions
80 lines (64 loc) · 2.16 KB
/
Gulpfile.js
File metadata and controls
80 lines (64 loc) · 2.16 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
'use strict'
const gulp = require('gulp')
const stylus = require('gulp-stylus')
const data = require('gulp-data')
const livereload = require('gulp-livereload')
const uglify = require('gulp-uglify')
const buffer = require('vinyl-buffer')
const source = require('vinyl-source-stream')
const environments = require('gulp-environments')
const browserify = require('browserify')
const babelify = require('babelify')
const watchify = require('watchify')
const assign = require('lodash.assign')
const development = environments.development
const production = environments.production
let opts = {
entries: './src/react/app.js',
transform: [ babelify ],
debug: true
}
opts = assign({}, watchify.args, opts)
// Task's Templates
gulp.task('template', () => template())
gulp.task('template:live', () => template().pipe(livereload({ start: true })))
gulp.task('template:watch', () => gulp.watch('./src/*.html', ['template:live']))
// Task's Stylus
gulp.task('styl', () => styl())
gulp.task('styl:live', () => styl().pipe(livereload({ start: true })))
gulp.task('styl:watch', () => {
return gulp.watch(['./src/stylus/*.styl','./src/stylus/*.styl'], ['styl:live'])
})
// Task's React files
gulp.task('react', () => rebundle(browserify(opts)))
gulp.task('react:watch', () => {
let w = watchify(browserify(opts))
w.on('update', () => {
console.log('--> File modified, rebuilding...')
let bundle = rebundle(w).pipe(livereload())
console.log('--> Rebuild finished')
return bundle
})
return rebundle(w).pipe(livereload({ start: true }))
})
gulp.task('default', ['styl', 'template', 'react'])
gulp.task('watch', ['default', 'watching'])
gulp.task('watching', ['styl:watch', 'template:watch', 'react:watch'])
function rebundle (b) {
return b
.bundle()
.on('error', function(err) { console.error(err); this.emit('end'); })
.pipe(source('app.js'))
.pipe(buffer())
.pipe(production(uglify()))
.pipe(gulp.dest('./public/js'))
}
function styl () {
return gulp.src('./src/stylus/style.styl')
.pipe(stylus({ compress: true }))
.pipe(gulp.dest('./public/css'))
}
function template () {
return gulp.src('./src/*.html')
.pipe(gulp.dest('./public'))
}