/* eslint-disable */ const path = require('path'); const merge = require('webpack-merge'); const common = require('./webpack.web.common.js'); const {exec} = require('child_process'); const CopyPlugin = require('copy-webpack-plugin'); const webpack = require('webpack'); /* global module */ module.exports = merge(common, { mode: 'development', devtool: 'inline-source-map', plugins: [ new CopyPlugin([ { from: './src/entry.js', to: 'script.js' } ]), new webpack.DefinePlugin({ __git_commit__: null }) ], devServer: { client: false, webSocketServer: false, magicHtml: false, liveReload: false, hot: false, https: true, port: 8000, compress: true, allowedHosts: [ '.twitch.tv', '.frankerfacez.com' ], static: { directory: path.join(__dirname, 'dev_cdn'), }, devMiddleware: { publicPath: '/script/', }, proxy: { '**': { target: 'https://cdn.frankerfacez.com/', changeOrigin: true } }, onBeforeSetupMiddleware(devServer) { const app = devServer.app; // Because the headers config option is broken. app.get('/*', (req, res, next) => { res.setHeader('Access-Control-Allow-Origin', '*'); next(); }); app.get('/update_font', (req, res) => { const proc = exec('npm run font:save'); proc.stdout.on('data', data => { console.log('FONT>>', data); }); proc.stderr.on('data', data => { console.error('FONT>>', data); }); proc.on('close', code => { console.log('FONT>> Exited with code', code); res.redirect(req.headers.referer); }); }); app.get('/dev_server', (req, res) => { res.json({ path: process.cwd(), version: 2 }) }); } }, output: { publicPath: '//localhost:8000/script/', filename: '[name].js', jsonpFunction: 'ffzWebpackJsonp', crossOriginLoading: 'anonymous' } })