mirror of
https://github.com/videojs/video.js.git
synced 2024-11-28 08:58:46 +02:00
97db94e8a6
This is upgrades rollup and uglify to latest versions. It also rewrites the rollup config to take advantage of the newest features of rollup. Minification is also split up into a separate process, mostly to speed up the build. The total build type can go down from about 2.5 minutes to around 1 minute for all the generated javascript files.
195 lines
4.2 KiB
JavaScript
195 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 => [
|
|
// 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
|
|
},
|
|
// 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
|
|
},
|
|
// 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: 'cjs',
|
|
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: 'cjs',
|
|
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
|
|
}
|
|
];
|