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

Commit 5079eee

Browse files
committed
refactor(build): produce the worker script with rollup
1 parent f008181 commit 5079eee

File tree

5 files changed

+111
-64
lines changed

5 files changed

+111
-64
lines changed

service-worker/worker/gulpfile.ts

Lines changed: 82 additions & 61 deletions
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,13 @@ var rename = require('gulp-rename');
1717
var webpack = require('webpack');
1818
const childProcess = require('child_process');
1919
const rollup = require('rollup');
20+
const nodeResolve = require('rollup-plugin-node-resolve');
21+
const commonjs = require('rollup-plugin-commonjs');
2022

2123
import AngularServiceWorkerPlugin from './src/webpack';
2224

25+
declare var __dirname;
26+
2327
let assign = (dest, ...sources) => {
2428
sources.forEach(source => {
2529
Object.keys(source).forEach(key => {
@@ -50,6 +54,17 @@ var umdCompilerConfig = assign({},
5054
}
5155
);
5256

57+
58+
class RxRewriter {
59+
resolveId(id, from){
60+
if(id.startsWith('rxjs/')){
61+
return `${__dirname}/node_modules/rxjs-es/${id.split('rxjs/').pop()}.js`;
62+
}
63+
}
64+
}
65+
66+
67+
5368
gulp.task('default', ['worker:build']);
5469

5570
gulp.task('clean', (done) => {
@@ -65,14 +80,20 @@ gulp.task('prepublish', done => runSequence(
6580

6681
gulp.task('build', done => runSequence(
6782
'clean',
83+
'task:build',
84+
done
85+
));
86+
87+
gulp.task('task:build', done => runSequence(
6888
[
6989
'task:companion:build',
7090
'task:webpack:build',
7191
'task:worker:build',
72-
'task:package:copy_deploy',
92+
'task:package:deploy',
7393
],
94+
'task:bundles:deploy',
7495
done
75-
));
96+
))
7697

7798
gulp.task('worker:build', done => runSequence(
7899
'clean',
@@ -101,7 +122,7 @@ gulp.task('task:webpack_test:pack', done => {
101122

102123
gulp.task('task:webpack:build', done => runSequence(
103124
'task:webpack:compile',
104-
'task:webpack:copy_deploy',
125+
'task:webpack:deploy',
105126
done
106127
));
107128

@@ -110,7 +131,7 @@ gulp.task('task:webpack:compile', done => {
110131
done();
111132
});
112133

113-
gulp.task('task:webpack:copy_deploy', () => gulp
134+
gulp.task('task:webpack:deploy', () => gulp
114135
.src([
115136
'tmp/es5/src/webpack/**/*.d.ts',
116137
'tmp/es5/src/webpack/**/*.js',
@@ -124,7 +145,7 @@ gulp.task('task:companion:build', done => runSequence(
124145
'task:companion:compile_esm',
125146
'task:companion:bundle',
126147
'task:companion:minify',
127-
'task:companion:copy_deploy',
148+
'task:companion:deploy',
128149
done));
129150

130151
gulp.task('task:companion:compile_esm', done => {
@@ -138,7 +159,7 @@ gulp.task('task:companion:bundle', done => {
138159
}).then(bundle => bundle.write({
139160
format: 'umd',
140161
moduleName: 'ng.serviceWorker',
141-
dest: 'tmp/es5/src/companion/bundles/service-worker.umd.js',
162+
dest: 'tmp/es5/bundles/service-worker.umd.js',
142163
globals: {
143164
'@angular/core': 'ng.core',
144165
'base64-js': 'Base64Js',
@@ -174,36 +195,45 @@ gulp.task('task:companion:bundle', done => {
174195

175196
gulp.task('task:companion:minify', () => gulp
176197
.src([
177-
'tmp/es5/src/companion/bundles/service-worker.umd.js'
198+
'tmp/es5/bundles/service-worker.umd.js'
178199
], {base: 'tmp'})
179200
.pipe(uglify())
180201
.pipe(rename({suffix: '.min'}))
181202
.pipe(gulp.dest('tmp')));
182203

183204
gulp.task('task:worker:build', done =>
184205
runSequence(
185-
'task:worker:compile_system',
206+
'task:worker:compile',
186207
'task:worker:bundle',
187208
'task:worker:minify',
188-
'task:worker:copy_deploy',
209+
'task:worker:deploy',
189210
done
190211
));
191212

192-
gulp.task('task:worker:compile_system', () => {
193-
const stream = gulp
194-
.src([
195-
'src/worker/**/*.ts',
196-
'src/typings/**/*.d.ts',
197-
'typings/globals/**/*.d.ts',
198-
'typings/modules/**/*.d.ts'
199-
])
200-
.pipe(ts(systemCompilerConfig));
201-
return merge([
202-
stream.js.pipe(gulp.dest(systemCompilerConfig.outDir)),
203-
stream.dts.pipe(gulp.dest(systemCompilerConfig.outDir))
204-
]);
213+
gulp.task('task:worker:compile', done => {
214+
childProcess.execSync('node_modules/.bin/tsc -p tsconfig.worker.json');
215+
done();
205216
});
206217

218+
gulp.task('task:worker:bundle', done => rollup
219+
.rollup({
220+
entry: 'tmp/esm/src/worker/browser_entry.js',
221+
plugins: [
222+
// TODO(alxhub): Switch to rxjs-es when export bug is fixed.
223+
nodeResolve({jsnext: true, main: true}),
224+
commonjs({
225+
include: 'node_modules/**',
226+
namedExports: {
227+
'node_modules/jshashes/hashes.js': ['SHA1']
228+
}
229+
})
230+
]
231+
})
232+
.then(bundle => bundle.write({
233+
format: 'iife',
234+
dest: 'tmp/es5/bundles/worker.js',
235+
})));
236+
207237
gulp.task('task:worker:compile_common', () => {
208238
const stream = gulp
209239
.src([
@@ -219,53 +249,36 @@ gulp.task('task:worker:compile_common', () => {
219249
]);
220250
});
221251

222-
gulp.task('task:companion:copy_deploy', () => gulp
252+
gulp.task('task:companion:deploy', () => gulp
223253
.src([
224-
'tmp/es5/src/companion/**/*.js',
225254
'tmp/esm/src/companion/**/*.d.ts',
226255
'tmp/esm/src/companion/**/*.js',
227256
'tmp/esm/src/companion/**/*.js.map',
228257
'tmp/esm/src/companion/**/*.metadata.json',
229258
])
230259
.pipe(gulp.dest('dist')));
231260

232-
gulp.task('task:worker:bundle', done => {
233-
var builder = new Builder();
234-
builder.config({
235-
map: {
236-
'worker': 'tmp/es5/src/worker',
237-
'rxjs': 'node_modules/rxjs',
238-
'jshashes': 'node_modules/jshashes/hashes.js'
239-
},
240-
packages: {
241-
'worker': {
242-
defaultExtension: 'js'
243-
},
244-
'rxjs': {
245-
defaultExtension: 'js'
246-
}
247-
}
248-
});
249-
builder
250-
.buildStatic('worker/browser_entry', 'tmp/es5/worker.js')
251-
.then(() => done());
252-
});
253-
254261
gulp.task('task:worker:minify', () => gulp
255262
.src([
256-
'tmp/es5/worker.js'
257-
], {base: 'tmp/es5'})
263+
'tmp/es5/bundles/worker.js'
264+
], {base: 'tmp'})
258265
.pipe(uglify())
259266
.pipe(rename({suffix: '.min'}))
260-
.pipe(gulp.dest('tmp/es5')));
267+
.pipe(gulp.dest('tmp')));
261268

262-
gulp.task('task:worker:copy_deploy', () => gulp
269+
gulp.task('task:worker:deploy', () => gulp
263270
.src([
264-
'tmp/es5/worker.js',
265-
'tmp/es5/worker.min.js',
266-
], {base: 'tmp/es5'})
271+
'tmp/esm/src/worker/**/*.d.ts',
272+
'tmp/esm/src/worker/**/*.js',
273+
'tmp/esm/src/worker/**/*.js.map',
274+
'tmp/esm/src/worker/**/*.metadata.json',
275+
])
267276
.pipe(gulp.dest('dist/worker')));
268277

278+
gulp.task('task:bundles:deploy', () => gulp
279+
.src('tmp/es5/bundles/**/*.js')
280+
.pipe(gulp.dest('dist/bundles')));
281+
269282
gulp.task('e2e_harness:build', done => runSequence(
270283
'clean',
271284
'task:e2e_harness:build',
@@ -285,14 +298,15 @@ gulp.task('task:e2e_harness:build', done => runSequence([
285298

286299
gulp.task('task:e2e_harness:debug', done => runSequence([
287300
'task:e2e_harness:build',
288-
'task:e2e_harness:copy_debug'
289-
]));
301+
'task:e2e_harness:copy_debug',
302+
], done));
290303

291304
gulp.task('task:e2e_harness:build_primary', done => runSequence(
292305
'task:companion:build',
293306
[
294307
'task:e2e_harness:compile',
295-
'task:e2e_harness:copy_companion'
308+
'task:e2e_harness:copy_companion',
309+
'task:e2e_harness:copy_bundles',
296310
],
297311
done));
298312

@@ -333,13 +347,19 @@ gulp.task('task:e2e_harness:copy_companion', () => gulp
333347
'tmp/es5/src/companion/**/*.js',
334348
'tmp/es5/src/companion/**/*.metadata.json',
335349
'tmp/es5/src/companion/**/*.js.map'
336-
], {base: 'tmp/es5/src/companion'})
350+
])
337351
.pipe(gulp.dest('tmp/es5/src/test/e2e/harness/client/node_modules/@angular/service-worker')));
338352

353+
gulp.task('task:e2e_harness:copy_bundles', () => gulp
354+
.src([
355+
'tmp/es5/bundles/**/*.js'
356+
])
357+
.pipe(gulp.dest('tmp/es5/src/test/e2e/harness/client/node_modules/@angular/service-worker/bundles')));
358+
339359
gulp.task('task:e2e_harness:copy_worker', () => gulp
340360
.src([
341-
'tmp/es5/worker.js',
342-
], {base: 'tmp/es5'})
361+
'tmp/es5/bundles/worker.min.js',
362+
], {base: 'tmp/es5/bundles'})
343363
.pipe(gulp.dest('tmp/es5/src/test/e2e/harness/client')));
344364

345365
gulp.task('task:e2e_harness:copy_index', () => gulp
@@ -413,6 +433,7 @@ gulp.task('test:e2e', done => runSequence(
413433
'task:e2e_tests:build',
414434
'task:e2e_harness:build',
415435
],
436+
'task:bundles:deploy',
416437
'task:e2e_tests:run',
417438
done
418439
));
@@ -434,8 +455,8 @@ gulp.task('task:e2e_tests:run', done => {
434455
});
435456
});
436457

437-
gulp.task('task:package:copy_deploy', () => gulp
458+
gulp.task('task:package:deploy', () => gulp
438459
.src([
439460
'package.json'
440461
])
441-
.pipe(gulp.dest('dist')));
462+
.pipe(gulp.dest('dist')));

service-worker/worker/package.json

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,8 +43,11 @@
4343
"reflect-metadata": "0.1.2",
4444
"rimraf": "^2.5.2",
4545
"rollup": "^0.34.13",
46+
"rollup-plugin-commonjs": "^4.1.0",
47+
"rollup-plugin-node-resolve": "^2.0.0",
4648
"run-sequence": "^1.1.5",
47-
"rxjs": "5.0.0-beta.6",
49+
"rxjs": "5.0.0-beta.11",
50+
"rxjs-es": "^5.0.0-beta.12",
4851
"systemjs": "^0.19.17",
4952
"systemjs-builder": "^0.15.5",
5053
"ts-node": "^0.7.3",

service-worker/worker/src/test/e2e/spec/sanity.e2e.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,7 @@ describe('world sanity', () => {
9393
server.addResponse('/ngsw-manifest.json.js', '/* mocked */');
9494
server.addResponse('/ngsw-manifest.json', JSON.stringify(SIMPLE_MANIFEST));
9595
server.addResponse('/hello.txt', 'Hello world!');
96-
po.installServiceWorker('/worker.js');
96+
po.installServiceWorker('/worker.min.js');
9797
po
9898
.hasActiveWorker()
9999
.then(hasWorker => {

service-worker/worker/src/typings/service-worker.d.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,4 +60,6 @@ declare interface PushManager {
6060
subscribe(options: PushSubscribeOptions): Promise<PushSubscription>;
6161
}
6262

63-
declare var caches: CacheStorage;
63+
declare var caches: CacheStorage;
64+
65+
declare function importScripts(file: string);
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
{
2+
"compilerOptions": {
3+
"module": "es2015",
4+
"target": "es5",
5+
"noImplicitAny": false,
6+
"emitDecoratorMetadata": true,
7+
"experimentalDecorators": true,
8+
"declaration": true,
9+
"outDir": "tmp/esm",
10+
"sourceMap": true,
11+
"moduleResolution": "node",
12+
"rootDir": ".",
13+
"lib": ["es2015", "dom"]
14+
},
15+
"files": [
16+
"src/worker/browser_entry.ts",
17+
"src/typings/jshashes.d.ts",
18+
"src/typings/service-worker.d.ts",
19+
"typings/globals/whatwg-fetch/index.d.ts"
20+
]
21+
}

0 commit comments

Comments
 (0)