text: 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 progressPlugin 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) => {
    // ignore unknow option for --no-progress
    if (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: [
      ['@babel/preset-env', {
        loose: true,
        modules: false
      }]
    ]
  });
  
  const progress = () => {
    if (process.env.TRAVIS || process.env.NETLIFY) {
      return {};
    }
  
    return progressPlugin();
  };
  
  const globals = {
    browser: {
      'global': 'window',
      'global/window': 'window',
      'global/document': 'document'
    },
    module: {
    },
    test: {
      qunit: 'QUnit',
      qunitjs: 'QUnit',
      sinon: 'sinon'
    }
  };
  
  const externals = {
    browser: Object.keys(globals.browser).concat([
    ]),
    module: Object.keys(globals.module).concat([
      'global',
      'global/document',
      'global/window',
      'xhr',
      'tsml',
      'safe-json-parse/tuple',
      'videojs-vtt.js',
      'url-toolkit',
      'm3u8-parser',
      'mpd-parser',
      'mux.js',
      'mux.js/lib/mp4',
      'mux.js/lib/tools/ts-inspector.js',
      'mux.js/lib/mp4/probe',
      'aes-decrypter',
      'keycode'
    ]),
    test: Object.keys(globals.test).concat([
    ])
  };
  
  export default cliargs => [
    // standard umd file
    {
      input: 'src/js/index.js',
      output: {
        format: 'umd',
        file: 'dist/video.js',
        name: 'videojs',
        strict: false,
        banner,
        globals: globals.browser
      },
      external: externals.browser,
      plugins: [
        alias({
          'video.js': path.resolve(__dirname, './src/js/video.js')
        }),
        primedResolve,
        json(),
        primedCjs,
        primedBabel,
        cliargs.progress !== false ? progress() : {}
      ],
      onwarn,
      watch
    },
    // es, cjs
    {
      input: 'src/js/index.js',
      output: [
        {
          format: 'es',
          file: 'dist/video.es.js',
          strict: false,
          banner,
          globals: globals.module
        }, {
          format: 'cjs',
          file: 'dist/video.cjs.js',
          strict: false,
          banner,
          globals: globals.module
        }
      ],
      external: externals.module,
      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() : {}
      ],
      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)),
        globals: globals.browser
      },
      external: externals.browser,
      plugins: [
        primedIgnore,
        alias({
          'video.js': path.resolve(__dirname, './src/js/video.js')
        }),
        primedResolve,
        json(),
        primedCjs,
        primedBabel,
        cliargs.progress !== false ? progress() : {}
      ],
      onwarn,
      watch
    },
    // core
    {
      input: 'src/js/video.js',
      output: {
        format: 'cjs',
        file: 'core.js',
        strict: false,
        banner,
        globals: globals.module
      },
      external: externals.module,
      plugins: [
        json(),
        primedBabel,
        cliargs.progress !== false ? progress() : {}
      ],
      onwarn,
      watch
    },
    // core umd
    {
      input: 'src/js/video.js',
      output: {
        format: 'umd',
        name: 'videojs',
        file: 'dist/alt/video.core.js',
        strict: false,
        banner,
        globals: globals.browser
      },
      external: externals.browser,
      plugins: [
        primedResolve,
        json(),
        primedCjs,
        primedBabel,
        cliargs.progress !== false ? progress() : {}
      ],
      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)),
        globals: globals.browser
      },
      external: externals.browser,
      plugins: [
        primedIgnore,
        primedResolve,
        json(),
        primedCjs,
        primedBabel,
        cliargs.progress !== false ? progress() : {}
      ],
      onwarn,
      watch
    }
  ];
  