1
0
mirror of https://github.com/videojs/video.js.git synced 2024-12-10 11:10:19 +02:00
video.js/rollup.config.js
2018-06-04 15:24:43 -04:00

197 lines
4.2 KiB
JavaScript

import path from 'path';
import fs from 'fs';
import babel from 'rollup-plugin-babel';
import resolve from 'rollup-plugin-node-resolve';
import commonjs from 'rollup-plugin-commonjs';
import json from 'rollup-plugin-json';
import filesize from 'rollup-plugin-filesize';
import progress from 'rollup-plugin-progress';
import ignore from 'rollup-plugin-ignore';
import alias from 'rollup-plugin-alias';
import _ from 'lodash';
import pkg from './package.json';
const compiledLicense = _.template(fs.readFileSync('./build/license-header.txt', 'utf8'));
const bannerData = _.pick(pkg, ['version', 'copyright']);
const banner = compiledLicense(Object.assign({includesVtt: true}, bannerData));
const watch = {
clearScreen: false
};
const onwarn = (warning) => {
if (warning.code === 'UNUSED_EXTERNAL_IMPORT' ||
warning.code === 'UNRESOLVED_IMPORT' ||
(warning.code === 'UNKNOWN_OPTION' &&
warning.message.indexOf('progress') !== -1)) {
return;
}
// eslint-disable-next-line no-console
console.warn(warning.message);
};
const primedIgnore = ignore(['videojs-vtt.js']);
const primedResolve = resolve({
jsnext: true,
main: true,
browser: true
});
const primedCjs = commonjs({
sourceMap: false
});
const primedBabel = babel({
babelrc: false,
exclude: 'node_modules/**(!http-streaming)',
compact: false,
presets: [
['es2015', {
loose: true,
modules: false
}]
],
plugins: ['external-helpers']
});
export default cliargs => [
// standard umd file
{
input: 'src/js/index.js',
output: {
format: 'umd',
file: 'dist/video.js',
name: 'videojs',
strict: false,
banner
},
plugins: [
alias({
'video.js': path.resolve(__dirname, './src/js/video.js')
}),
primedResolve,
json(),
primedCjs,
primedBabel,
cliargs.progress !== false ? progress() : {},
filesize()
],
onwarn,
watch
},
// es, cjs
{
input: 'src/js/index.js',
output: [
{
format: 'es',
file: 'dist/video.es.js',
strict: false,
banner
}, {
format: 'cjs',
file: 'dist/video.cjs.js',
strict: false,
banner
}
],
plugins: [
alias({
'video.js': path.resolve(__dirname, './src/js/video.js'),
'@videojs/http-streaming': path.resolve(__dirname, './node_modules/@videojs/http-streaming/dist/videojs-http-streaming.es.js')
}),
json(),
primedBabel,
cliargs.progress !== false ? progress() : {},
filesize()
],
onwarn,
watch
},
// novtt umd
{
input: 'src/js/index.js',
output: {
format: 'umd',
file: 'dist/alt/video.novtt.js',
name: 'videojs',
strict: false,
banner: compiledLicense(Object.assign({includesVtt: true}, bannerData))
},
plugins: [
primedIgnore,
alias({
'video.js': path.resolve(__dirname, './src/js/video.js')
}),
primedResolve,
json(),
primedCjs,
primedBabel,
cliargs.progress !== false ? progress() : {},
filesize()
],
onwarn,
watch
},
// core
{
input: 'src/js/video.js',
output: {
format: 'cjs',
file: 'core.js',
strict: false,
banner
},
plugins: [
json(),
primedBabel,
cliargs.progress !== false ? progress() : {},
filesize()
],
onwarn,
watch
},
// core umd
{
input: 'src/js/video.js',
output: {
format: 'umd',
name: 'videojs',
file: 'dist/alt/video.core.js',
strict: false,
banner
},
plugins: [
primedResolve,
json(),
primedCjs,
primedBabel,
cliargs.progress !== false ? progress() : {},
filesize()
],
onwarn,
watch
},
// core novtt umd
{
input: 'src/js/video.js',
output: {
format: 'umd',
name: 'videojs',
file: 'dist/alt/video.core.novtt.js',
strict: false,
banner: compiledLicense(Object.assign({includesVtt: true}, bannerData))
},
plugins: [
primedIgnore,
primedResolve,
json(),
primedCjs,
primedBabel,
cliargs.progress !== false ? progress() : {},
filesize()
],
onwarn,
watch
}
];