-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathgulpfile.js
More file actions
executable file
·93 lines (77 loc) · 2.22 KB
/
gulpfile.js
File metadata and controls
executable file
·93 lines (77 loc) · 2.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
'use strict';
//requirements
var gulp = require('gulp'),
debug = require('gulp-debug'),
eslint = require('gulp-eslint'),
browserSync = require('browser-sync'),
browserify = require('browserify'),
babelify = require("babelify"),
source = require('vinyl-source-stream'),
reload = browserSync.reload,
del = require('del'),
runSequence = require('run-sequence'),
express = require('gulp-express');
//settings
var DEV = './_dev',
TMP = './_tmp';
gulp.task('clean', del.bind(null, [DEV]));
gulp.task('tmp:clean', del.bind(null, [TMP]));
gulp.task('deps', function() {
return browserify({ debug: true })
.require('react')
.bundle()
.pipe(source('deps.js'))
.pipe(gulp.dest(DEV + '/app/'))
.pipe(reload({ stream: true }));
});
gulp.task('browserify', function() {
var b = browserify({ debug: true });
b.external('react')
.transform(babelify)
.add('./app/index.jsx');
return b.bundle()
.on('error', function(err) {
console.log(err.message);
this.emit('end');
})
.pipe(source('index.js'))
.pipe(gulp.dest(DEV + '/app/'))
.pipe(reload({stream: true}));
});
gulp.task('watch', function() {
gulp.watch('app/**/*.jsx', ['lint', 'browserify']);
gulp.watch('app/**/*.js', ['lint', 'browserify']);
gulp.watch('html/**/*', ['copy-html']);
gulp.watch('css/**/*', ['copy-css']);
gulp.watch(['api/*', 'api/**/*.js'], ['express']);
});
gulp.task('copy-html', function() {
return gulp.src('./html/**/*.html')
.pipe(gulp.dest(DEV))
.pipe(reload({stream: true}));
});
gulp.task('copy-css', function() {
return gulp.src('./css/**/*.css')
.pipe(gulp.dest(DEV + '/css/'))
.pipe(reload({stream: true}));
});
gulp.task('express', function () {
express.run(['api/server.js']);
});
gulp.task('lint', function () {
return gulp.src(['app/**/*'])
.pipe(eslint())
.pipe(eslint.format());
});
gulp.task('browser-sync', function() {
browserSync({
notify: false,
logPrefix: 'server',
server: {
baseDir: DEV
}
});
});
gulp.task('default', ['clean'], function() {
runSequence(['lint', 'deps', 'browserify', 'copy-html', 'copy-css'], 'browser-sync', 'express', 'watch');
});