metropolis/webpack.config.js

71 lines
1.4 KiB
JavaScript

const path = require('path');
const HtmlWebpackPlugin = require('html-webpack-plugin');
const MiniCssExtractPlugin = require('mini-css-extract-plugin');
module.exports = {
cache: true,
entry: './frontend/src/main.ts',
output: {
path: path.resolve(__dirname, 'dist', 'frontend'),
filename: 'main.bundle.js',
},
module: {
rules: [
{
test: /\.ts$/,
exclude: /node_modules/,
use: [
{
loader: 'babel-loader',
options: {
presets: ['@babel/env'],
},
},
{
loader: 'ts-loader',
},
],
},
{
test: /\.hbs$/,
use: {
loader: 'handlebars-loader',
},
},
{
test: /\.scss$/,
use: [
{
loader: MiniCssExtractPlugin.loader,
},
{
loader: 'css-loader',
},
{
loader: 'postcss-loader',
options: {
postcssOptions: {
plugins: ['postcss-preset-env'],
},
},
},
{
loader: 'sass-loader',
options: {
sourceMap: true,
},
},
],
},
],
},
plugins: [
new HtmlWebpackPlugin({
title: 'metropolis',
}),
new MiniCssExtractPlugin({
filename: 'css/style.css',
}),
],
};