diff --git a/packages-exp/firebase-exp/rollup.config.js b/packages-exp/firebase-exp/rollup.config.js index 4afab8fcfd2..b742052c059 100644 --- a/packages-exp/firebase-exp/rollup.config.js +++ b/packages-exp/firebase-exp/rollup.config.js @@ -24,6 +24,7 @@ import resolveModule from '@rollup/plugin-node-resolve'; import rollupTypescriptPlugin from 'rollup-plugin-typescript2'; import sourcemaps from 'rollup-plugin-sourcemaps'; import typescript from 'typescript'; +import alias from '@rollup/plugin-alias'; const external = Object.keys(pkg.dependencies || {}); const plugins = [sourcemaps(), resolveModule(), json(), commonjs()]; @@ -32,6 +33,15 @@ const typescriptPlugin = rollupTypescriptPlugin({ typescript }); +const typescriptPluginCDN = rollupTypescriptPlugin({ + typescript, + tsconfigOverride: { + compilerOptions: { + declaration: false + } + } +}); + /** * Individual Component Builds */ @@ -77,4 +87,46 @@ const componentBuilds = pkg.components }) .reduce((a, b) => a.concat(b), []); -export default [...appBuilds, ...componentBuilds]; +/** + * CDN script builds + */ +const FIREBASE_APP_URL = `https://www.gstatic.com/firebasejs/${pkg.version}/firebase-app.js`; +const cdnBuilds = [ + { + input: 'app/index.cdn.ts', + output: { + file: 'firebase-app.js', + sourcemap: true, + format: 'es' + }, + plugins: [...plugins, typescriptPluginCDN] + }, + ...pkg.components + .filter(component => component !== 'app') + .map(component => { + // It is needed for handling sub modules, for example firestore/lite which should produce firebase-firestore-lite.js + // Otherwise, we will create a directory with '/' in the name. + const componentName = component.replace('/', '-'); + + return { + input: `${component}/index.ts`, + output: { + file: `firebase-${componentName}.js`, + sourcemap: true, + format: 'es' + }, + plugins: [ + ...plugins, + typescriptPluginCDN, + alias({ + entries: { + '@firebase/app': FIREBASE_APP_URL + } + }) + ], + external: [FIREBASE_APP_URL] + }; + }) +]; + +export default [...appBuilds, ...componentBuilds, ...cdnBuilds]; diff --git a/packages-exp/firebase-exp/rollup.config.release.js b/packages-exp/firebase-exp/rollup.config.release.js index d6a7669f4fd..7d6e655ba69 100644 --- a/packages-exp/firebase-exp/rollup.config.release.js +++ b/packages-exp/firebase-exp/rollup.config.release.js @@ -25,6 +25,7 @@ import resolveModule from '@rollup/plugin-node-resolve'; import rollupTypescriptPlugin from 'rollup-plugin-typescript2'; import sourcemaps from 'rollup-plugin-sourcemaps'; import typescript from 'typescript'; +import alias from '@rollup/plugin-alias'; // remove -exp from dependencies name const deps = Object.keys(pkg.dependencies || {}).map(name => @@ -38,6 +39,15 @@ const typescriptPlugin = rollupTypescriptPlugin({ transformers: [importPathTransformer] }); +const typescriptPluginCDN = rollupTypescriptPlugin({ + typescript, + tsconfigOverride: { + compilerOptions: { + declaration: false + } + } +}); + /** * Individual Component Builds */ @@ -84,4 +94,47 @@ const componentBuilds = pkg.components }) .reduce((a, b) => a.concat(b), []); -export default [...appBuilds, ...componentBuilds]; +/** + * CDN script builds + */ +const FIREBASE_APP_URL = `https://www.gstatic.com/firebasejs/${pkg.version}/firebase-app.js`; +const cdnBuilds = [ + { + input: 'app/index.cdn.ts', + output: { + file: 'firebase-app.js', + sourcemap: true, + format: 'es' + }, + plugins: [...plugins, typescriptPluginCDN] + }, + ...pkg.components + .filter(component => component !== 'app') + .map(component => { + const pkg = require(`./${component}/package.json`); + // It is needed for handling sub modules, for example firestore/lite which should produce firebase-firestore-lite.js + // Otherwise, we will create a directory with '/' in the name. + const componentName = component.replace('/', '-'); + + return { + input: `${component}/index.ts`, + output: { + file: `firebase-${componentName}.js`, + sourcemap: true, + format: 'es' + }, + plugins: [ + ...plugins, + typescriptPluginCDN, + alias({ + entries: { + '@firebase/app': FIREBASE_APP_URL, + '@firebase/installations': '@firebase/installations-exp' + } + }) + ], + external: [FIREBASE_APP_URL] + }; + }) +]; +export default [...appBuilds, ...componentBuilds, ...cdnBuilds];