@@ -27,8 +27,10 @@ const NPM_EXTERNAL_PACKAGES = ['hls.js', 'media-captions', 'media-icons'],
2727 ] ,
2828 CDN_BUNDLES = [
2929 defineCDNBundle ( { dev : true } ) ,
30- defineCDNBundle ( ) ,
31- defineCDNBundle ( { layouts : true } ) ,
30+ defineCDNBundle ( { dev : false } ) ,
31+ defineCDNBundle ( { layout : 'all' } ) ,
32+ defineCDNBundle ( { layout : 'default' } ) ,
33+ defineCDNBundle ( { layout : 'plyr' } ) ,
3234 ] ,
3335 PLUGIN_BUNDLES = definePluginsBundle ( ) ,
3436 TYPES_BUNDLES = defineTypesBundle ( ) ;
@@ -216,33 +218,58 @@ function defineNPMBundle({ target, type, minify }) {
216218 } ;
217219}
218220
219- /** @returns {import('rollup').RollupOptions } */
220- function defineCDNBundle ( { dev = false , layouts = false } = { } ) {
221- const input =
222- dev || layouts
223- ? 'src/elements/bundles/cdn/player-with-layouts.ts'
224- : 'src/elements/bundles/cdn/player.ts' ,
225- output = dev ? `vidstack.dev` : `vidstack` ;
221+ /**
222+ * @param {{ dev?: boolean; layout?: 'all' | 'default' | 'plyr' } } options
223+ * @returns {import('rollup').RollupOptions }
224+ */
225+ function defineCDNBundle ( { dev = false , layout } = { } ) {
226+ function getInput ( ) {
227+ if ( ! dev && ! layout ) {
228+ return 'src/elements/bundles/cdn/player.ts' ;
229+ } else if ( dev || layout === 'all' ) {
230+ return 'src/elements/bundles/cdn/player-with-layouts.ts' ;
231+ } else if ( layout === 'default' ) {
232+ return 'src/elements/bundles/cdn/player-with-default.ts' ;
233+ } else if ( layout === 'plyr' ) {
234+ return 'src/elements/bundles/cdn/player-with-plyr.ts' ;
235+ }
236+ }
237+
238+ function getOutputDir ( ) {
239+ if ( dev || ! layout ) {
240+ return 'cdn' ;
241+ } else if ( layout === 'all' ) {
242+ return 'cdn/with-layouts' ;
243+ } else if ( layout === 'default' ) {
244+ return 'cdn/with-layouts/default' ;
245+ } else if ( layout === 'plyr' ) {
246+ return 'cdn/with-layouts/plyr' ;
247+ }
248+ }
249+
250+ const input = getInput ( ) ,
251+ outputFile = dev ? `vidstack.dev` : `vidstack` ;
252+
226253 return {
227254 ...defineNPMBundle ( {
228255 type : dev ? 'dev' : 'prod' ,
229256 minify : ! dev ,
230257 target : 'es2020' ,
231258 } ) ,
232259 input : {
233- [ output ] : input ,
260+ [ outputFile ] : input ,
234261 ...getProviderInputs ( ) ,
235262 } ,
236263 output : {
237264 format : 'esm' ,
238- dir : dev || ! layouts ? 'cdn' : 'cdn/with-layouts' ,
265+ dir : getOutputDir ( ) ,
239266 chunkFileNames : `chunks/vidstack-[hash].js` ,
240267 paths : {
241268 'media-icons' : 'https://cdn.jsdelivr.net/npm/media-icons@next/dist/lazy.js' ,
242269 'media-captions' : 'https://cdn.jsdelivr.net/npm/media-captions@next/dist/prod.js' ,
243270 } ,
244271 manualChunks ( id ) {
245- if ( dev ) return output ; // no chunks in dev
272+ if ( dev ) return outputFile ; // no chunks in dev
246273 if ( id . includes ( 'maverick' ) || id . includes ( '@floating-ui' ) ) return 'frameworks' ;
247274 return null ;
248275 } ,
0 commit comments