Skip to content

Commit c583cf0

Browse files
committed
feat(player): include separate default and plyr layout cdn imports
1 parent cd7e8da commit c583cf0

3 files changed

Lines changed: 47 additions & 12 deletions

File tree

packages/vidstack/rollup.config.js

Lines changed: 39 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -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
},
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
import '../player';
2+
import '../player-layouts/default';
3+
import '../player-ui';
4+
import '../icons';
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
import '../player';
2+
import '../player-layouts/plyr';
3+
import '../player-ui';
4+
import '../icons';

0 commit comments

Comments
 (0)