You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

102 lines
2.4 KiB

5 years ago
const path = require('path');
5 years ago
const autoprefixer = require('autoprefixer');
const TerserPlugin = require('terser-webpack-plugin');
5 years ago
module.exports = [{
mode: "development", // "production" | "development" | "none"
entry: {
5 years ago
entry: ['./src/scss/index.scss', './src/ts/index.ts']
5 years ago
},
devtool: 'inline-source-map',
output: {
5 years ago
filename: 'bundle.js',
path: path.resolve(__dirname, 'dist'),
publicPath: '../dist/',
},
devServer:{
contentBase: path.join(__dirname, 'src'),
compress: false, // gzip
port: 8080,
publicPath: '/dist/'
5 years ago
},
module: {
rules: [{
test: /\.(png|jpg|gif|svg)$/,
exclude: [
path.resolve(__dirname, './node_modules'),
],
use: {
loader: 'file-loader',
options: {
name(file) {
// if (process.env.NODE_ENV === 'development') {
// return '[path][name].[ext]';
// }
// return '[hash].[ext]';
return '[name].[ext]';
},
outputPath: 'images',
},
},
},
{
5 years ago
test: /\.scss$/,
use: [{
5 years ago
loader: 'file-loader',
options: {
name: 'bundle.css',
},
},
{
loader: 'extract-loader'
},
{
loader: 'css-loader'
},
5 years ago
{
loader: 'postcss-loader',
options: {
plugins: () => [autoprefixer()]
5 years ago
}
},
// tooooooo slow!
{
loader: 'sass-loader',
5 years ago
options: {
sourceMap: true,
sassOptions: {
includePaths: ['./node_modules']
},
}
5 years ago
},
// source-map not supported in fast-sass-loader!
// {
// loader: 'fast-sass-loader',
// options: {
// includePaths: ['./node_modules']
// }
// },
5 years ago
]
},
{
test: /\.tsx?$/,
use: [{
loader: 'babel-loader',
query: {
presets: ['@babel/preset-typescript'],
5 years ago
},
}, ],
5 years ago
exclude: /node_modules/
},
5 years ago
]
},
resolve: {
extensions: ['.tsx', '.ts', '.js']
},
optimization: {
minimize: true,
minimizer: [new TerserPlugin({
sourceMap: false,
})],
},
5 years ago
}];