1
0
Fork 0
food-site/webpack.config.js
ChaotiCryptidz 4d5aea6c4f
seporate css
2022-06-02 21:16:35 +01:00

90 lines
2 KiB
JavaScript

const path = require('path');
const TerserPlugin = require("terser-webpack-plugin");
const CssMinimizerPlugin = require('css-minimizer-webpack-plugin');
const HtmlWebpackPlugin = require('html-webpack-plugin');
const MiniCssExtractPlugin = require("mini-css-extract-plugin");
module.exports = {
mode: "production",
cache: false,
entry: './src/main.tsx',
output: {
path: path.resolve(__dirname, 'dist'),
filename: 'bundle.js',
},
stats: {
colors: true,
timings: true,
},
performance: {
hints: false,
},
plugins: [
new HtmlWebpackPlugin({
title: "Chaos's Food Likes/Dislikes",
aseUrl: './',
meta: {
'og:title': { property: 'og:title', content: "Chaos's Food Likes/Dislikes" },
'og:description': { property: 'og:description', content: "A list for all the foods we like, dislike and find ourselves unable to eat due to sensory difficulties." },
},
}),
new MiniCssExtractPlugin(),
],
devServer: {
historyApiFallback: true,
},
resolve: {
modules: ['node_modules'],
extensions: ['.tsx', '.ts', '.js', ".mjs"],
alias: { os: false }
},
module: {
rules: [
{
test: /\.(scss)$/,
use: [MiniCssExtractPlugin.loader, {
loader: 'css-loader',
}, {
loader: 'postcss-loader',
options: {
postcssOptions: {
options: function () {
return [
require('precss'),
require('autoprefixer')
];
}
}
}
}, {
loader: 'sass-loader'
}]
},
{
test: /\.ts(x?)$/,
exclude: /node_modules/,
use: [
{
loader: 'ts-loader'
}
]
},
],
},
optimization: {
minimize: true,
minimizer: [
`...`,
new TerserPlugin({
terserOptions: {
ecma: "2015"
}
}),
new CssMinimizerPlugin(),
],
},
};