1+
2+ import typescript from '@rollup/plugin-typescript'
3+ import commonjs from '@rollup/plugin-commonjs'
4+ import nodeResolve from '@rollup/plugin-node-resolve'
5+ import replace from '@rollup/plugin-replace'
6+ import fs from 'fs'
7+
8+ const defaultOptions = ( ) => ( {
9+ // additional variables to define with '@rollup/plugin-replace'
10+ // e.g. '{ ABC: 123 }' is equivalent to running 'globalThis.ABC = 123'
11+ additionalReplacements : { } ,
12+ // additional external dependencies, such as '@bugsnag/browser'
13+ external : [ ] ,
14+ // the entry point for the bundle
15+ input : undefined ,
16+ // additional rollup plugins
17+ plugins : [ ]
18+ } )
19+
20+ function createRollupConfig ( options = defaultOptions ( ) ) {
21+ const packageJson = JSON . parse ( fs . readFileSync ( `${ process . cwd ( ) } /package.json` ) )
22+
23+ return [
24+ // ESM build
25+ {
26+ input : options . input || './src/index.ts' ,
27+ output : {
28+ dir : 'dist/esm' ,
29+ entryFileNames : '[name].js' ,
30+ format : 'es' ,
31+ sourcemap : true ,
32+ generatedCode : {
33+ preset : 'es2015' ,
34+ }
35+ } ,
36+ external : options . external ,
37+ plugins : [
38+ replace ( {
39+ preventAssignment : true ,
40+ values : {
41+ __BUGSNAG_NOTIFIER_VERSION__ : packageJson . version ,
42+ ...options . additionalReplacements ,
43+ }
44+ } ) ,
45+ nodeResolve ( {
46+ preferBuiltins : true
47+ } ) ,
48+ commonjs ( ) ,
49+ typescript ( {
50+ tsconfig : './tsconfig.json' ,
51+ declarationDir : 'dist/esm' ,
52+ outDir : 'dist/esm' ,
53+ noEmitOnError : true
54+ } ) ,
55+ ...( options . plugins ?? [ ] )
56+ ]
57+ } ,
58+ // CJS build
59+ {
60+ input : options . input || './src/index.ts' ,
61+ output : {
62+ dir : 'dist/cjs' ,
63+ entryFileNames : '[name].js' ,
64+ format : 'cjs' ,
65+ sourcemap : true ,
66+ generatedCode : {
67+ preset : 'es2015' ,
68+ } ,
69+ exports : 'named' ,
70+ interop : 'auto' ,
71+ footer : 'module.exports = Object.assign(exports.default || {}, exports);'
72+ } ,
73+ external : options . external ,
74+ plugins : [
75+ replace ( {
76+ preventAssignment : true ,
77+ values : {
78+ __BUGSNAG_NOTIFIER_VERSION__ : packageJson . version ,
79+ ...options . additionalReplacements ,
80+ }
81+ } ) ,
82+ nodeResolve ( {
83+ preferBuiltins : true
84+ } ) ,
85+ commonjs ( ) ,
86+ typescript ( {
87+ tsconfig : './tsconfig.json' ,
88+ declarationDir : 'dist/cjs' ,
89+ outDir : 'dist/cjs' ,
90+ noEmitOnError : true
91+ } ) ,
92+ {
93+ name : 'emit-cjs-package-json' ,
94+ generateBundle ( ) {
95+ this . emitFile ( {
96+ type : 'asset' ,
97+ fileName : 'package.json' ,
98+ source : JSON . stringify ( { type : 'commonjs' } , null , 2 )
99+ } ) ;
100+ }
101+ } ,
102+ ...( options . plugins ?? [ ] )
103+ ]
104+ }
105+ ]
106+ }
107+
108+ export default createRollupConfig
0 commit comments