coinplayer
Version:
Zhihu Video Player
118 lines (108 loc) • 2.88 kB
JavaScript
const HtmlWebpackPlugin = require('html-webpack-plugin')
module.exports = env => {
const isProduction = env === 'production'
return {
mode: isProduction ? 'production' : 'development',
entry: {
main: './main/index.js',
iframe: './iframe/index.js',
inline: './inline/index.js',
fmp4: './fmp4/index.js',
hls: './hls/index.js',
mp4: './mp4/index.js',
},
resolve: {
alias: {
'react-dom': '@hot-loader/react-dom',
},
mainFields: ['source', 'browser', 'module', 'main'],
},
devServer: {
disableHostCheck: true,
port: 8000,
proxy: {
'/mp4': {
target: 'https://zhstatic.zhihu.com/cfe/griffith/',
pathRewrite: {'^/mp4': ''},
changeOrigin: true,
secure: false,
},
'/vzuu': {
target: 'https://vdn1.vzuu.com/',
pathRewrite: {'^/vzuu': ''},
changeOrigin: true,
secure: false,
},
},
},
devtool: 'cheap-module-eval-source-map',
module: {
rules: [
{
test: /\.js$/,
oneOf: [
{
exclude: /node_modules/,
loader: 'babel-loader',
options: {
cacheDirectory: true,
presets: ['@babel/preset-env', '@babel/preset-react'],
plugins: [
'@babel/plugin-proposal-class-properties',
'react-hot-loader/babel',
],
},
},
],
},
],
},
optimization: {
splitChunks: {
cacheGroups: {
vendor: {
chunks: 'initial',
name: 'vendor',
test: /[\\/]node_modules[\\/]/,
},
common: {
chunks: 'initial',
name: 'common',
test: /packages\/griffith/,
},
},
},
},
plugins: [
new HtmlWebpackPlugin({
template: './main/index.html',
chunks: ['main', 'common', 'vendor'],
}),
new HtmlWebpackPlugin({
template: './iframe/index.html',
filename: 'iframe.html',
chunks: ['iframe', 'common', 'vendor'],
}),
new HtmlWebpackPlugin({
template: './inline/index.html',
filename: 'inline.html',
chunks: ['inline', 'common', 'vendor'],
}),
new HtmlWebpackPlugin({
template: './fmp4/index.html',
filename: 'fmp4.html',
chunks: ['fmp4', 'common', 'vendor'],
}),
new HtmlWebpackPlugin({
template: './hls/index.html',
filename: 'hls.html',
chunks: ['hls', 'common', 'vendor'],
}),
new HtmlWebpackPlugin({
template: './mp4/index.html',
filename: 'mp4.html',
chunks: ['mp4', 'common', 'vendor'],
}),
],
}
}