Skip to content

Commit bcec66c

Browse files
jgw96danbucholtz
authored andcommitted
feat(polyfills): split up code and source polyfill task (#8130)
* feat(polyfills): split up code and source polyfill task * fix(polyfills): get rid of need for entries argument
1 parent 11f4f51 commit bcec66c

File tree

7 files changed

+100
-97
lines changed

7 files changed

+100
-97
lines changed

scripts/gulp/constants.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,4 +41,3 @@ export const NPM_VENDOR_FILES = [
4141

4242
// SERVER
4343
export const LOCAL_SERVER_PORT = 8080;
44-

scripts/gulp/gulpfile.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,4 +9,5 @@ import './tasks/release';
99
import './tasks/snapshot';
1010
import './tasks/test';
1111
import './tasks/polyfill';
12+
import './tasks/polyfill.source';
1213
//import './tasks/theme';

scripts/gulp/tasks/e2e.ts

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,14 @@ import {dest, src, start, task} from 'gulp';
33
import * as path from 'path';
44
import { accessSync, F_OK, readFileSync, writeFileSync } from 'fs';
55

6-
import { compileSass, copyFonts, createTempTsConfig, createTimestamp, deleteFiles, runNgc, runWebpack, setSassIonicVersion } from '../util';
6+
import { compileSass, copyFonts, createTempTsConfig, createTimestamp, deleteFiles, runNgc, runWebpack, setSassIonicVersion, writePolyfills } from '../util';
7+
78

89
task('e2e', e2eBuild);
910

1011
function e2eBuild(done: Function) {
1112
const runSequence = require('run-sequence');
12-
runSequence('polyfill', 'e2e.copySource', 'e2e.compileTests', 'e2e.copyExternalDependencies', 'e2e.sass', 'e2e.fonts', 'e2e.beforeWebpack', 'e2e.runWebpack', done);
13+
runSequence('e2e.polyfill', 'e2e.copySource', 'e2e.compileTests', 'e2e.copyExternalDependencies', 'e2e.sass', 'e2e.fonts', 'e2e.beforeWebpack', 'e2e.runWebpack', done);
1314
}
1415

1516
task('e2e.copyAndCompile', (done: Function) => {
@@ -209,6 +210,11 @@ task('e2e.watch', ['e2e.copyExternalDependencies', 'e2e.sass', 'e2e.fonts'], (do
209210
}
210211
});
211212

213+
214+
task('e2e.polyfill', () => {
215+
writePolyfills('dist/e2e/polyfills');
216+
});
217+
212218
function e2eWatch(componentName: string, componentTest: string) {
213219
const watch = require('gulp-watch');
214220
const webpack = require('webpack');
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
import { task } from 'gulp';
2+
import { writePolyfills } from '../util';
3+
4+
5+
task('src.polyfill', () => {
6+
writePolyfills('scripts/polyfill');
7+
});

scripts/gulp/tasks/polyfill.ts

Lines changed: 5 additions & 92 deletions
Original file line numberDiff line numberDiff line change
@@ -1,100 +1,13 @@
11
import { task, src, dest } from 'gulp';
2-
const rollup = require('rollup');
3-
const nodeResolve = require('rollup-plugin-node-resolve');
4-
const commonjs = require('rollup-plugin-commonjs');
5-
const multiEntry = require('rollup-plugin-multi-entry');
6-
const uglify = require('rollup-plugin-uglify');
2+
import { writePolyfills } from '../util';
73

8-
const nodeResolveOptions = {
9-
jsnext: true,
10-
main: true
11-
};
4+
task('polyfill', ['polyfill.copy-readme', 'polyfill.write']);
125

13-
const modernEntries = [
14-
'node_modules/core-js/es6/array.js',
15-
'node_modules/core-js/es6/date.js',
16-
'node_modules/core-js/es6/function.js',
17-
'node_modules/core-js/es6/map.js',
18-
'node_modules/core-js/es6/number.js',
19-
'node_modules/core-js/es6/object.js',
20-
'node_modules/core-js/es6/parse-float.js',
21-
'node_modules/core-js/es6/parse-int.js',
22-
'node_modules/core-js/es6/promise.js',
23-
'node_modules/core-js/es6/set.js',
24-
'node_modules/core-js/es6/string.js',
25-
'node_modules/core-js/es7/reflect.js',
26-
'node_modules/core-js/es6/reflect.js',
27-
'node_modules/zone.js/dist/zone.js',
28-
];
29-
30-
const allEntries = [
31-
'node_modules/core-js/es6/index.js',
32-
'node_modules/core-js/es7/reflect.js',
33-
'node_modules/zone.js/dist/zone.js',
34-
];
35-
36-
const ngEntries = [
37-
'node_modules/core-js/es7/reflect.js',
38-
'node_modules/zone.js/dist/zone.js',
39-
];
40-
41-
task('polyfill', ['polyfill.modern', 'polyfill.all', 'polyfill.ng', 'polyfill.copy-readme']);
42-
43-
task('polyfill.all', () => {
44-
return rollup.rollup({
45-
entry: allEntries,
46-
plugins: [
47-
multiEntry(),
48-
nodeResolve(nodeResolveOptions),
49-
commonjs(),
50-
uglify()
51-
]
52-
}).then((bundle) => {
53-
bundle.write({
54-
format: 'iife',
55-
moduleName: 'MyBundle',
56-
dest: 'dist/ionic-angular/polyfills/polyfills.js'
57-
});
58-
});
59-
});
60-
61-
task('polyfill.ng', () => {
62-
return rollup.rollup({
63-
entry: ngEntries,
64-
plugins: [
65-
multiEntry(),
66-
nodeResolve(nodeResolveOptions),
67-
commonjs(),
68-
uglify()
69-
]
70-
}).then((bundle) => {
71-
bundle.write({
72-
format: 'iife',
73-
moduleName: 'MyBundle',
74-
dest: 'dist/ionic-angular/polyfills/polyfills.ng.js'
75-
});
76-
});
77-
});
78-
79-
task('polyfill.modern', (done) => {
80-
return rollup.rollup({
81-
entry: modernEntries,
82-
plugins: [
83-
multiEntry(),
84-
nodeResolve(nodeResolveOptions),
85-
commonjs(),
86-
uglify()
87-
]
88-
}).then((bundle) => {
89-
bundle.write({
90-
format: 'iife',
91-
moduleName: 'MyBundle',
92-
dest: 'dist/ionic-angular/polyfills/polyfills.modern.js'
93-
});
94-
});
6+
task('polyfill.write', () => {
7+
writePolyfills('dist/ionic-angular/polyfills');
958
});
969

97-
task('polyfill.copy-readme', (done) => {
10+
task('polyfill.copy-readme', (done: Function) => {
9811
return src('scripts/polyfill/readme.md')
9912
.pipe(dest('dist/ionic-angular/polyfills/'), done);
10013
});

scripts/gulp/tasks/release.ts

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { dest, src, task } from 'gulp';
22
import { DIST_BUILD_ROOT, SRC_ROOT, PROJECT_ROOT } from '../constants';
3-
import { compileSass, copyFonts, setSassIonicVersion, createTimestamp } from '../util';
3+
import { compileSass, copyFonts, createTimestamp, setSassIonicVersion, writePolyfills } from '../util';
44

55

66
task('nightly', (done: Function) => {
@@ -15,7 +15,7 @@ task('release.prepareNightly', (done: Function) => {
1515

1616
task('release.nightlyPackage', (done: Function) => {
1717
const runSequence = require('run-sequence');
18-
runSequence('clean', /*'release.prepareNightly',*/ 'polyfill', 'compile.release', 'release.prepareNightly', 'release.compileSass', 'release.fonts', 'release.scss', done);
18+
runSequence('clean', /*'release.prepareNightly',*/ 'release.polyfill', 'compile.release', 'release.prepareNightly', 'release.compileSass', 'release.fonts', 'release.scss', done);
1919
});
2020

2121
task('release.publishNightly', (done: Function) => {
@@ -115,3 +115,7 @@ task('release.nightlyPackageJson', () => {
115115
fs.writeFileSync(`${DIST_BUILD_ROOT}/package.json`, JSON.stringify(packageJson, null, 2));
116116
setSassIonicVersion(packageJson.version);
117117
});
118+
119+
task('release.polyfill', () => {
120+
writePolyfills('dist/ionic-angular/polyfills');
121+
});

scripts/gulp/util.ts

Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,11 @@ import { COMMONJS_MODULE, ES_MODULE, NODE_MODULES_ROOT, PROJECT_ROOT, SRC_ROOT,
22
import { src, dest } from 'gulp';
33
import * as path from 'path';
44
import * as fs from 'fs';
5+
import { rollup } from 'rollup';
6+
const nodeResolve = require('rollup-plugin-node-resolve');
7+
const commonjs = require('rollup-plugin-commonjs');
8+
const multiEntry = require('rollup-plugin-multi-entry');
9+
const uglify = require('rollup-plugin-uglify');
510

611
export function mergeObjects(obj1: any, obj2: any ) {
712
if (! obj1) {
@@ -173,3 +178,71 @@ export function createTimestamp() {
173178
('0' + (d.getUTCHours())).slice(-2) + // HH
174179
('0' + (d.getUTCMinutes())).slice(-2); // MM
175180
}
181+
182+
export function writePolyfills(pathToWrite: string) {
183+
const MODERN_ENTRIES = [
184+
'node_modules/core-js/es6/array.js',
185+
'node_modules/core-js/es6/date.js',
186+
'node_modules/core-js/es6/function.js',
187+
'node_modules/core-js/es6/map.js',
188+
'node_modules/core-js/es6/number.js',
189+
'node_modules/core-js/es6/object.js',
190+
'node_modules/core-js/es6/parse-float.js',
191+
'node_modules/core-js/es6/parse-int.js',
192+
'node_modules/core-js/es6/promise.js',
193+
'node_modules/core-js/es6/set.js',
194+
'node_modules/core-js/es6/string.js',
195+
'node_modules/core-js/es7/reflect.js',
196+
'node_modules/core-js/es6/reflect.js',
197+
'node_modules/zone.js/dist/zone.js',
198+
];
199+
200+
const ALL_ENTRIES = [
201+
'node_modules/core-js/es6/index.js',
202+
'node_modules/core-js/es7/reflect.js',
203+
'node_modules/zone.js/dist/zone.js',
204+
];
205+
206+
const NG_ENTRIES = [
207+
'node_modules/core-js/es7/reflect.js',
208+
'node_modules/zone.js/dist/zone.js',
209+
];
210+
211+
const ENTRIES = [
212+
{
213+
entry: MODERN_ENTRIES,
214+
fileName: 'polyfills.modern.js'
215+
}, {
216+
entry: ALL_ENTRIES,
217+
fileName: 'polyfills.js'
218+
}, {
219+
entry: NG_ENTRIES,
220+
fileName: 'polyfills.ng.js'
221+
}
222+
];
223+
224+
for (let i = 0; i <= 3; i++) {
225+
if (i === 3) {
226+
return;
227+
} else {
228+
rollup({
229+
entry: ENTRIES[i].entry,
230+
plugins: [
231+
multiEntry(),
232+
nodeResolve({
233+
jsnext: true,
234+
main: true
235+
}),
236+
commonjs(),
237+
uglify()
238+
]
239+
}).then((bundle) => {
240+
bundle.write({
241+
format: 'iife',
242+
moduleName: 'MyBundle',
243+
dest: `${pathToWrite}/${ENTRIES[i].fileName}`
244+
});
245+
});
246+
};
247+
};
248+
};

0 commit comments

Comments
 (0)