UNPKG

4.18 kBJavaScriptView Raw
1var gulp = require('gulp');
2var sourcemaps = require('gulp-sourcemaps');
3var concat = require('gulp-concat');
4var common = require('./common');
5var replace = require('gulp-replace');
6var babel = require('gulp-babel');
7var debug = require('gulp-debug');
8var print = require('gulp-print');
9var changed = require('gulp-changed');
10var plumber = require('gulp-plumber');
11var _ = require('lodash');
12var gzip = require('gulp-gzip');
13var pseudoconcat = require('gulp-pseudoconcat-js');
14
15_.each(common.bundleKinds, function(kind) {
16 gulp.task('dev-recompile-' + kind, [], function () {
17 var srcDir = common.srcDirs[kind];
18 var destDir = common.dist[kind];
19 var t0 = {};
20 return gulp.src([srcDir + '/**/*.js', srcDir + '/.lib-exports.js', '!' + srcDir + '/**/*_scsslint_*'])
21 .pipe(changed(destDir))
22 .pipe(print(function(filename) {
23 var t = new Date().getTime();
24 var fnKey = filename.replace(srcDir, '');
25 t0[fnKey] = t;
26 }))
27 .pipe(sourcemaps.init())
28 .pipe(plumber())
29 .pipe(debug())
30 .pipe(babel({
31 highlightCode: true,
32 presets: ['es2015']
33 }))
34 .pipe(sourcemaps.write('.', {includeContent: true}))
35 .pipe(gulp.dest(destDir))
36 .pipe(print(function(filename) {
37 var t = new Date().getTime();
38 var fnKey = filename.replace(destDir, '').replace('.map', '');
39 var res = t - (t0[fnKey] || 0);
40 var report = ['done ', filename, ' in ', res, 'ms'];
41 return report.join("");
42 }));
43 });
44
45 gulp.task('generate-systemjs-' + kind + '-index', ['gen-stage2-wildcard-exports-' + kind, 'dev-recompile-' + kind], function() {
46 var destDir = common.dist[kind];
47 return gulp.src([destDir + '/.work/.rollup-wildcard-exports.js', destDir + '/.lib-exports.js'])
48 .pipe(debug())
49 .pipe(replace(/export \* from '(.+)'/g, "require('$1')"))
50 .pipe(concat('dev-index.js')) //not with dot 'cause Gulp webserver doesn't serve .dotfiles
51 .pipe(gulp.dest(destDir + '/'))
52 });
53
54 gulp.task('dist-' + kind + '-systemjs', function() {
55 var systemjsDir = 'node_modules/systemjs';
56 return gulp.src([
57 systemjsDir + '/dist/system-polyfills.js',
58 systemjsDir + '/dist/system.js'
59 ])
60 .pipe(gulp.dest(common.dist[kind]))
61 });
62
63 var prepareDevLoaderTaskDeps = [];
64 if (kind === 'main') prepareDevLoaderTaskDeps.push('dist-' + kind + '-systemjs');
65 gulp.task('prepare-' + kind + '-dev-loader', prepareDevLoaderTaskDeps, function() {
66 return gulp.src([common.srcDirs[kind] + '/.dev-loader.js'])
67 .pipe(sourcemaps.init())
68 .pipe(replace('HOST', common.host))
69 .pipe(replace('PORT', common.port))
70 .pipe(concat('dev-loader.js')) //not with dot 'cause Gulp webserver doesn't serve .dotfiles
71 .pipe(sourcemaps.write('.', {includeContent: true}))
72 .pipe(gulp.dest(common.dist[kind]))
73 });
74
75 var devBundleTaskDeps = ['generate-systemjs-' + kind + '-index', 'dev-recompile-' + kind,
76 'prepare-' + kind + '-dev-loader'];
77 if (kind === 'main') devBundleTaskDeps.push('templates');
78
79 gulp.task('dev-bundle-' + kind, devBundleTaskDeps, function() {
80
81 var destDir = common.dist[kind];
82 var sources = [common.dist[kind] + '/templates/*.js',
83 common.dist[kind] + '/dev-loader.js'];
84 if (kind === 'main') {
85 sources = _(sources).unshift(common.dist['main'] + '/system.js').value();
86 destDir = 'build';
87 }
88 return gulp.src(sources)
89 .pipe(sourcemaps.init({loadMaps: true}))
90 .pipe(pseudoconcat(common.bundles[kind], {
91 host: 'http://' + common.host + ':' + common.port + '/'
92 }))
93 .pipe(sourcemaps.write('.', {includeContent: true}))
94 .pipe(gulp.dest(destDir))
95 .pipe(gzip())
96 .pipe(gulp.dest(destDir));
97 });
98});
99