forked from facebook/fbjs
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathgulpfile.js
More file actions
91 lines (78 loc) · 2.18 KB
/
gulpfile.js
File metadata and controls
91 lines (78 loc) · 2.18 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
var assign = require('object-assign');
var gulp = require('gulp');
var babel = require('gulp-babel');
var flatten = require('gulp-flatten');
var rename = require('gulp-rename');
var del = require('del');
var mergeStream = require('merge-stream');
var runSequence = require('run-sequence');
var babelPluginDEV = require('fbjs-scripts/babel/dev-expression');
var babelDefaultOptions = require('fbjs-scripts/babel/default-options');
var gulpModuleMap = require('fbjs-scripts/gulp/module-map');
var gulpStripProvidesModule = require('fbjs-scripts/gulp/strip-provides-module');
var gulpCheckDependencies = require('fbjs-scripts/gulp/check-dependencies');
var paths = {
lib: {
src: [
'src/**/*.js',
'!src/**/__tests__/**/*.js',
'!src/**/__mocks__/**/*.js',
],
dest: 'lib',
},
mocks: {
src: [
'src/**/__mocks__/**/*.js',
],
dest: 'lib/__mocks__',
babelOpts: {
_modulePrefix: '../',
},
},
};
var babelOpts = assign({}, babelDefaultOptions, {
plugins: babelDefaultOptions.plugins.concat([
babelPluginDEV,
]),
});
var moduleMapOpts = {
moduleMapFile: './module-map.json',
prefix: 'fbjs/lib/',
};
gulp.task('clean', function(cb) {
del([paths.lib.dest, paths.mocks.dest], cb);
});
gulp.task('lib', function() {
var libTask = gulp
.src(paths.lib.src)
.pipe(gulpModuleMap(moduleMapOpts))
.pipe(gulpStripProvidesModule())
.pipe(babel(babelOpts))
.pipe(flatten())
.pipe(gulp.dest(paths.lib.dest));
var mockTask = gulp
.src(paths.mocks.src)
.pipe(babel(assign({}, babelOpts, paths.mocks.babelOpts)))
.pipe(flatten())
.pipe(gulp.dest(paths.mocks.dest));
return mergeStream(libTask, mockTask);
});
gulp.task('flow', function() {
return gulp
.src(paths.lib.src)
.pipe(flatten())
.pipe(rename({extname: '.js.flow'}))
.pipe(gulp.dest(paths.lib.dest));
});
gulp.task('check-dependencies', function() {
return gulp
.src('package.json')
.pipe(gulpCheckDependencies());
});
gulp.task('watch', function() {
gulp.watch(paths.src, ['lib', 'flow']);
});
gulp.task('build', function(cb) {
runSequence('check-dependencies', 'clean', ['lib', 'flow'], cb);
});
gulp.task('default', ['build']);