Skip to content

Commit 9bac8f9

Browse files
committed
Finish setup for rollup ES5
1 parent 12e69db commit 9bac8f9

File tree

4 files changed

+108
-85
lines changed

4 files changed

+108
-85
lines changed

packages/webchannel-wrapper/gulpfile.js

Lines changed: 66 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ const closureDefines = [
6262
* @param {string} prefix prefix to the compiled code
6363
* @param {string} suffix suffix to the compiled code
6464
*/
65-
function createBuildTask(filename, prefix, suffix, language_out = 'ES5') {
65+
function createBuildTask(filename, prefix, suffix) {
6666
return function closureBuild() {
6767
return gulp
6868
.src(
@@ -84,7 +84,7 @@ function createBuildTask(filename, prefix, suffix, language_out = 'ES5') {
8484
resolve(__dirname, './externs/overrides.js'),
8585
resolve(__dirname, './externs/module.js')
8686
],
87-
language_out,
87+
language_out: 'ECMASCRIPT_2017',
8888
dependency_mode: 'PRUNE',
8989
define: closureDefines
9090
})
@@ -94,26 +94,38 @@ function createBuildTask(filename, prefix, suffix, language_out = 'ES5') {
9494
};
9595
}
9696

97-
function createRollupTask(inputPath, outputExtension) {
97+
function createRollupTask({
98+
inputPath,
99+
outputExtension,
100+
compileToES5 = false,
101+
format = 'es'
102+
}) {
98103
return async function rollupBuild() {
99-
const inputOptions = {
100-
input: inputPath,
101-
plugins: [
102-
rollupSourcemaps(),
103-
commonjs(),
104+
const plugins = [rollupSourcemaps(), commonjs()];
105+
if (compileToES5) {
106+
plugins.push(
104107
typescriptPlugin({
105108
typescript,
106-
compilerOptions: { allowJs: true, include: [inputPath], target: "ES5" },
107-
input: inputPath
108-
}),
109-
terser()
110-
]
109+
// Uncomment for development only. Prevents caching between builds.
110+
// clean: true,
111+
compilerOptions: { allowJs: true },
112+
include: ['dist/**/*.js']
113+
})
114+
);
115+
}
116+
// Typescript step unminifies minified Closure output.
117+
plugins.push(terser());
118+
const inputOptions = {
119+
input: inputPath,
120+
plugins,
121+
external: ['@firebase/app']
111122
};
112123

113124
const outputOptions = {
114-
file: `dist/index.${outputExtension}.js`,
115-
format: 'es',
116-
sourcemap: true
125+
file: `dist/index${outputExtension ? '.' : ''}${outputExtension}.js`,
126+
format,
127+
sourcemap: true,
128+
exports: 'named'
117129
};
118130

119131
const bundle = await rollup.rollup(inputOptions);
@@ -125,41 +137,52 @@ async function deleteIntermediateFiles() {
125137
await del('dist/temp');
126138
}
127139

128-
// commonjs build
140+
// Closure-generated ES2017 intermediate file (CJS format)
141+
const intermediateCjsFile = 'temp/cjs.js';
142+
const intermediateCjsPath = resolve(__dirname, 'dist/', intermediateCjsFile);
129143
const cjsBuild = createBuildTask(
130-
'index.js',
144+
intermediateCjsFile,
131145
CJS_WRAPPER_PREFIX,
132146
CJS_WRAPPER_SUFFIX
133147
);
134-
gulp.task('cjs', cjsBuild);
135148

136-
// esm build
137-
// 1) Do closure compile without any wrapping code.
138-
// 2) Use rollup to convert result to ESM format.
149+
// Closure-generated ES2017 intermediate file (no wrapper text)
139150
const intermediateEsmFile = 'temp/esm.js';
140151
const intermediateEsmPath = resolve(__dirname, 'dist/', intermediateEsmFile);
141-
const esmBuild = createBuildTask(intermediateEsmFile, '', '', 'ECMASCRIPT_2017');
142-
const rollupTask = createRollupTask(intermediateEsmPath, 'esm');
143-
gulp.task('esm', gulp.series(esmBuild, rollupTask));
144-
145-
// esm 2017 build
146-
// 1) Do closure compile with language set to ES2017, without any wrapping code.
147-
// 2) Use rollup to convert result to ESM format.
148-
const intermediateEsm2017File = 'temp/esm2017.js';
149-
const intermediateEsm2017Path = resolve(
150-
__dirname,
151-
'dist/',
152-
intermediateEsm2017File
153-
);
154-
const esm2017Build = createBuildTask(
155-
intermediateEsm2017File,
156-
'',
157-
'',
158-
'ECMASCRIPT_2017'
152+
const esmBuild = createBuildTask(intermediateEsmFile, '', '');
153+
154+
// cjs output
155+
const rollupCjsTask = createRollupTask({
156+
inputPath: intermediateCjsPath,
157+
outputExtension: '',
158+
compileToES5: true,
159+
format: 'cjs'
160+
});
161+
gulp.task('cjs', gulp.series(cjsBuild, rollupCjsTask));
162+
163+
// esm intermediateEsmPath
164+
const rollupEsmTask = createRollupTask({
165+
inputPath: intermediateEsmPath,
166+
outputExtension: 'esm',
167+
compileToES5: true,
168+
format: 'es'
169+
});
170+
gulp.task('esm', gulp.series(esmBuild, rollupEsmTask));
171+
172+
// esm2017 output
173+
const rollup2017Task = createRollupTask({
174+
inputPath: intermediateEsmPath,
175+
outputExtension: 'esm2017',
176+
compileToES5: false,
177+
format: 'es'
178+
});
179+
gulp.task('esm2017', gulp.series(esmBuild, rollup2017Task));
180+
181+
gulp.task(
182+
'allEsm',
183+
gulp.series(esmBuild, gulp.parallel(rollupEsmTask, rollup2017Task))
159184
);
160-
const rollup2017Task = createRollupTask(intermediateEsm2017Path, 'esm2017');
161-
gulp.task('esm2017', gulp.series(esm2017Build, rollup2017Task));
162185

163-
gulp.task('buildAll', gulp.parallel('cjs', 'esm', 'esm2017'));
186+
gulp.task('buildAll', gulp.parallel('cjs', 'allEsm'));
164187

165188
gulp.task('default', gulp.series('buildAll', deleteIntermediateFiles));

packages/webchannel-wrapper/package.json

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,15 +16,16 @@
1616
},
1717
"license": "Apache-2.0",
1818
"devDependencies": {
19-
"google-closure-compiler": "20200204.0.0",
20-
"google-closure-library": "20200204.0.0",
19+
"google-closure-compiler": "20200406.0.0",
20+
"google-closure-library": "20200406.0.0",
2121
"gulp": "4.0.2",
2222
"gulp-sourcemaps": "2.6.5",
2323
"rollup": "2.6.1",
2424
"rollup-plugin-commonjs": "10.1.0",
2525
"rollup-plugin-sourcemaps": "0.5.0",
2626
"rollup-plugin-terser": "5.3.0",
27-
"rollup-plugin-typescript2": "0.27.0"
27+
"rollup-plugin-typescript2": "0.27.0",
28+
"typescript": "3.8.3"
2829
},
2930
"repository": {
3031
"directory": "packages/webchannel-wrapper",
Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,8 @@
11
{
22
"extends": "../../config/tsconfig.base.json",
33
"compilerOptions": {
4-
"outDir": "dist"
5-
},
6-
"exclude": [
7-
"dist/**/*"
8-
]
4+
"declaration": false,
5+
"outDir": "dist",
6+
"downlevelIteration": true,
7+
}
98
}

yarn.lock

Lines changed: 34 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -7026,50 +7026,50 @@ google-closure-compiler-java@^20200112.0.0:
70267026
resolved "https://registry.npmjs.org/google-closure-compiler-java/-/google-closure-compiler-java-20200112.0.0.tgz#2b99f5e2869a573a1b35558ff3b6e6bc054a116f"
70277027
integrity sha512-h/ExDCXAw88nOniQSbbK6et31kOwmaDxl6t52dnETCIzituQtGToPzy21vUel1o8o+FvWUybLoap+dEYBam1pA==
70287028

7029-
google-closure-compiler-java@^20200204.0.0:
7030-
version "20200204.0.0"
7031-
resolved "https://registry.npmjs.org/google-closure-compiler-java/-/google-closure-compiler-java-20200204.0.0.tgz#0d757a5c3c93398ab4fdcabe7c6b94c9fa350d1f"
7032-
integrity sha512-JFm7HDkYPSCLFXGuXKPyahxcRGfFdprG+En3AQtRus2py03Ba9K0HuXk7A+YLdT5f1ldw3Mv1/TTqb8u/53rgQ==
7029+
google-closure-compiler-java@^20200406.0.0:
7030+
version "20200406.0.0"
7031+
resolved "https://registry.npmjs.org/google-closure-compiler-java/-/google-closure-compiler-java-20200406.0.0.tgz#89c640b89a91e9a693ab8119e3839d3e79b158ab"
7032+
integrity sha512-07WM/06CgQ0T2ZtSitfl+jmpeXW+c+spZgEgekJxEauzZztruYSkkBAHK8bZQ0N0+ZGfIUyQFNhLu//vxb5EJg==
70337033

70347034
google-closure-compiler-js@^20200112.0.0:
70357035
version "20200112.0.0"
70367036
resolved "https://registry.npmjs.org/google-closure-compiler-js/-/google-closure-compiler-js-20200112.0.0.tgz#cb9fc1636671f3ce927e668e29db69b65cae6f2d"
70377037
integrity sha512-xW47rSuiRaql6q1YN7+b3FXIW74b1nCcENVwm9cigw1H5gWoBMBJOmpZiXnjMfmYC+MALjPQ8giMzvSeP+2X5A==
70387038

7039-
google-closure-compiler-js@^20200204.0.0:
7040-
version "20200204.0.0"
7041-
resolved "https://registry.npmjs.org/google-closure-compiler-js/-/google-closure-compiler-js-20200204.0.0.tgz#19215f251c9e57c9aa6f90a2001d15a4c28fdc56"
7042-
integrity sha512-yi2KebPz7kkyGcMM9MC1sHHApMbcrUDQm3ulk7vv0o6I6sTJ/d/ErnX2OoG89Y5inugudkYMs/8EhStDde9RIA==
7039+
google-closure-compiler-js@^20200406.0.0:
7040+
version "20200406.0.0"
7041+
resolved "https://registry.npmjs.org/google-closure-compiler-js/-/google-closure-compiler-js-20200406.0.0.tgz#e73f498b1ab56a0580c0f945463252f7562f6f98"
7042+
integrity sha512-4qsr9VwjpSfoGt84bRAwDAcUlyYodZ9iywVMQwWzCu+SziCNXLFhUWkfLqTXbOYRSwO94UadwERSBdoPZY/GrA==
70437043

70447044
google-closure-compiler-linux@^20200112.0.0:
70457045
version "20200112.0.0"
70467046
resolved "https://registry.npmjs.org/google-closure-compiler-linux/-/google-closure-compiler-linux-20200112.0.0.tgz#e6c7943cc0114046dbe9fc685e4d7d4eb536c1dc"
70477047
integrity sha512-imTfdYP7BVTzzp3y7MuZP+98nEkbX7LZsZtxalNpl56vd+Ysc9/vOHXS14CdSoThaXIVlzX/lfjOlBRqPow+ew==
70487048

7049-
google-closure-compiler-linux@^20200204.0.0:
7050-
version "20200204.0.0"
7051-
resolved "https://registry.npmjs.org/google-closure-compiler-linux/-/google-closure-compiler-linux-20200204.0.0.tgz#250101451cdcf3628c9cf6044944d6f4235bbcb5"
7052-
integrity sha512-o+jrBtyIbJyut4g3JpxyjcEq/IvefD0ueew9pG1gk403jU6loaeUOui2uDB8rro1GvS1iVrYO6xUXIFZpS76CQ==
7049+
google-closure-compiler-linux@^20200406.0.0:
7050+
version "20200406.0.0"
7051+
resolved "https://registry.npmjs.org/google-closure-compiler-linux/-/google-closure-compiler-linux-20200406.0.0.tgz#af2d5e6041a8a8ac4a5f0ec5015d328e18b66121"
7052+
integrity sha512-5NiU/jAjeMVJ7xm1KBDttE863lF7ItEqxg5Z1Vg/QMabTZz6Rr5S0Qy4hP+wjMfBnmqcL10BjXKJP5/m+doSbA==
70537053

70547054
google-closure-compiler-osx@^20200112.0.0:
70557055
version "20200112.0.0"
70567056
resolved "https://registry.npmjs.org/google-closure-compiler-osx/-/google-closure-compiler-osx-20200112.0.0.tgz#df7a22c0dc32702b47c8ac4521f79bbe439effad"
70577057
integrity sha512-E3S1KqZw4+Zov0VXCkjomPrYhyuuV6jH9InBchQ7cZfipFJjhQmSRf39u4Mu0sINW7GXfODZbzBwOXhEIquFQw==
70587058

7059-
google-closure-compiler-osx@^20200204.0.0:
7060-
version "20200204.0.0"
7061-
resolved "https://registry.npmjs.org/google-closure-compiler-osx/-/google-closure-compiler-osx-20200204.0.0.tgz#77972493b4f30c815aebbc8041b00dc1022f6b85"
7062-
integrity sha512-ugpkHvKw5N0yIJo2uyvq54to2uwnjrHbtypgKgFMHvnrRL5L8sKkTcP9lQiAUcJ/01GpADco6bxbhNLE6qMzRg==
7059+
google-closure-compiler-osx@^20200406.0.0:
7060+
version "20200406.0.0"
7061+
resolved "https://registry.npmjs.org/google-closure-compiler-osx/-/google-closure-compiler-osx-20200406.0.0.tgz#bcab837e654dd74828030eafb95acadc49d974c6"
7062+
integrity sha512-XSF1l7GANVHnp2w8AGhhGDL3gw+XV3RaJvA7GsOJUmplPHguwlNvcLMEnSit7AEDa0JYdaQ50dfATwIKm6k8BQ==
70637063

70647064
google-closure-compiler-windows@^20200112.0.0:
70657065
version "20200112.0.0"
70667066
resolved "https://registry.npmjs.org/google-closure-compiler-windows/-/google-closure-compiler-windows-20200112.0.0.tgz#8300d1e651f2c84ed565e729ccf40d6ed7e63771"
70677067
integrity sha512-+5+UJFKXH0LGnYEHSVJxWwhtvX/MI6uebkAQkhma0057QsKs8fOToWuHL8/UbJULB4WUPa3DlHy0+Izs5z6lCQ==
70687068

7069-
google-closure-compiler-windows@^20200204.0.0:
7070-
version "20200204.0.0"
7071-
resolved "https://registry.npmjs.org/google-closure-compiler-windows/-/google-closure-compiler-windows-20200204.0.0.tgz#aa5ad1064f32392119449a81cf3f5202b5d88928"
7072-
integrity sha512-RAIiJK0Ch1s69ykcgITlTW6Vdp9lE6zhfKBJQf7P9emIMeAji3nIC5oxbK48DP3wUti5lFMLkq3U1m6HbPxyEw==
7069+
google-closure-compiler-windows@^20200406.0.0:
7070+
version "20200406.0.0"
7071+
resolved "https://registry.npmjs.org/google-closure-compiler-windows/-/google-closure-compiler-windows-20200406.0.0.tgz#ddb785df271026dd3a97da37710771480b6d2341"
7072+
integrity sha512-F7mSN06PrjWYrD9cTkCcNwJXyoYmcwAMrJGgFvmm04Nb7TDQRK6yVqXwrEkncGMuiymD+B1vsoCzUJ/GlQVf0Q==
70737073

70747074
70757075
version "20200112.0.0"
@@ -7087,32 +7087,32 @@ [email protected]:
70877087
google-closure-compiler-osx "^20200112.0.0"
70887088
google-closure-compiler-windows "^20200112.0.0"
70897089

7090-
google-closure-compiler@20200204.0.0:
7091-
version "20200204.0.0"
7092-
resolved "https://registry.npmjs.org/google-closure-compiler/-/google-closure-compiler-20200204.0.0.tgz#03454b05e3b9348d4f79d829157d924f114de8cf"
7093-
integrity sha512-jtXpxYuYazgeWSvrqaXo2WU1mBCISUiIal8lvJNS0epDYz//TPff7Iou58JFELG7VntRPoYAHtAj2PDQJyY51A==
7090+
google-closure-compiler@20200406.0.0:
7091+
version "20200406.0.0"
7092+
resolved "https://registry.npmjs.org/google-closure-compiler/-/google-closure-compiler-20200406.0.0.tgz#ae77582160fb286e161249f7e1c3806396beb251"
7093+
integrity sha512-CBfXKVeZASKrgWRDJoYKxbZ546Pphld1SP6mN/KXVW4LbtV1wvXauM9wq1X/Y0Cez4Qh8MlU8VHCtLtNZfq17A==
70947094
dependencies:
70957095
chalk "2.x"
7096-
google-closure-compiler-java "^20200204.0.0"
7097-
google-closure-compiler-js "^20200204.0.0"
7096+
google-closure-compiler-java "^20200406.0.0"
7097+
google-closure-compiler-js "^20200406.0.0"
70987098
minimist "1.x"
70997099
vinyl "2.x"
71007100
vinyl-sourcemaps-apply "^0.2.0"
71017101
optionalDependencies:
7102-
google-closure-compiler-linux "^20200204.0.0"
7103-
google-closure-compiler-osx "^20200204.0.0"
7104-
google-closure-compiler-windows "^20200204.0.0"
7105-
7106-
7107-
version "20200204.0.0"
7108-
resolved "https://registry.npmjs.org/google-closure-library/-/google-closure-library-20200204.0.0.tgz#70dca6351e2473ba5f691b4587cb60308cb63b58"
7109-
integrity sha512-VgiRwUxquUu1XTgiO6NXe5dhkWInYlqGgAMUWAYTzivxikltNjrnJcENsOvo10CyFf9UpqvyoDuJLBpkON5QnQ==
7102+
google-closure-compiler-linux "^20200406.0.0"
7103+
google-closure-compiler-osx "^20200406.0.0"
7104+
google-closure-compiler-windows "^20200406.0.0"
71107105

71117106
71127107
version "20200224.0.0"
71137108
resolved "https://registry.npmjs.org/google-closure-library/-/google-closure-library-20200224.0.0.tgz#70c36576b21c81c514cfbfcc001780c2fdacd173"
71147109
integrity sha512-cF9LP7F5Klj4go5TB4cPpcCvC/qgSVNYgzVS+bzxPgLvIiVL8aWOwApj6rsCkPY9Yr675FouylqNE24F31LWeQ==
71157110

7111+
7112+
version "20200406.0.0"
7113+
resolved "https://registry.npmjs.org/google-closure-library/-/google-closure-library-20200406.0.0.tgz#6a47652b9c72e14c94f0dd5de9ea7e8792cf58f6"
7114+
integrity sha512-gk6TI6sRVfL3aAFxtVu6BaQp3/eWVmpvY1RWmwFcCGFNQ8qYAudFE/OqPDSr/bNrf9H1/OgOh71oEwpuMerqCA==
7115+
71167116
google-gax@^1.14.2:
71177117
version "1.15.2"
71187118
resolved "https://registry.npmjs.org/google-gax/-/google-gax-1.15.2.tgz#a58aff43ec383f4f056f9d796e8d5e4891161eb8"

0 commit comments

Comments
 (0)