-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathgulpfile.js
More file actions
100 lines (85 loc) · 2.28 KB
/
gulpfile.js
File metadata and controls
100 lines (85 loc) · 2.28 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
const browserify = require('browserify'),
gulp = require('gulp'),
minimist = require('minimist'),
source = require('vinyl-source-stream');
const {
cached,
clean,
concat,
jshint,
pipe,
print,
run,
sequence,
sourcemaps,
tasks,
traceur,
uglify
} = require('gulp-load-plugins')();
const args = minimist(process.argv.slice(2));
const result = tasks(gulp, require);
if (typeof result === 'string') console.log(result);
const p = name => print(file => console.log(name, file));
gulp.task('default', ['build']);
gulp.task('build', sequence('clean', 'runtime'));
gulp.task('package', ['uglify'], () => console.log(`App written to ${paths.package}/app.js !`));
gulp.task('dev', ['runtime'], () => gulp.watch(paths.scripts, ['runtime']));
gulp.task('run', () => run(`node ${paths.dist}/index.js ${args.args || ''}`).exec());
gulp.task('test', () => run(`node ${paths.dist}/tests/index.js ${args.args || ''}`).exec());
gulp.task('transpile', ['jshint'],
() => pipe([
gulp.src(paths.scripts)
,cached('transpile')
,p('transpile')
,sourcemaps.init()
// ,to5()
,traceur({modules: 'commonjs', asyncGenerators: true, forOn: true, asyncFunctions: true})
,sourcemaps.write('.')
,gulp.dest(paths.dist)
])
.on('error', function(e) { console.log(e); }));
gulp.task('runtime', ['transpile'],
() => pipe([
gulp.src([traceur.RUNTIME_PATH])
,p('runtime')
,concat('traceur-runtime.js')
,gulp.dest(paths.dist)
])
.on('error', function(e) { console.log(e); }));
gulp.task('uglify', ['bundle'],
() => pipe([
gulp.src([`./${paths.package}/app.js`])
,p('uglify')
,uglify()
,gulp.dest(paths.package)
]));
gulp.task('bundle', ['runtime'],
() => pipe([
browserify({
entries: [`./${paths.dist}/index.js`],
builtins: false,
detectGlobals: false
}).bundle()
,source('app.js')
,p('bundle')
,gulp.dest(paths.package)
]));
gulp.task('jshint',
() => pipe([
gulp.src(paths.scripts)
,cached('jshint')
,p('jshint')
,jshint()
,jshint.reporter('jshint-stylish')
,jshint.reporter('fail')
]));
gulp.task('clean',
() => pipe([
gulp.src(paths.dist, {read: false})
,clean()
]));
const paths = {
scripts: ['src/**/*.js'],
dist: '.dist',
package: '.package'
};