-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathgulpfile.js
79 lines (65 loc) · 1.89 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
// General.
var gulp = require('gulp');
var shell = require('gulp-shell');
var source = require("vinyl-source-stream");
var watch = require('gulp-watch');
var flatten = require('gulp-flatten');
var nodemon = require('gulp-nodemon');
// Javascript.
var browserify = require('browserify');
var reactify = require('reactify');
// CSS.
var sass = require('gulp-sass');
var postcss = require('gulp-postcss');
var autoprefixer = require('autoprefixer-core');
// TASKS **********************************************************************
// Kill any existing node servers.
gulp.task('node:kill', shell.task([
'pkill node'
]));
gulp.task('initialize', [
'browserify',
'scss:copy',
'scss:process'
]);
// Run live node server.
gulp.task('nodemon', function() {
nodemon({
script: 'app.js',
ext: 'js html',
ignore: ['node_modules/'],
env: { 'NODE_ENV': 'development' }
});
});
// Compile jsx into Javascript.
gulp.task('browserify', function(){
var b = browserify();
b.transform(reactify); // Use the reactify transform.
b.add('src/script.js');
return b.bundle()
.pipe(source('script.js'))
.pipe(gulp.dest('public'));
});
gulp.task('watch', function() {
gulp.watch('src/**/*.js*', ['browserify']);
// TODO: Not sure why this is necessary.
gulp.watch('src/**/*.scss', ['scss:copy']);
gulp.watch('scss/**/*.scss', ['scss:process']);
});
// Compile Sass into css.
gulp.task('scss:copy', function() {
gulp.src('src/**/*.scss', {base: 'src'})
.pipe(watch('src/**/*.scss', {base: 'src'}))
.pipe(flatten())
.pipe(gulp.dest('scss/_components'));
});
gulp.task('scss:process', function() {
var processors = [
autoprefixer({browsers: ['last 2 version']})
];
gulp.src('scss/style.scss')
.pipe(sass().on('error', sass.logError))
.pipe(postcss(processors))
.pipe(gulp.dest('public'));
});
gulp.task('default', ['node:kill', 'initialize', 'nodemon', 'watch']);