@@ -36,40 +36,49 @@ const moduleFormatToDirectory = {
3636const doTestUtilsExist = glob . sync ( testUtilsFilename ) . length > 0 ;
3737
3838/**
39- *
40- * @param {'esm' | 'umd' } format
41- * @param {* } overrides
42- * @returns
39+ * @param {{ format: import('rollup').OutputOptions['format'], useTerser?: boolean, outputNameSuffix?: string } } options
40+ * @returns {import('rollup').OutputOptions }
4341 */
44- const createConfigForFormat = ( format , overrides ) => {
42+ const createOutput = ( { format, useTerser = false , outputNameSuffix = '' } ) => {
43+ return {
44+ dir : moduleFormatToDirectory [ format ] ,
45+ name,
46+ format,
47+ sourcemap : true ,
48+ globals : format === 'umd' ? getUMDGlobals ( ) : { } ,
49+ validate : true ,
50+ interop : 'compat' , // https://rollupjs.org/configuration-options/#output-interop
51+ entryFileNames : `[name]${ outputNameSuffix } .js` ,
52+ plugins : useTerser ? [ terser ( ) ] : [ ] ,
53+ } ;
54+ } ;
55+
56+ /**
57+ * @param {import('rollup').OutputOptions } output
58+ * @param {Partial<import('rollup').RollupOptions> } [overrides]
59+ * @returns {import('rollup').RollupOptions }
60+ */
61+ const createConfigForFormat = ( output , overrides = { } ) => {
62+ /** @type {import('@rollup/plugin-babel').RollupBabelInputPluginOptions } */
63+ const babelOptions = {
64+ babelrc : false ,
65+ babelHelpers : 'bundled' ,
66+ extensions,
67+ configFile : babelConfigPath ,
68+ sourceMaps : true ,
69+ envName : 'production' ,
70+ } ;
71+
72+ /** @type {import('rollup').RollupOptions } */
4573 const formatConfig = {
4674 input : [ 'src/index.ts' ] ,
47- output : {
48- dir : moduleFormatToDirectory [ format ] ,
49- name,
50- format,
51- sourcemap : true ,
52- globals : format === 'umd' ? getUMDGlobals ( ) : { } ,
53- validate : true ,
54- interop : 'compat' , // https://rollupjs.org/configuration-options/#output-interop
55- } ,
75+ output,
5676 plugins : [
5777 nodePolyfills ( ) ,
5878 nodeExternals ( { deps : true } ) ,
5979 nodeResolve ( { extensions } ) ,
60-
61- babel ( {
62- babelrc : false ,
63- babelHelpers : 'bundled' ,
64- extensions,
65- configFile : babelConfigPath ,
66- sourceMaps : true ,
67- envName : 'production' ,
68- } ) ,
69-
80+ babel ( babelConfig ) ,
7081 svgr ( ) ,
71-
72- terser ( ) ,
7382 ] ,
7483 external,
7584 strictDeprecations : true ,
@@ -83,11 +92,32 @@ const createConfigForFormat = (format, overrides) => {
8392 return finalConfig ;
8493} ;
8594
86- const esmConfig = createConfigForFormat ( 'esm' ) ;
87- const umdConfig = createConfigForFormat ( 'umd' ) ;
95+ const esmConfig = createConfigForFormat (
96+ createOutput ( { format : 'esm' , useTerser : true } ) ,
97+ ) ;
98+ const umdConfig = createConfigForFormat (
99+ createOutput ( { format : 'umd' , useTerser : true } ) ,
100+ ) ;
88101
89102const defaultConfig = [ esmConfig , umdConfig ] ;
90103
104+ // configurations for modern dev/prod bundle publishing
105+ // to be used by packages that are included in the experiment
106+ const modernDevProdConfig = createConfigForFormat ( [
107+ createOutput ( { format : 'esm' } ) ,
108+ createOutput ( { format : 'umd' } ) ,
109+ createOutput ( {
110+ format : 'esm' ,
111+ useTerser : true ,
112+ outputNameSuffix : '-min' ,
113+ } ) ,
114+ createOutput ( {
115+ format : 'umd' ,
116+ useTerser : true ,
117+ outputNameSuffix : '-min' ,
118+ } ) ,
119+ ] ) ;
120+
91121// Add additional entry point to UMD build for test-utils if they exist
92122doTestUtilsExist &&
93123 defaultConfig . push (
@@ -108,6 +138,8 @@ doTestUtilsExist &&
108138// FIXME: Figure out a way to get rid of this.
109139// Creates a super-hacky `stories` bundle
110140const storiesExist = glob . sync ( storyGlob ) . length > 0 ;
141+
142+ /** @type {import('rollup').RollupOptions } */
111143const storiesConfig = {
112144 ...esmConfig ,
113145 input : glob . sync ( storyGlob ) [ 0 ] ,
@@ -121,6 +153,6 @@ const storiesConfig = {
121153
122154storiesExist && defaultConfig . push ( storiesConfig ) ;
123155
124- export { esmConfig , storiesConfig , umdConfig } ;
156+ export { modernDevProdConfig , esmConfig , storiesConfig , umdConfig } ;
125157
126158export default defaultConfig ;
0 commit comments