-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathgulpfile.js
More file actions
110 lines (95 loc) · 2.63 KB
/
gulpfile.js
File metadata and controls
110 lines (95 loc) · 2.63 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
// sampled from https://github.com/oblador/angular-scroll/blob/master/gulpfile.js
var gulp = require('gulp');
require('harmonize')();
var babel = require('gulp-babel');
var concat = require('gulp-concat');
var del = require('del');
var jest = require('gulp-jest');
var jshint = require('gulp-jshint');
var lazypipe = require('lazypipe');
var notify = require('gulp-notify');
var react = require('gulp-react');
var sourcemaps = require('gulp-sourcemaps');
var uglify = require('gulp-uglify');
var wrap = require('gulp-wrap');
var filePaths = {
javascript: [
'src/dependencies.js',
'src/utils.js',
'src/formatters.js',
'src/default-types.jsx',
'src/be-table.jsx'
],
tests: [
'__tests__/*.js'
]
};
var testWatchPaths = [].concat(filePaths.javascript, filePaths.tests);
var swallow = notify.onError(function(err) {
console.error('\nERROR:\n\n', err);
return err;
});
var wrapText = [
'(function(){\n', // prepend
'\n})();', // append
];
// common pipeline steps for javascript builds
var jsBuildFlow = function(outpath) {
return lazypipe()
.pipe(concat, outpath)
.pipe(babel)
.pipe(wrap, wrapText[0] + '<%= contents %>' + wrapText[1]);
};
gulp.task('clean', function (cb) {
return del(['build'], cb);
});
gulp.task('compress', ['clean'], function () {
// development version
gulp.src(filePaths.javascript)
.pipe(jsBuildFlow('be-table.js')()).on('error', swallow)
.pipe(gulp.dest('build/js'));
// minified version
gulp.src(filePaths.javascript)
.pipe(sourcemaps.init())
.pipe(jsBuildFlow('be-table.min.js')()).on('error', swallow)
.pipe(uglify()).on('error', swallow)
.pipe(sourcemaps.write('./'))
.pipe(gulp.dest('build/js'));
});
gulp.task('lint', function() {
return gulp.src(filePaths.javascript)
.pipe(jsBuildFlow('be-table.js')())
.pipe(jshint({esnext: true}))
.pipe(jshint.reporter('default'))
.pipe(jshint.reporter('fail'));
});
gulp.task('watch', function() {
gulp.watch(filePaths.javascript, ['build']);
});
gulp.task('watchtest', function() {
gulp.watch(testWatchPaths, ['test']);
});
gulp.task('test', ['build'], function () {
return gulp.src('__tests__')
.pipe(jest({
testDirectoryName: "__tests__",
unmockedModulePathPatterns: [
"node_modules/react"
]
}));
});
/**
* doesn't build
*/
gulp.task('circletest', function () {
return gulp.src('__tests__')
.pipe(jest({
testDirectoryName: "__tests__",
unmockedModulePathPatterns: [
"node_modules/react"
]
}));
});
gulp.task('build', ['clean', 'compress']);
gulp.task('dev', ['build', 'watch']);
gulp.task('default', ['test', 'build']);