Skip to content

Commit c55f5b0

Browse files
authored
Add type module CDN scripts to v9 (#5066)
* save * add type module cdn scripts * revert script
1 parent 99414a5 commit c55f5b0

File tree

2 files changed

+107
-2
lines changed

2 files changed

+107
-2
lines changed

packages-exp/firebase-exp/rollup.config.js

Lines changed: 53 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ import resolveModule from '@rollup/plugin-node-resolve';
2424
import rollupTypescriptPlugin from 'rollup-plugin-typescript2';
2525
import sourcemaps from 'rollup-plugin-sourcemaps';
2626
import typescript from 'typescript';
27+
import alias from '@rollup/plugin-alias';
2728

2829
const external = Object.keys(pkg.dependencies || {});
2930
const plugins = [sourcemaps(), resolveModule(), json(), commonjs()];
@@ -32,6 +33,15 @@ const typescriptPlugin = rollupTypescriptPlugin({
3233
typescript
3334
});
3435

36+
const typescriptPluginCDN = rollupTypescriptPlugin({
37+
typescript,
38+
tsconfigOverride: {
39+
compilerOptions: {
40+
declaration: false
41+
}
42+
}
43+
});
44+
3545
/**
3646
* Individual Component Builds
3747
*/
@@ -77,4 +87,46 @@ const componentBuilds = pkg.components
7787
})
7888
.reduce((a, b) => a.concat(b), []);
7989

80-
export default [...appBuilds, ...componentBuilds];
90+
/**
91+
* CDN script builds
92+
*/
93+
const FIREBASE_APP_URL = `https://www.gstatic.com/firebasejs/${pkg.version}/firebase-app.js`;
94+
const cdnBuilds = [
95+
{
96+
input: 'app/index.cdn.ts',
97+
output: {
98+
file: 'firebase-app.js',
99+
sourcemap: true,
100+
format: 'es'
101+
},
102+
plugins: [...plugins, typescriptPluginCDN]
103+
},
104+
...pkg.components
105+
.filter(component => component !== 'app')
106+
.map(component => {
107+
// It is needed for handling sub modules, for example firestore/lite which should produce firebase-firestore-lite.js
108+
// Otherwise, we will create a directory with '/' in the name.
109+
const componentName = component.replace('/', '-');
110+
111+
return {
112+
input: `${component}/index.ts`,
113+
output: {
114+
file: `firebase-${componentName}.js`,
115+
sourcemap: true,
116+
format: 'es'
117+
},
118+
plugins: [
119+
...plugins,
120+
typescriptPluginCDN,
121+
alias({
122+
entries: {
123+
'@firebase/app': FIREBASE_APP_URL
124+
}
125+
})
126+
],
127+
external: [FIREBASE_APP_URL]
128+
};
129+
})
130+
];
131+
132+
export default [...appBuilds, ...componentBuilds, ...cdnBuilds];

packages-exp/firebase-exp/rollup.config.release.js

Lines changed: 54 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ import resolveModule from '@rollup/plugin-node-resolve';
2525
import rollupTypescriptPlugin from 'rollup-plugin-typescript2';
2626
import sourcemaps from 'rollup-plugin-sourcemaps';
2727
import typescript from 'typescript';
28+
import alias from '@rollup/plugin-alias';
2829

2930
// remove -exp from dependencies name
3031
const deps = Object.keys(pkg.dependencies || {}).map(name =>
@@ -38,6 +39,15 @@ const typescriptPlugin = rollupTypescriptPlugin({
3839
transformers: [importPathTransformer]
3940
});
4041

42+
const typescriptPluginCDN = rollupTypescriptPlugin({
43+
typescript,
44+
tsconfigOverride: {
45+
compilerOptions: {
46+
declaration: false
47+
}
48+
}
49+
});
50+
4151
/**
4252
* Individual Component Builds
4353
*/
@@ -84,4 +94,47 @@ const componentBuilds = pkg.components
8494
})
8595
.reduce((a, b) => a.concat(b), []);
8696

87-
export default [...appBuilds, ...componentBuilds];
97+
/**
98+
* CDN script builds
99+
*/
100+
const FIREBASE_APP_URL = `https://www.gstatic.com/firebasejs/${pkg.version}/firebase-app.js`;
101+
const cdnBuilds = [
102+
{
103+
input: 'app/index.cdn.ts',
104+
output: {
105+
file: 'firebase-app.js',
106+
sourcemap: true,
107+
format: 'es'
108+
},
109+
plugins: [...plugins, typescriptPluginCDN]
110+
},
111+
...pkg.components
112+
.filter(component => component !== 'app')
113+
.map(component => {
114+
const pkg = require(`./${component}/package.json`);
115+
// It is needed for handling sub modules, for example firestore/lite which should produce firebase-firestore-lite.js
116+
// Otherwise, we will create a directory with '/' in the name.
117+
const componentName = component.replace('/', '-');
118+
119+
return {
120+
input: `${component}/index.ts`,
121+
output: {
122+
file: `firebase-${componentName}.js`,
123+
sourcemap: true,
124+
format: 'es'
125+
},
126+
plugins: [
127+
...plugins,
128+
typescriptPluginCDN,
129+
alias({
130+
entries: {
131+
'@firebase/app': FIREBASE_APP_URL,
132+
'@firebase/installations': '@firebase/installations-exp'
133+
}
134+
})
135+
],
136+
external: [FIREBASE_APP_URL]
137+
};
138+
})
139+
];
140+
export default [...appBuilds, ...componentBuilds, ...cdnBuilds];

0 commit comments

Comments
 (0)