Using Webpack with Video.js
Video.js, and the playback technologies such as videojs-contrib-hls all work in a Webpack based build environment. Here are several configuration changes specific to Webpack that will get you up and running.
Video.js CSS:
To add the CSS that the player requires, simply add
require('!style-loader!css-loader!video.js/dist/video-js.css')
to the file where the player is also included or initialized.
Handling .eot files in Webpack
In addition to this, you may run into a problem where Webpack does not know how to load .eot files required for IE8 support by default. This can be solved by installing the file-loader and url-loader packages. Install them by running:
npm install --save-dev file-loader url-loader
With both packages installed, simply add the following to you webpack.config file in the 'loaders' section:
{
loader: 'url-loader?limit=100000',
test: /\.(png|woff|woff2|eot|ttf|svg)$/
}
Using Webpack with videojs-contrib-hls
Import the HLS library with a line such as:
import * as HLS from 'videojs-contrib-hls';
In order to use the tech, we must also introduce webworkers with the package 'webworkify-webpack-dropin', run:
npm install --save-dev webworkify-webpack-dropin
To utilize this in your page, simply create an alias in your webpack.config.js file with:
resolve: {
alias: {
webworkify: 'webworkify-webpack-dropin'
}
}
Source maps that use the 'eval' tag are not compatible with webworkify, so this may need to be changed also. Source maps such as 'cheap-eval-module-source-map' should be changed to 'cheap-source-map' or anything else that fits your build without using 'eval' source maps.