const path = require('path');
const HtmlWebpackPlugin = require('html-webpack-plugin');
const MiniCssExtractPlugin = require('mini-css-extract-plugin');
const request = require("request");
module.exports = {
entry: {
AVideo: './src/App.ts'
},
output: {
path: path.resolve(__dirname, 'dist'),
filename: '[name].min.js'
},
devServer: {
contentBase: path.join(__dirname, 'dist'),
compress: true,
port: 9000,
allowedHosts: [
'txmov2.a.yximgs.com'
],
before(app) {
app.all('*', function (req, res, next) {
res.header('Access-Control-Allow-Origin', '*');
res.header('Access-Control-Allow-Headers', 'Content-Type');
res.header('Access-Control-Allow-Methods', '*');
next();
});
app.get('/check/url', async function(req, res) {
const options = { url: req.query.url, headers: { range: 'bytes=0-50' } };
request(options, async (error, response, body) => {
await res.json({ result: response.headers['content-type'] });
});
});
}
},
resolve: {
extensions: ['.ts', '.js', '.json']
},
module: {
rules: [
{
test: /\.tsx?$/,
use: { loader: 'ts-loader' }
},
{
test: /\.less$/,
use: [
{
loader: MiniCssExtractPlugin.loader,
options: {
publicPaht: '../'
}
},
'css-loader', 'less-loader'
]
},
{
test: /\.pug$/,
use: ["pug-loader"]
},
]
},
plugins: [
new HtmlWebpackPlugin({
template: path.join(__dirname, './src/index.pug')
}),
new MiniCssExtractPlugin({
filename: '[name].min.css'
})
]
};