|
1 | 1 | 'use strict';
|
2 | 2 |
|
3 | 3 | var gulp = require('gulp');
|
| 4 | +var rollup = require('gulp-rollup'); |
| 5 | +var rename = require("gulp-rename"); |
4 | 6 | var gutil = require("gulp-util");
|
5 | 7 | var webpack = require('webpack');
|
6 | 8 | var rename = require('gulp-rename');
|
7 | 9 | var uglify = require('gulp-uglify');
|
8 |
| -var typescript = require('gulp-tsc'); |
| 10 | +var pump = require('pump'); |
| 11 | +var uglify = require('gulp-uglify'); |
| 12 | +var path = require('path'); |
| 13 | +var spawn = require('child_process').spawn; |
9 | 14 |
|
10 | 15 |
|
11 | 16 | var distFolder = './dist';
|
12 | 17 |
|
13 |
| -function generateBrowserScript(inFile, outFile, minify, callback) { |
14 |
| - var plugins = []; |
| 18 | +function generateScript(inFile, outFile, minify, callback) { |
| 19 | + inFile = path.join('./build-es6/', inFile).replace(/\.ts$/, '.js'); |
| 20 | + var parts = [ |
| 21 | + gulp.src('./build-es6/lib/**/*.js') |
| 22 | + .pipe(rollup({ entry: inFile})) |
| 23 | + .pipe(rename(outFile)), |
| 24 | + ]; |
15 | 25 | if (minify) {
|
16 |
| - plugins.push(new webpack.optimize.UglifyJsPlugin({ |
17 |
| - mangle: { |
18 |
| - except: ['$super', '$', 'exports', 'require'] |
19 |
| - } |
20 |
| - })); |
| 26 | + parts.push(uglify()); |
21 | 27 | }
|
22 |
| - webpack({ |
23 |
| - entry: inFile, |
24 |
| - plugins: plugins, |
25 |
| - output: { |
26 |
| - filename: 'dist/' + outFile |
27 |
| - }, |
28 |
| - resolve: { |
29 |
| - extensions: ['', '.webpack.js', '.web.js', '.ts', '.js'] |
30 |
| - }, |
31 |
| - module: { |
32 |
| - loaders: [ |
33 |
| - {test: /\.ts$/, loader: 'ts-loader', exclude: /node_modules/} |
34 |
| - ] |
35 |
| - }, |
36 |
| - node: { |
37 |
| - process: false |
38 |
| - } |
39 |
| - }, function(err, stats) { |
40 |
| - if(err) { |
41 |
| - callback(err); |
42 |
| - } else { |
43 |
| - gutil.log("[webpack]", stats.toString({ |
44 |
| - // output meta |
45 |
| - })); |
46 |
| - callback(); |
47 |
| - } |
48 |
| - }); |
| 28 | + parts.push(gulp.dest('./dist')); |
| 29 | + pump(parts, callback); |
| 30 | +} |
| 31 | + |
| 32 | +function tsc(config, cb) { |
| 33 | + spawn('./node_modules/.bin/tsc', ['-p', config], {stdio: 'inherit'}) |
| 34 | + .on('close', function(exitCode) { |
| 35 | + if (exitCode) { |
| 36 | + var err = new Error('TypeScript compiler failed'); |
| 37 | + // The stack is not useful in this context. |
| 38 | + err.showStack = false; |
| 39 | + cb(err); |
| 40 | + } else { |
| 41 | + cb(); |
| 42 | + } |
| 43 | + }); |
49 | 44 | }
|
50 | 45 |
|
51 | 46 | // This is equivalent to `npm run tsc`.
|
52 | 47 | gulp.task('compile', function(cb) {
|
53 |
| - var spawn = require('child_process').spawn; |
54 |
| - spawn('./node_modules/.bin/tsc', {stdio: 'inherit'}).on('close', function(exitCode) { |
55 |
| - if (exitCode) { |
56 |
| - var err = new Error('TypeScript compiler failed'); |
57 |
| - // The stack is not useful in this context. |
58 |
| - err.showStack = false; |
59 |
| - cb(err); |
60 |
| - } else { |
61 |
| - cb(); |
62 |
| - } |
63 |
| - }); |
| 48 | + tsc('tsconfig.json', cb); |
| 49 | +}); |
| 50 | + |
| 51 | +gulp.task('compile-es6', function(cb) { |
| 52 | + tsc('tsconfig-es6.json', cb); |
64 | 53 | });
|
65 | 54 |
|
66 |
| -gulp.task('build/zone.js.d.ts', ['compile'], function() { |
| 55 | +gulp.task('build/zone.js.d.ts', ['compile-es6'], function() { |
67 | 56 | return gulp.src('./build/lib/zone.d.ts').pipe(rename('zone.js.d.ts')).pipe(gulp.dest('./dist'));
|
68 | 57 | });
|
69 | 58 |
|
70 | 59 | // Zone for Node.js environment.
|
71 |
| -gulp.task('build/zone-node.js', function(cb) { |
72 |
| - return generateBrowserScript('./lib/node/node.ts', 'zone-node.js', false, cb); |
| 60 | +gulp.task('build/zone-node.js', ['compile-es6'], function(cb) { |
| 61 | + return generateScript('./lib/node/node.ts', 'zone-node.js', false, cb); |
73 | 62 | });
|
74 | 63 |
|
75 | 64 | // Zone for the browser.
|
76 |
| -gulp.task('build/zone.js', function(cb) { |
77 |
| - return generateBrowserScript('./lib/browser/browser.ts', 'zone.js', false, cb); |
| 65 | +gulp.task('build/zone.js', ['compile-es6'], function(cb) { |
| 66 | + |
| 67 | + return generateScript('./lib/browser/browser.ts', 'zone.js', false, cb); |
78 | 68 | });
|
79 | 69 |
|
80 |
| -gulp.task('build/zone.min.js', function(cb) { |
81 |
| - return generateBrowserScript('./lib/browser/browser.ts', 'zone.min.js', true, cb); |
| 70 | +gulp.task('build/zone.min.js', ['compile-es6'], function(cb) { |
| 71 | + return generateScript('./lib/browser/browser.ts', 'zone.min.js', true, cb); |
82 | 72 | });
|
83 | 73 |
|
84 |
| -gulp.task('build/jasmine-patch.js', function(cb) { |
85 |
| - return generateBrowserScript('./lib/jasmine/jasmine.ts', 'jasmine-patch.js', false, cb); |
| 74 | +gulp.task('build/jasmine-patch.js', ['compile-es6'], function(cb) { |
| 75 | + return generateScript('./lib/jasmine/jasmine.ts', 'jasmine-patch.js', false, cb); |
86 | 76 | });
|
87 | 77 |
|
88 |
| -gulp.task('build/jasmine-patch.min.js', function(cb) { |
89 |
| - return generateBrowserScript('./lib/jasmine/jasmine.ts', 'jasmine-patch.min.js', true, cb); |
| 78 | +gulp.task('build/jasmine-patch.min.js', ['compile-es6'], function(cb) { |
| 79 | + return generateScript('./lib/jasmine/jasmine.ts', 'jasmine-patch.min.js', true, cb); |
90 | 80 | });
|
91 | 81 |
|
92 |
| -gulp.task('build/long-stack-trace-zone.js', function(cb) { |
93 |
| - return generateBrowserScript('./lib/zone-spec/long-stack-trace.ts', 'long-stack-trace-zone.js', false, cb); |
| 82 | +gulp.task('build/long-stack-trace-zone.js', ['compile-es6'], function(cb) { |
| 83 | + return generateScript('./lib/zone-spec/long-stack-trace.ts', 'long-stack-trace-zone.js', false, cb); |
94 | 84 | });
|
95 | 85 |
|
96 |
| -gulp.task('build/long-stack-trace-zone.min.js', function(cb) { |
97 |
| - return generateBrowserScript('./lib/zone-spec/long-stack-trace.ts', 'long-stack-trace-zone.min.js', true, cb); |
| 86 | +gulp.task('build/long-stack-trace-zone.min.js', ['compile-es6'], function(cb) { |
| 87 | + return generateScript('./lib/zone-spec/long-stack-trace.ts', 'long-stack-trace-zone.min.js', true, cb); |
98 | 88 | });
|
99 | 89 |
|
100 |
| -gulp.task('build/proxy-zone.js', function(cb) { |
101 |
| - return generateBrowserScript('./lib/zone-spec/proxy.ts', 'proxy.js', false, cb); |
| 90 | +gulp.task('build/proxy-zone.js', ['compile-es6'], function(cb) { |
| 91 | + return generateScript('./lib/zone-spec/proxy.ts', 'proxy.js', false, cb); |
102 | 92 | });
|
103 | 93 |
|
104 |
| -gulp.task('build/proxy-zone.min.js', function(cb) { |
105 |
| - return generateBrowserScript('./lib/zone-spec/proxy.ts', 'proxy.min.js', true, cb); |
| 94 | +gulp.task('build/proxy-zone.min.js', ['compile-es6'], function(cb) { |
| 95 | + return generateScript('./lib/zone-spec/proxy.ts', 'proxy.min.js', true, cb); |
106 | 96 | });
|
107 | 97 |
|
108 |
| -gulp.task('build/task-tracking.js', function(cb) { |
109 |
| - return generateBrowserScript('./lib/zone-spec/task-tracking.ts', 'task-tracking.js', false, cb); |
| 98 | +gulp.task('build/task-tracking.js', ['compile-es6'], function(cb) { |
| 99 | + return generateScript('./lib/zone-spec/task-tracking.ts', 'task-tracking.js', false, cb); |
110 | 100 | });
|
111 | 101 |
|
112 |
| -gulp.task('build/task-tracking.min.js', function(cb) { |
113 |
| - return generateBrowserScript('./lib/zone-spec/task-tracking.ts', 'task-tracking.min.js', true, cb); |
| 102 | +gulp.task('build/task-tracking.min.js', ['compile-es6'], function(cb) { |
| 103 | + return generateScript('./lib/zone-spec/task-tracking.ts', 'task-tracking.min.js', true, cb); |
114 | 104 | });
|
115 | 105 |
|
116 |
| -gulp.task('build/wtf.js', function(cb) { |
117 |
| - return generateBrowserScript('./lib/zone-spec/wtf.ts', 'wtf.js', false, cb); |
| 106 | +gulp.task('build/wtf.js', ['compile-es6'], function(cb) { |
| 107 | + return generateScript('./lib/zone-spec/wtf.ts', 'wtf.js', false, cb); |
118 | 108 | });
|
119 | 109 |
|
120 |
| -gulp.task('build/wtf.min.js', function(cb) { |
121 |
| - return generateBrowserScript('./lib/zone-spec/wtf.ts', 'wtf.min.js', true, cb); |
| 110 | +gulp.task('build/wtf.min.js', ['compile-es6'], function(cb) { |
| 111 | + return generateScript('./lib/zone-spec/wtf.ts', 'wtf.min.js', true, cb); |
122 | 112 | });
|
123 | 113 |
|
124 |
| -gulp.task('build/async-test.js', function(cb) { |
125 |
| - return generateBrowserScript('./lib/zone-spec/async-test.ts', 'async-test.js', false, cb); |
| 114 | +gulp.task('build/async-test.js', ['compile-es6'], function(cb) { |
| 115 | + return generateScript('./lib/zone-spec/async-test.ts', 'async-test.js', false, cb); |
126 | 116 | });
|
127 | 117 |
|
128 |
| -gulp.task('build/fake-async-test.js', function(cb) { |
129 |
| - return generateBrowserScript('./lib/zone-spec/fake-async-test.ts', 'fake-async-test.js', false, cb); |
| 118 | +gulp.task('build/fake-async-test.js', ['compile-es6'], function(cb) { |
| 119 | + return generateScript('./lib/zone-spec/fake-async-test.ts', 'fake-async-test.js', false, cb); |
130 | 120 | });
|
131 | 121 |
|
132 |
| -gulp.task('build/sync-test.js', function(cb) { |
133 |
| - return generateBrowserScript('./lib/zone-spec/sync-test.ts', 'sync-test.js', false, cb); |
| 122 | +gulp.task('build/sync-test.js', ['compile-es6'], function(cb) { |
| 123 | + return generateScript('./lib/zone-spec/sync-test.ts', 'sync-test.js', false, cb); |
134 | 124 | });
|
135 | 125 |
|
136 | 126 | gulp.task('build', [
|
|
0 commit comments