Skip to content

Commit 7e237cd

Browse files
authored
Put firebase/* entry point ESM files in their own subdirs with "type: module" package.json (#6826)
1 parent 1625f7a commit 7e237cd

File tree

34 files changed

+219
-135
lines changed

34 files changed

+219
-135
lines changed

.changeset/eighty-ants-do.md

+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
'firebase': patch
3+
---
4+
5+
Modify entry point ESM bundles to conform to Node ESM specs.
+3-3
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "firebase/analytics",
33
"main": "dist/index.cjs.js",
4-
"browser": "dist/index.esm.js",
5-
"module": "dist/index.esm.js",
4+
"browser": "dist/esm/index.esm.js",
5+
"module": "dist/esm/index.esm.js",
66
"typings": "dist/analytics/index.d.ts"
7-
}
7+
}
+3-3
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "firebase/app-check",
33
"main": "dist/index.cjs.js",
4-
"browser": "dist/index.esm.js",
5-
"module": "dist/index.esm.js",
4+
"browser": "dist/esm/index.esm.js",
5+
"module": "dist/esm/index.esm.js",
66
"typings": "dist/app-check/index.d.ts"
7-
}
7+
}

packages/firebase/app/package.json

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "firebase/app",
33
"main": "dist/index.cjs.js",
4-
"browser": "dist/index.esm.js",
5-
"module": "dist/index.esm.js",
4+
"browser": "dist/esm/index.esm.js",
5+
"module": "dist/esm/index.esm.js",
66
"typings": "dist/app/index.d.ts"
7-
}
7+
}
+3-3
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "firebase/auth/cordova",
33
"main": "dist/index.cjs.js",
4-
"browser": "dist/index.esm.js",
5-
"module": "dist/index.esm.js",
4+
"browser": "dist/esm/index.esm.js",
5+
"module": "dist/esm/index.esm.js",
66
"typings": "dist/auth/cordova/index.d.ts"
7-
}
7+
}

packages/firebase/auth/package.json

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "firebase/auth",
33
"main": "dist/index.cjs.js",
4-
"browser": "dist/index.esm.js",
5-
"module": "dist/index.esm.js",
4+
"browser": "dist/esm/index.esm.js",
5+
"module": "dist/esm/index.esm.js",
66
"typings": "dist/auth/index.d.ts"
7-
}
7+
}
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "firebase/auth/react-native",
33
"main": "dist/index.cjs.js",
4-
"browser": "dist/index.esm.js",
5-
"module": "dist/index.esm.js",
4+
"browser": "dist/esm/index.esm.js",
5+
"module": "dist/esm/index.esm.js",
66
"typings": "dist/auth/react-native/index.d.ts"
7-
}
7+
}
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "firebase/compat/analytics",
33
"main": "dist/index.cjs.js",
4-
"browser": "dist/index.esm.js",
5-
"module": "dist/index.esm.js",
4+
"browser": "dist/esm/index.esm.js",
5+
"module": "dist/esm/index.esm.js",
66
"typings": "dist/compat/analytics/index.d.ts"
7-
}
7+
}
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "firebase/compat/app-check",
33
"main": "dist/index.cjs.js",
4-
"browser": "dist/index.esm.js",
5-
"module": "dist/index.esm.js",
4+
"browser": "dist/esm/index.esm.js",
5+
"module": "dist/esm/index.esm.js",
66
"typings": "dist/compat/app-check/index.d.ts"
7-
}
7+
}
+3-3
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "firebase/compat/app",
33
"main": "dist/index.cjs.js",
4-
"browser": "dist/index.esm.js",
5-
"module": "dist/index.esm.js",
4+
"browser": "dist/esm/index.esm.js",
5+
"module": "dist/esm/index.esm.js",
66
"typings": "../index.d.ts"
7-
}
7+
}
+3-3
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "firebase/compat/auth",
33
"main": "dist/index.cjs.js",
4-
"browser": "dist/index.esm.js",
5-
"module": "dist/index.esm.js",
4+
"browser": "dist/esm/index.esm.js",
5+
"module": "dist/esm/index.esm.js",
66
"typings": "dist/compat/auth/index.d.ts"
7-
}
7+
}
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "firebase/compat/database",
33
"main": "dist/index.cjs.js",
4-
"browser": "dist/index.esm.js",
5-
"module": "dist/index.esm.js",
4+
"browser": "dist/esm/index.esm.js",
5+
"module": "dist/esm/index.esm.js",
66
"typings": "dist/compat/database/index.d.ts"
7-
}
7+
}
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "firebase/compat/firestore",
33
"main": "dist/index.cjs.js",
4-
"browser": "dist/index.esm.js",
5-
"module": "dist/index.esm.js",
4+
"browser": "dist/esm/index.esm.js",
5+
"module": "dist/esm/index.esm.js",
66
"typings": "dist/compat/firestore/index.d.ts"
7-
}
7+
}
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "firebase/compat/functions",
33
"main": "dist/index.cjs.js",
4-
"browser": "dist/index.esm.js",
5-
"module": "dist/index.esm.js",
4+
"browser": "dist/esm/index.esm.js",
5+
"module": "dist/esm/index.esm.js",
66
"typings": "dist/compat/functions/index.d.ts"
7-
}
7+
}
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "firebase/compat/installations",
33
"main": "dist/index.cjs.js",
4-
"browser": "dist/index.esm.js",
5-
"module": "dist/index.esm.js",
4+
"browser": "dist/esm/index.esm.js",
5+
"module": "dist/esm/index.esm.js",
66
"typings": "dist/compat/installations/index.d.ts"
7-
}
7+
}
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "firebase/compat/messaging",
33
"main": "dist/index.cjs.js",
4-
"browser": "dist/index.esm.js",
5-
"module": "dist/index.esm.js",
4+
"browser": "dist/esm/index.esm.js",
5+
"module": "dist/esm/index.esm.js",
66
"typings": "dist/compat/messaging/index.d.ts"
7-
}
7+
}

packages/firebase/compat/package.json

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
{
22
"name": "firebase/compat",
33
"main": "dist/index.node.cjs",
4-
"browser": "dist/index.esm.js",
5-
"module": "dist/index.esm.js",
4+
"browser": "dist/esm/index.esm.js",
5+
"module": "dist/esm/index.esm.js",
66
"react-native": "dist/index.rn.cjs.js",
77
"typings": "index.d.ts",
88
"components": [
@@ -19,4 +19,4 @@
1919
"storage",
2020
"database"
2121
]
22-
}
22+
}
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "firebase/compat/performance",
33
"main": "dist/index.cjs.js",
4-
"browser": "dist/index.esm.js",
5-
"module": "dist/index.esm.js",
4+
"browser": "dist/esm/index.esm.js",
5+
"module": "dist/esm/index.esm.js",
66
"typings": "dist/compat/performance/index.d.ts"
7-
}
7+
}
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "firebase/compat/remote-config",
33
"main": "dist/index.cjs.js",
4-
"browser": "dist/index.esm.js",
5-
"module": "dist/index.esm.js",
4+
"browser": "dist/esm/index.esm.js",
5+
"module": "dist/esm/index.esm.js",
66
"typings": "dist/compat/remote-config/index.d.ts"
7-
}
7+
}

packages/firebase/compat/rollup.config.js

+45-6
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ import json from '@rollup/plugin-json';
2727
import pkg from '../package.json';
2828
import compatPkg from './package.json';
2929
import appPkg from './app/package.json';
30+
import { emitModulePackageFile } from '../../../scripts/build/rollup_emit_module_package_file';
3031

3132
const external = Object.keys(pkg.dependencies || {});
3233
const uglifyOptions = {
@@ -92,7 +93,25 @@ const typescriptPluginCDN = rollupTypescriptPlugin({
9293
*/
9394
const appBuilds = [
9495
/**
95-
* App Browser Builds
96+
* App ESM Build
97+
* Uses "type:module" in package.json to signal this is ESM.
98+
* Allows the extension to remain '.js' as some tools do not recognize
99+
* '.mjs'.
100+
*/
101+
{
102+
input: `${__dirname}/app/index.ts`,
103+
output: [
104+
{
105+
file: resolve(__dirname, 'app', appPkg.browser),
106+
format: 'es',
107+
sourcemap: true
108+
}
109+
],
110+
plugins: [...plugins, typescriptPlugin, emitModulePackageFile()],
111+
external: id => external.some(dep => id === dep || id.startsWith(`${dep}/`))
112+
},
113+
/**
114+
* App CJS/MJS Builds
96115
*/
97116
{
98117
input: `${__dirname}/app/index.ts`,
@@ -106,11 +125,6 @@ const appBuilds = [
106125
file: resolve(__dirname, 'app', appPkg.main.replace('.cjs.js', '.mjs')),
107126
format: 'es',
108127
sourcemap: true
109-
},
110-
{
111-
file: resolve(__dirname, 'app', appPkg.browser),
112-
format: 'es',
113-
sourcemap: true
114128
}
115129
],
116130
plugins: [...plugins, typescriptPlugin],
@@ -137,6 +151,28 @@ const componentBuilds = compatPkg.components
137151
.map(component => {
138152
const pkg = require(`${__dirname}/${component}/package.json`);
139153
return [
154+
/**
155+
* Component ESM build
156+
* Uses "type:module" in package.json to signal this is ESM.
157+
* Allows the extension to remain '.js' as some tools do not recognize
158+
* '.mjs'.
159+
*/
160+
{
161+
input: `${__dirname}/${component}/index.ts`,
162+
output: [
163+
{
164+
file: resolve(__dirname, component, pkg.browser),
165+
format: 'es',
166+
sourcemap: true
167+
}
168+
],
169+
plugins: [...plugins, typescriptPlugin, emitModulePackageFile()],
170+
external: id =>
171+
external.some(dep => id === dep || id.startsWith(`${dep}/`))
172+
},
173+
/**
174+
* Component CJS/MJS builds
175+
*/
140176
{
141177
input: `${__dirname}/${component}/index.ts`,
142178
output: [
@@ -164,6 +200,9 @@ const componentBuilds = compatPkg.components
164200
external: id =>
165201
external.some(dep => id === dep || id.startsWith(`${dep}/`))
166202
},
203+
/**
204+
* Component UMD build
205+
*/
167206
{
168207
input: `${__dirname}/${component}/index.ts`,
169208
output: createUmdOutputConfig(`firebase-${component}-compat.js`),
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "firebase/compat/storage",
33
"main": "dist/index.cjs.js",
4-
"browser": "dist/index.esm.js",
5-
"module": "dist/index.esm.js",
4+
"browser": "dist/esm/index.esm.js",
5+
"module": "dist/esm/index.esm.js",
66
"typings": "dist/compat/storage/index.d.ts"
7-
}
7+
}
+3-3
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "firebase/database",
33
"main": "dist/index.cjs.js",
4-
"browser": "dist/index.esm.js",
5-
"module": "dist/index.esm.js",
4+
"browser": "dist/esm/index.esm.js",
5+
"module": "dist/esm/index.esm.js",
66
"typings": "dist/database/index.d.ts"
7-
}
7+
}
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "firebase/firestore/lite",
33
"main": "dist/index.cjs.js",
4-
"browser": "dist/index.esm.js",
5-
"module": "dist/index.esm.js",
4+
"browser": "dist/esm/index.esm.js",
5+
"module": "dist/esm/index.esm.js",
66
"typings": "dist/firestore/lite/index.d.ts"
7-
}
7+
}
+3-3
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "firebase/firestore",
33
"main": "dist/index.cjs.js",
4-
"browser": "dist/index.esm.js",
5-
"module": "dist/index.esm.js",
4+
"browser": "dist/esm/index.esm.js",
5+
"module": "dist/esm/index.esm.js",
66
"typings": "dist/firestore/index.d.ts"
7-
}
7+
}
+3-3
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "firebase/functions",
33
"main": "dist/index.cjs.js",
4-
"browser": "dist/index.esm.js",
5-
"module": "dist/index.esm.js",
4+
"browser": "dist/esm/index.esm.js",
5+
"module": "dist/esm/index.esm.js",
66
"typings": "dist/functions/index.d.ts"
7-
}
7+
}
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "firebase/installations",
33
"main": "dist/index.cjs.js",
4-
"browser": "dist/index.esm.js",
5-
"module": "dist/index.esm.js",
4+
"browser": "dist/esm/index.esm.js",
5+
"module": "dist/esm/index.esm.js",
66
"typings": "dist/installations/index.d.ts"
7-
}
7+
}
+3-3
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "firebase/messaging",
33
"main": "dist/index.cjs.js",
4-
"browser": "dist/index.esm.js",
5-
"module": "dist/index.esm.js",
4+
"browser": "dist/esm/index.esm.js",
5+
"module": "dist/esm/index.esm.js",
66
"typings": "dist/messaging/index.d.ts"
7-
}
7+
}

0 commit comments

Comments
 (0)