@@ -20,6 +20,8 @@ import {
20
20
} from './plugins/index.js' ;
21
21
import { mergePlugins } from './utils' ;
22
22
23
+ const BUNDLE_VARIANTS = [ '.js' , '.min.js' , '.debug.min.js' ] ;
24
+
23
25
export function makeBaseBundleConfig ( options ) {
24
26
const { bundleType, entrypoints, jsVersion, licenseTitle, outputFileBase, packageSpecificConfig } = options ;
25
27
@@ -128,37 +130,45 @@ export function makeBaseBundleConfig(options) {
128
130
* @param baseConfig The rollup config shared by the entire package
129
131
* @returns An array of versions of that config
130
132
*/
131
- export function makeBundleConfigVariants ( baseConfig ) {
133
+ export function makeBundleConfigVariants ( baseConfig , options = { } ) {
134
+ const { variants = BUNDLE_VARIANTS } = options ;
135
+
132
136
const includeDebuggingPlugin = makeIsDebugBuildPlugin ( true ) ;
133
137
const stripDebuggingPlugin = makeIsDebugBuildPlugin ( false ) ;
134
138
const terserPlugin = makeTerserPlugin ( ) ;
135
139
136
- // The additional options to use for each variant we're going to create
137
- const variantSpecificConfigs = [
138
- {
140
+ // The additional options to use for each variant we're going to create.
141
+ const variantSpecificConfigMap = {
142
+ '.js' : {
139
143
output : {
140
144
entryFileNames : chunkInfo => `${ baseConfig . output . entryFileNames ( chunkInfo ) } .js` ,
141
145
} ,
142
146
plugins : [ includeDebuggingPlugin ] ,
143
147
} ,
148
+
149
+ '.min.js' : {
144
150
output : {
145
151
entryFileNames : chunkInfo => `${ baseConfig . output . entryFileNames ( chunkInfo ) } .min.js` ,
146
152
} ,
147
153
plugins : [ stripDebuggingPlugin , terserPlugin ] ,
148
154
} ,
149
- {
155
+
156
+ '.debug.min.js' : {
150
157
output : {
151
158
entryFileNames : chunkInfo => `${ baseConfig . output . entryFileNames ( chunkInfo ) } .debug.min.js` ,
152
159
} ,
153
160
plugins : [ terserPlugin ] ,
154
161
} ,
155
- ] ;
162
+ } ;
156
163
157
- return variantSpecificConfigs . map ( variant =>
158
- deepMerge ( baseConfig , variant , {
164
+ return variants . map ( variant => {
165
+ if ( ! BUNDLE_VARIANTS . includes ( variant ) ) {
166
+ throw new Error ( `Unknown bundle variant requested: ${ variant } ` ) ;
167
+ }
168
+ return deepMerge ( baseConfig , variantSpecificConfigMap [ variant ] , {
159
169
// Merge the plugin arrays and make sure the end result is in the correct order. Everything else can use the
160
170
// default merge strategy.
161
171
customMerge : key => ( key === 'plugins' ? mergePlugins : undefined ) ,
162
- } ) ,
163
- ) ;
172
+ } ) ;
173
+ } ) ;
164
174
}
0 commit comments