1 | var gulp = require('gulp');
|
2 | var sourcemaps = require('gulp-sourcemaps');
|
3 | var concat = require('gulp-concat');
|
4 | var common = require('./common');
|
5 | var replace = require('gulp-replace');
|
6 | var babel = require('gulp-babel');
|
7 | var debug = require('gulp-debug');
|
8 | var print = require('gulp-print');
|
9 | var changed = require('gulp-changed');
|
10 | var plumber = require('gulp-plumber');
|
11 | var _ = require('lodash');
|
12 | var gzip = require('gulp-gzip');
|
13 | var 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'))
|
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'))
|
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 |
|