Skip to content
This repository was archived by the owner on Oct 12, 2021. It is now read-only.

Commit b7abae4

Browse files
committed
refactor(build): Rearrange the Service Worker codebase.
* Move the code actually used to build the worker to src/worker/*. * Rewrite the Gulp build system to be much more modular and less error-prone.
1 parent eefd55e commit b7abae4

File tree

25 files changed

+201
-130
lines changed

25 files changed

+201
-130
lines changed

service-worker/worker/gulpfile.ts

Lines changed: 183 additions & 98 deletions
Original file line numberDiff line numberDiff line change
@@ -11,34 +11,74 @@ let jsmn = require('gulp-jasmine');
1111
var runSequence = require('run-sequence');
1212
var process = require('process');
1313
var merge = require('merge-stream');
14+
var exec = require('child_process').exec;
15+
var uglify = require('gulp-uglify');
16+
var rename = require('gulp-rename');
1417

15-
var systemCompilerConfig = JSON.parse(fs.readFileSync('./tsconfig.json')).compilerOptions;
16-
var commonCompilerConfig = JSON.parse(fs.readFileSync('./tsconfig.cjs.json')).compilerOptions;
18+
let assign = (dest, ...sources) => {
19+
sources.forEach(source => {
20+
Object.keys(source).forEach(key => {
21+
dest[key] = source[key];
22+
});
23+
});
24+
return dest;
25+
}
26+
27+
var systemCompilerConfig = assign({},
28+
JSON.parse(fs.readFileSync('./tsconfig.json')).compilerOptions,
29+
{
30+
typescript: require('typescript')
31+
}
32+
);
1733

18-
commonCompilerConfig.typescript = require('typescript');
19-
systemCompilerConfig.typescript = require('typescript');
34+
var commonCompilerConfig = assign({},
35+
systemCompilerConfig,
36+
{
37+
"module": "commonjs"
38+
}
39+
);
2040

21-
gulp.task('default', ['prepublish']);
41+
gulp.task('default', ['worker:build']);
2242

2343
gulp.task('clean', (done) => {
2444
rimraf('./dist', done);
2545
});
2646

27-
gulp.task('build', (done) => runSequence(
47+
gulp.task('prepublish', ['build']);
48+
49+
gulp.task('build', done => runSequence(
2850
'clean',
29-
'!build:system',
30-
done));
51+
[
52+
'task:generator:build',
53+
'task:worker:build'
54+
],
55+
done
56+
));
3157

32-
gulp.task('prepublish', done => runSequence(
58+
gulp.task('worker:build', done => runSequence(
3359
'clean',
34-
['!bundle', 'copy:generator'],
60+
'task:worker:build',
3561
done));
62+
63+
gulp.task('generator:build', done => runSequence(
64+
'clean',
65+
'task:generator:build',
66+
done
67+
));
68+
3669

37-
gulp.task('!build:system', () => {
70+
gulp.task('task:worker:build', done =>
71+
runSequence(
72+
'task:worker:compile_system',
73+
'task:worker:bundle',
74+
done
75+
));
76+
77+
gulp.task('task:worker:compile_system', () => {
3878
const stream = gulp
3979
.src([
40-
'src/**/*.ts',
41-
'!src/**/*.spec.ts',
80+
'src/worker/**/*.ts',
81+
'src/typings/**/*.d.ts',
4282
'typings/globals/**/*.d.ts'
4383
])
4484
.pipe(ts(systemCompilerConfig));
@@ -48,10 +88,11 @@ gulp.task('!build:system', () => {
4888
]);
4989
});
5090

51-
gulp.task('!build:commonjs', () => {
91+
gulp.task('task:worker:compile_common', () => {
5292
const stream = gulp
5393
.src([
54-
'src/**/*.ts',
94+
'src/worker/**/*.ts',
95+
'src/typings/**/*.d.ts',
5596
'typings/globals/**/*.d.ts'
5697
])
5798
.pipe(ts(commonCompilerConfig));
@@ -61,130 +102,174 @@ gulp.task('!build:commonjs', () => {
61102
]);
62103
});
63104

64-
gulp.task('build:generator', () => gulp
105+
gulp.task('task:worker:bundle', done => {
106+
var builder = new Builder();
107+
builder.config({
108+
map: {
109+
'worker': 'dist/src/worker',
110+
'rxjs': 'node_modules/rxjs',
111+
'jshashes': 'node_modules/jshashes/hashes.js'
112+
},
113+
packages: {
114+
'worker': {
115+
defaultExtension: 'js'
116+
},
117+
'rxjs': {
118+
defaultExtension: 'js'
119+
}
120+
}
121+
});
122+
builder
123+
.buildStatic('worker/browser_entry', 'dist/worker.js')
124+
.then(() => done());
125+
});
126+
127+
gulp.task('task:worker:minify', () => gulp
128+
.src([
129+
'dist/worker.js'
130+
], {base: 'dist'})
131+
.pipe(uglify())
132+
.pipe(rename({suffix: '.min'}))
133+
.pipe(gulp.dest('dist')));
134+
135+
gulp.task('task:generator:build', done => runSequence(
136+
'task:generator:compile',
137+
'task:generator:copy_deploy',
138+
done));
139+
140+
gulp.task('task:generator:compile', () => gulp
65141
.src([
66142
'src/generator/**.ts',
67143
'typings/globals/**/*.d.ts'
68144
])
69145
.pipe(ts(commonCompilerConfig))
70-
.pipe(gulp.dest('dist/src/generator')));
146+
.pipe(gulp.dest('dist')));
71147

72-
gulp.task('build:test_harness', done => runSequence(
148+
gulp.task('task:generator:copy_deploy', () => gulp
149+
.src([
150+
'dist/src/generator/**/*.js'
151+
])
152+
.pipe(gulp.dest('dist/generator')));
153+
154+
gulp.task('e2e_harness:build', done => runSequence(
73155
'clean',
74-
[
75-
'!build:test_harness:client',
76-
'!build:test_harness:tests'
77-
],
78-
done));
79-
80-
gulp.task('!build:test_harness:client', done => runSequence(
81-
[
82-
'!bundle',
83-
'!build:test_harness:client:compile',
84-
'copy:test_harness:client:local',
85-
'copy:test_harness:client:modules'
86-
],
87-
'copy:test_harness:client:worker',
156+
'task:e2e_harness:build',
88157
done
89158
));
90159

91-
gulp.task('!build:test_harness:client:compile', () => gulp
92-
.src([
93-
'typings/globals/**/*.d.ts',
94-
'src/testing/harness/client/**/*.ts'
95-
])
96-
.pipe(ts(systemCompilerConfig))
97-
.pipe(gulp.dest('dist/harness/client')));
160+
gulp.task('task:e2e_harness:build', done => runSequence([
161+
'task:e2e_harness:build_worker',
162+
'task:e2e_harness:compile',
163+
'task:e2e_harness:copy_modules',
164+
'task:e2e_harness:copy_index'
165+
], done));
98166

99-
gulp.task('copy:test_harness:client:local', () => gulp
100-
.src([
101-
'src/testing/harness/client/index.html'
102-
], {base: 'src/testing/harness/client'})
103-
.pipe(gulp.dest('dist/harness/client')));
167+
gulp.task('task:e2e_harness:build_worker', done => runSequence(
168+
'task:worker:build',
169+
'task:e2e_harness:copy_worker',
170+
done
171+
));
104172

105-
gulp.task('copy:test_harness:client:modules', () => gulp
173+
gulp.task('task:e2e_harness:compile', () => gulp
174+
.src([,
175+
'src/test/e2e/harness/client/**/*.ts',
176+
'typings/globals/**/*.d.ts'
177+
], {base: '.'})
178+
.pipe(ts(systemCompilerConfig))
179+
.pipe(gulp.dest('dist')));
180+
181+
gulp.task('task:e2e_harness:copy_modules', () => gulp
106182
.src([
107183
'node_modules/@angular/**/*.js',
108184
'node_modules/systemjs/dist/system.js',
109185
'node_modules/reflect-metadata/Reflect.js',
110186
'node_modules/zone.js/dist/zone.js',
111187
'node_modules/rxjs/**/*.js'
112188
], {base: '.'})
113-
.pipe(gulp.dest('dist/harness/client')))
189+
.pipe(gulp.dest('dist/src/test/e2e/harness/client')));
190+
114191

115-
gulp.task('copy:test_harness:client:worker', () => gulp
192+
gulp.task('task:e2e_harness:copy_worker', () => gulp
116193
.src([
117-
'dist/worker.js'
118-
])
119-
.pipe(gulp.dest('dist/harness/client')));
194+
'dist/worker.js',
195+
], {base: 'dist'})
196+
.pipe(gulp.dest('dist/src/test/e2e/harness/client')));
120197

121-
gulp.task('!build:test_harness:tests', [
122-
'!copy:test_harness:tests:protractor',
123-
'!build:test_harness:tests:compile'
124-
]);
125-
126-
gulp.task('!build:test_harness:tests:compile', () => gulp
198+
gulp.task('task:e2e_harness:copy_index', () => gulp
127199
.src([
128-
'typings/globals/**/*.d.ts',
129-
'src/typings/*.d.ts',
130-
'src/e2e/**/*.ts',
131-
'src/testing/harness/server/**/*.ts',
200+
'src/test/e2e/harness/client/index.html'
201+
], {base: '.'})
202+
.pipe(gulp.dest('dist')));
203+
204+
gulp.task('task:e2e_tests:build', done => runSequence([
205+
'task:e2e_tests:compile',
206+
'task:e2e_tests:copy_protractor',
207+
], done));
208+
209+
gulp.task('task:e2e_tests:compile', () => gulp
210+
.src([
211+
'src/test/e2e/spec/**/*.ts',
212+
'src/test/e2e/harness/server/**/*.ts',
213+
'src/typings/**/*.d.ts',
214+
'typings/globals/**/*.d.ts'
132215
], {base: '.'})
133216
.pipe(ts(commonCompilerConfig))
134-
.pipe(gulp.dest('dist/e2e')));
217+
.pipe(gulp.dest('dist')));
135218

136-
gulp.task('!copy:test_harness:tests:protractor', () => gulp
219+
gulp.task('task:e2e_tests:copy_protractor', () => gulp
137220
.src([
138-
'src/e2e/**/protractor.config.js'
221+
'src/test/e2e/spec/protractor.config.js'
139222
], {base: '.'})
140-
.pipe(gulp.dest('dist/e2e')));
223+
.pipe(gulp.dest('dist')));
141224

142-
gulp.task('copy:generator', ['build:generator'], () => gulp
225+
gulp.task('task:unit_tests:compile', () => gulp
143226
.src([
144-
'dist/src/generator/**/*.js'
145-
])
146-
.pipe(gulp.dest('dist/generator')));
227+
'src/test/unit/**/*.ts',
228+
'src/testing/**/*.ts',
229+
'src/typings/**/*.d.ts',
230+
'typings/globals/**/*.d.ts'
231+
], {base: '.'})
232+
.pipe(ts(commonCompilerConfig))
233+
.pipe(gulp.dest('dist')));
234+
235+
gulp.task('test', done => runSequence(
236+
'test:unit',
237+
'test:e2e',
238+
done
239+
));
147240

148-
gulp.task('build:test', (done) => runSequence(
241+
gulp.task('test:unit', done => runSequence(
149242
'clean',
150-
'!build:commonjs',
243+
[
244+
'task:unit_tests:compile',
245+
'task:worker:compile_common'
246+
],
247+
'task:unit_tests:run',
151248
done
152249
));
153250

154-
gulp.task('test', ['build:test'], () => gulp
251+
gulp.task('task:unit_tests:run', () => gulp
155252
.src([
156253
'dist/**/*.spec.js'
157254
], {base: '.'})
158255
.pipe(jsmn({
159256
verbose: true,
160257
})));
161258

162-
gulp.task('!bundle', ['!build:system'], () => {
163-
var builder = new Builder();
164-
builder.config({
165-
map: {
166-
'worker': 'dist/src',
167-
'@angular': 'node_modules/@angular',
168-
'rxjs': 'node_modules/rxjs',
169-
'reflect-metadata': 'node_modules/reflect-metadata/temp/Reflect.js',
170-
'jshashes': 'node_modules/jshashes/hashes.js'
171-
},
172-
packages: {
173-
'worker': {
174-
defaultExtension: 'js'
175-
},
176-
'rxjs': {
177-
defaultExtension: 'js'
178-
},
179-
'@angular/core': {
180-
defaultExtension: 'js',
181-
main: 'index.js'
182-
},
183-
'reflect-metadata': {
184-
format: 'global'
185-
}
186-
}
259+
gulp.task('test:e2e', done => runSequence(
260+
'clean',
261+
[
262+
'task:e2e_tests:build',
263+
'task:e2e_harness:build',
264+
],
265+
'task:e2e_tests:run',
266+
done
267+
));
268+
269+
gulp.task('task:e2e_tests:run', done => {
270+
exec('protractor dist/src/test/e2e/spec/protractor.config.js', (err, stdout, stderr) => {
271+
console.log(stdout);
272+
console.log(stderr);
273+
done();
187274
});
188-
builder.buildStatic('worker/browser_entry', 'dist/worker.js');
189275
});
190-

service-worker/worker/package.json

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,8 +30,10 @@
3030
"gulp-clean": "^0.3.1",
3131
"gulp-concat": "^2.6.0",
3232
"gulp-jasmine": "^2.2.1",
33+
"gulp-rename": "^1.2.2",
3334
"gulp-rimraf": "^0.2.0",
3435
"gulp-typescript": "^2.12.1",
36+
"gulp-uglify": "^1.5.3",
3537
"gulp-util": "^3.0.7",
3638
"jasmine": "^2.4.1",
3739
"merge-stream": "^1.0.0",

service-worker/worker/src/testing/harness/client/index.html renamed to service-worker/worker/src/test/e2e/harness/client/index.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
map: {
1111
'@angular': '/node_modules/@angular',
1212
'rxjs': '/node_modules/rxjs',
13-
'harness': '/src/testing/harness/client'
13+
'harness': '/'
1414
},
1515
packages: {
1616
'@angular/core': {

0 commit comments

Comments
 (0)