Skip to content

Commit ad273fd

Browse files
authored
Use package entry points for conditional exports between cjs/esm (#1249)
1 parent a0bac8c commit ad273fd

File tree

3 files changed

+52
-21
lines changed

3 files changed

+52
-21
lines changed

examples/README.md

Lines changed: 32 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -102,23 +102,35 @@ To test these examples with your local Rollbar.js build:
102102

103103
## Package Entry Points
104104

105-
Rollbar.js provides different entry points for different environments:
106-
107-
- **Main package**: `require('rollbar')` or `import Rollbar from 'rollbar'`
108-
- Node.js: `src/server/rollbar.js`
109-
- Browser (with bundler): `dist/rollbar.umd.min.js`
110-
111-
- **Direct imports - Source files** (ES modules):
112-
- `rollbar/src/server/rollbar.js` - Server-side source
113-
- `rollbar/src/browser/rollbar.js` - Browser-side source
114-
- `rollbar/src/react-native/rollbar.js` - React Native source
115-
116-
- **Direct imports - Distribution files** (pre-built bundles):
117-
- `rollbar/dist/rollbar.umd.js` - Universal (CommonJS/AMD/global)
118-
- `rollbar/dist/rollbar.umd.min.js` - Universal minified
119-
- `rollbar/dist/rollbar.js` - Vanilla (script tag only)
120-
- `rollbar/dist/rollbar.min.js` - Vanilla minified
121-
- `rollbar/dist/rollbar.snippet.js` - Async snippet loader
122-
- `rollbar/dist/rollbar.named-amd.js` - AMD/RequireJS
123-
124-
- **CDN**: `https://cdn.rollbar.com/rollbarjs/refs/tags/vVERSION/rollbar.min.js`
105+
Rollbar.js uses conditional exports to provide the right module format for each environment:
106+
107+
### Automatic Resolution (Recommended)
108+
109+
When you use `require('rollbar')` or `import Rollbar from 'rollbar'`, you automatically get:
110+
111+
- **Node.js**:
112+
- `import` → ES module (`src/server/rollbar.js`)
113+
- `require()` → CommonJS wrapper (`src/server/rollbar.cjs`)
114+
- **Browsers/Bundlers**:
115+
- `import` → ES module (`src/browser/rollbar.js`)
116+
- `require()` → UMD bundle (`dist/rollbar.umd.min.js`)
117+
- **TypeScript**: Type definitions from `index.d.ts`
118+
119+
### Direct Imports - Source Files (ES modules)
120+
121+
- `rollbar/src/server/rollbar.js` - Server-side source
122+
- `rollbar/src/browser/rollbar.js` - Browser-side source
123+
- `rollbar/src/react-native/rollbar.js` - React Native source
124+
125+
### Direct Imports - Distribution Files (Pre-built bundles)
126+
127+
- `rollbar/dist/rollbar.umd.js` - Universal (CommonJS/AMD/global)
128+
- `rollbar/dist/rollbar.umd.min.js` - Universal minified
129+
- `rollbar/dist/rollbar.js` - Vanilla (script tag only)
130+
- `rollbar/dist/rollbar.min.js` - Vanilla minified
131+
- `rollbar/dist/rollbar.snippet.js` - Async snippet loader
132+
- `rollbar/dist/rollbar.named-amd.js` - AMD/RequireJS
133+
134+
### CDN
135+
136+
- `https://cdn.rollbar.com/rollbarjs/refs/tags/vVERSION/rollbar.min.js`

package.json

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,10 +15,24 @@
1515
"javascript"
1616
],
1717
"license": "MIT",
18-
"main": "src/server/rollbar.js",
18+
"main": "src/server/rollbar.cjs",
1919
"browser": "dist/rollbar.umd.min.js",
2020
"module": "src/browser/rollbar.js",
2121
"types": "./index.d.ts",
22+
"exports": {
23+
".": {
24+
"types": "./index.d.ts",
25+
"node": {
26+
"import": "./src/server/rollbar.js",
27+
"require": "./src/server/rollbar.cjs"
28+
},
29+
"browser": {
30+
"import": "./src/browser/rollbar.js",
31+
"require": "./dist/rollbar.umd.min.js"
32+
},
33+
"default": "./dist/rollbar.umd.min.js"
34+
}
35+
},
2236
"dependencies": {
2337
"@rrweb/record": "^2.0.0-alpha.18",
2438
"async": "~3.2.3",

src/server/rollbar.cjs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
// CommonJS wrapper for ES module
2+
// This file provides CommonJS compatibility for Node.js users
3+
// who require() the rollbar package
4+
5+
module.exports = require('./rollbar.js').default;

0 commit comments

Comments
 (0)