website/config/webpack.dev.config.js
2018-01-30 11:16:03 +03:00

102 lines
2.8 KiB
JavaScript

const webpack = require('webpack');
const path = require('path');
const UglifyJSPlugin = require('uglifyjs-webpack-plugin');
const HtmlWebpackPlugin = require('html-webpack-plugin');
const ExtractTextPlugin = require("extract-text-webpack-plugin");
const CopyWebpackPlugin = require('copy-webpack-plugin');
const extractSass = new ExtractTextPlugin({
filename: "[name].css",
disable: process.env.NODE_ENV === "development"
});
module.exports = {
entry: path.resolve(__dirname, '../assets/js/main.js'),
devtool: "source-map",
output: {
path: path.resolve(__dirname, '../app'),
filename: "[name].js"
},
module: {
rules: [
{
test: /\.js$/,
exclude: /(node_modules|bower_components)/,
loader: 'babel-loader',
query: {
presets: ['es2015']
}
},
{
test: /\.pug$/,
exclude: /(node_modules|bower_components)/,
use: [
'html-loader',
{
loader: 'pug-html-loader',
options: {
exports: false
}
}
]
},
{
test: /\.inline.svg$/,
loader: 'svg-inline-loader',
},
{
test: /^((?!inline).)*.svg$/,
exclude: /node_modules/,
loader: 'file-loader?name=static/[name].[ext]'
},
{
test: /\.(png|jpg|jpeg|gif)$/,
exclude: /node_modules/,
loader: 'file-loader?name=static/[name].[ext]'
},
{
test: /\.scss$/,
use: extractSass.extract({
use: [{
loader: "css-loader"
}, {
loader: "sass-loader"
}],
fallback: "style-loader"
})
}
]
},
plugins: [
new webpack.optimize.UglifyJsPlugin({
include: /\.min\.js$/,
minimize: true
}),
new HtmlWebpackPlugin({
filename: 'index.html',
template: path.resolve(__dirname, '../assets/templates/index.pug')
}),
new HtmlWebpackPlugin({
filename: 'about.html',
template: path.resolve(__dirname, '../assets/templates/about.pug')
}),
new CopyWebpackPlugin([{
from: path.resolve(__dirname, '../assets/img/favicon.png'),
to: "static/favicon.png"
}]),
extractSass
],
stats: {
colors: true
},
};