Skip to content

Commit d248b97

Browse files
authored
generate source maps for auth build (#1313)
* auth sourcemaps * [AUTOMATED]: Prettier Code Styling
1 parent a6aa999 commit d248b97

File tree

2 files changed

+66
-77
lines changed

2 files changed

+66
-77
lines changed

packages/auth/gulpfile.js

Lines changed: 64 additions & 73 deletions
Original file line numberDiff line numberDiff line change
@@ -15,12 +15,11 @@
1515
*/
1616

1717
const gulp = require('gulp');
18-
const closureCompiler = require('gulp-closure-compiler');
18+
const closureCompiler = require('google-closure-compiler').gulp();
1919
const del = require('del');
2020
const express = require('express');
2121
const path = require('path');
22-
const { through } = require('event-stream');
23-
const File = require('vinyl');
22+
const sourcemaps = require('gulp-sourcemaps');
2423

2524
// The optimization level for the JS compiler.
2625
// Valid levels: WHITESPACE_ONLY, SIMPLE_OPTIMIZATIONS, ADVANCED_OPTIMIZATIONS.
@@ -29,82 +28,74 @@ const OPTIMIZATION_LEVEL = 'ADVANCED_OPTIMIZATIONS';
2928

3029
// For minified builds, wrap the output so we avoid leaking global variables.
3130
const CJS_WRAPPER_PREFIX =
32-
`(function() {var firebase = require('@firebase/app').default;`;
31+
`(function() {var firebase = require('@firebase/app').default;`;
3332
const EMS_WRAPPER_PREFIX = `import firebase from '@firebase/app';(function() {`;
3433
const WRAPPER_SUFFIX =
35-
`}).apply(typeof global !== 'undefined' ? ` +
36-
`global : typeof self !== 'undefined' ? ` +
37-
`self : typeof window !== 'undefined' ? window : {});`;
38-
39-
/*
40-
* Re-emits file variations surrounding a content of an input file with
41-
* CommonJS and EcmaScript modules wrappers.
42-
*/
43-
const wrap = through(function(file) {
44-
const makeFile = (prefix, path) =>
45-
new File({
46-
path,
47-
contents: Buffer.concat([
48-
Buffer.from(prefix),
49-
file.contents,
50-
Buffer.from(WRAPPER_SUFFIX)
51-
])
52-
});
53-
54-
this.emit('data', makeFile(CJS_WRAPPER_PREFIX, 'auth.js'));
55-
this.emit('data', makeFile(EMS_WRAPPER_PREFIX, 'auth.esm.js'));
56-
});
57-
58-
// The path to Closure Compiler.
59-
const COMPILER_PATH = `${path.dirname(
60-
require.resolve('google-closure-compiler/package.json')
61-
)}/compiler.jar`;
34+
`}).apply(typeof global !== 'undefined' ? ` +
35+
`global : typeof self !== 'undefined' ? ` +
36+
`self : typeof window !== 'undefined' ? window : {});`;
6237

6338
const closureLibRoot = path.dirname(
64-
require.resolve('google-closure-library/package.json')
39+
require.resolve('google-closure-library/package.json')
6540
);
6641

67-
// Builds the core Firebase-auth JS.
68-
const buildFirebaseAuth = () =>
69-
gulp
70-
.src([
71-
`${closureLibRoot}/closure/goog/**/*.js`,
72-
`${closureLibRoot}/third_party/closure/goog/**/*.js`,
73-
'src/**/*.js'
74-
])
75-
.pipe(
42+
/**
43+
* Builds the core Firebase-auth JS.
44+
* @param {string} filename name of the generated file
45+
* @param {string} prefix prefix to the compiled code
46+
* @param {string} suffix suffix to the compiled code
47+
*/
48+
function createBuildTask(filename, prefix, suffix) {
49+
return () =>
50+
gulp
51+
.src([
52+
`${closureLibRoot}/closure/goog/**/*.js`,
53+
`${closureLibRoot}/third_party/closure/goog/**/*.js`,
54+
'src/**/*.js'
55+
], { base: '.' })
56+
.pipe(sourcemaps.init())
57+
.pipe(
7658
closureCompiler({
77-
compilerPath: COMPILER_PATH,
78-
fileName: 'unwrapped.js',
79-
compilerFlags: {
80-
closure_entry_point: 'fireauth.exports',
81-
compilation_level: OPTIMIZATION_LEVEL,
82-
externs: [
83-
'externs/externs.js',
84-
'externs/grecaptcha.js',
85-
'externs/gapi.iframes.js',
86-
path.resolve(
87-
__dirname,
88-
'../firebase/externs/firebase-app-externs.js'
89-
),
90-
path.resolve(
91-
__dirname,
92-
'../firebase/externs/firebase-error-externs.js'
93-
),
94-
path.resolve(
95-
__dirname,
96-
'../firebase/externs/firebase-app-internal-externs.js'
97-
)
98-
],
99-
language_out: 'ES5',
100-
only_closure_dependencies: true
101-
}
59+
js_output_file: filename,
60+
output_wrapper: `${prefix}%output%${suffix}`,
61+
entry_point: 'fireauth.exports',
62+
compilation_level: OPTIMIZATION_LEVEL,
63+
externs: [
64+
'externs/externs.js',
65+
'externs/grecaptcha.js',
66+
'externs/gapi.iframes.js',
67+
path.resolve(
68+
__dirname,
69+
'../firebase/externs/firebase-app-externs.js'
70+
),
71+
path.resolve(
72+
__dirname,
73+
'../firebase/externs/firebase-error-externs.js'
74+
),
75+
path.resolve(
76+
__dirname,
77+
'../firebase/externs/firebase-app-internal-externs.js'
78+
)
79+
],
80+
language_out: 'ES5',
81+
only_closure_dependencies: true
10282
})
103-
)
104-
.pipe(wrap)
105-
.pipe(gulp.dest('dist'));
83+
)
84+
.pipe(sourcemaps.write('.'))
85+
.pipe(gulp.dest('dist'));
86+
}
87+
88+
// commonjs build
89+
const cjsBuild = createBuildTask('auth.js', CJS_WRAPPER_PREFIX, WRAPPER_SUFFIX);
90+
gulp.task('cjs', cjsBuild);
91+
92+
// esm build
93+
const esmBuild = createBuildTask('auth.esm.js', EMS_WRAPPER_PREFIX, WRAPPER_SUFFIX);
94+
gulp.task('esm', esmBuild);
10695

107-
gulp.task('build-firebase-auth-js', buildFirebaseAuth);
96+
// build without wrapper
97+
const unwrappedBuild = createBuildTask('unwrapped.js', '', '');
98+
gulp.task('build-firebase-auth-js', unwrappedBuild);
10899

109100
// Deletes intermediate files.
110101
gulp.task('clean', done => del(['dist/*', 'dist'], done));
@@ -114,12 +105,12 @@ gulp.task('serve', () => {
114105
const app = express();
115106

116107
app.use(
117-
'/node_modules',
118-
express.static(path.resolve(__dirname, '../../node_modules'))
108+
'/node_modules',
109+
express.static(path.resolve(__dirname, '../../node_modules'))
119110
);
120111
app.use(express.static(__dirname));
121112

122113
app.listen(4000);
123114
});
124115

125-
gulp.task('default', buildFirebaseAuth);
116+
gulp.task('default', gulp.parallel('cjs', 'esm'));

packages/auth/package.json

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -23,16 +23,14 @@
2323
},
2424
"devDependencies": {
2525
"del": "3.0.0",
26-
"event-stream": "^3.3.4",
2726
"express": "4.16.3",
2827
"firebase-functions": "1.0.1",
2928
"firebase-tools": "3.18.2",
3029
"google-closure-compiler": "20180402.0.0",
3130
"google-closure-library": "20180405.0.0",
3231
"gulp": "4.0.0",
33-
"gulp-closure-compiler": "0.4.0",
34-
"protractor": "5.3.1",
35-
"vinyl": "^2.1.0"
32+
"gulp-sourcemaps": "2.6.4",
33+
"protractor": "5.3.1"
3634
},
3735
"repository": {
3836
"type": "git",

0 commit comments

Comments
 (0)