Skip to content

Add type module CDN scripts to v9 #5066

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 3 commits into from
Jul 2, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
54 changes: 53 additions & 1 deletion packages-exp/firebase-exp/rollup.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -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()];
Expand All @@ -32,6 +33,15 @@ const typescriptPlugin = rollupTypescriptPlugin({
typescript
});

const typescriptPluginCDN = rollupTypescriptPlugin({
typescript,
tsconfigOverride: {
compilerOptions: {
declaration: false
}
}
});

/**
* Individual Component Builds
*/
Expand Down Expand Up @@ -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];
55 changes: 54 additions & 1 deletion packages-exp/firebase-exp/rollup.config.release.js
Original file line number Diff line number Diff line change
Expand Up @@ -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 =>
Expand All @@ -38,6 +39,15 @@ const typescriptPlugin = rollupTypescriptPlugin({
transformers: [importPathTransformer]
});

const typescriptPluginCDN = rollupTypescriptPlugin({
typescript,
tsconfigOverride: {
compilerOptions: {
declaration: false
}
}
});

/**
* Individual Component Builds
*/
Expand Down Expand Up @@ -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];