137 lines
3.9 KiB
JavaScript
137 lines
3.9 KiB
JavaScript
/**
|
|
* WEBPACK CONFIGURATION
|
|
*/
|
|
|
|
const path = require('path');
|
|
|
|
// include the js minification plugin
|
|
const uglifyJSPlugin = require('uglifyjs-webpack-plugin');
|
|
const webpackBuildNotifierPlugin = require('webpack-build-notifier');
|
|
|
|
// include the css extraction and minification plugins
|
|
const miniCssExtractPlugin = require("mini-css-extract-plugin");
|
|
const optimizeCSSAssetsPlugin = require("optimize-css-assets-webpack-plugin");
|
|
|
|
const BrowserSyncPlugin = require('browser-sync-webpack-plugin');
|
|
|
|
// include webpack variables
|
|
const webpackVariables = require('./webpack.variables');
|
|
|
|
module.exports = {
|
|
entry: webpackVariables.webpackParams['entryPath'],
|
|
output: {
|
|
filename: webpackVariables.webpackParams['jsOutputPath'],
|
|
path: path.resolve(__dirname, './assets/dist')
|
|
},
|
|
module: {
|
|
rules: [
|
|
// perform js babelization on all .js files
|
|
{
|
|
test: /\.js$/,
|
|
exclude: /node_modules/,
|
|
use: {
|
|
loader: "babel-loader",
|
|
options: {
|
|
presets: ['babel-preset-env']
|
|
}
|
|
}
|
|
},
|
|
|
|
// inject CSS to page
|
|
{
|
|
test: /\.css$/,
|
|
use: ['style-loader', 'css-loader']
|
|
},
|
|
|
|
// compile all .scss files to plain old css
|
|
{
|
|
test: /\.(sass|scss)$/,
|
|
use: [
|
|
miniCssExtractPlugin.loader,
|
|
{
|
|
loader: 'css-loader',
|
|
options: {
|
|
sourceMap: true,
|
|
},
|
|
|
|
},
|
|
{
|
|
loader: 'resolve-url-loader',
|
|
options: {
|
|
sourceMap: true,
|
|
},
|
|
},
|
|
{
|
|
loader: 'postcss-loader',
|
|
options: {
|
|
sourceMap: true,
|
|
config: {
|
|
path: 'postcss.config.js'
|
|
}
|
|
},
|
|
},
|
|
{
|
|
loader: 'sass-loader',
|
|
options: {
|
|
sourceMap: true
|
|
}
|
|
}
|
|
]
|
|
},
|
|
// Define fonts and images url from theme dir
|
|
{
|
|
test: /\.(woff|woff2|eot|ttf|otf)$/,
|
|
loader: 'file-loader',
|
|
options: {
|
|
publicPath: '../',
|
|
name: 'fonts/[name].[ext]',
|
|
}
|
|
},
|
|
{
|
|
test: /\.(png|svg|jpg|gif)$/,
|
|
loader: 'file-loader',
|
|
options: {
|
|
publicPath: '../',
|
|
name: 'img/[name].[ext]',
|
|
}
|
|
},
|
|
]
|
|
},
|
|
plugins: [
|
|
// extract css into dedicated file
|
|
new miniCssExtractPlugin({
|
|
filename: webpackVariables.webpackParams['cssOutputPath'],
|
|
path: path.resolve(__dirname, './assets/dist'),
|
|
}),
|
|
|
|
// notifier plugin
|
|
new webpackBuildNotifierPlugin({
|
|
title: "Tamara Checkout - Wordpress Plugin",
|
|
suppressSuccess: true
|
|
}),
|
|
|
|
new BrowserSyncPlugin({
|
|
files: [
|
|
'./**/*.php',
|
|
'./assets/dist/css/*.css',
|
|
'./assets/dist/js/*.js',
|
|
],
|
|
injectChanges: true,
|
|
proxy: 'http://127.0.0.1:15080', // your local url
|
|
}, {
|
|
reload: false
|
|
}),
|
|
],
|
|
|
|
optimization: {
|
|
minimizer: [
|
|
// enable the js minification plugin
|
|
new uglifyJSPlugin({
|
|
cache: true,
|
|
parallel: true
|
|
}),
|
|
// enable the css minification plugin
|
|
new optimizeCSSAssetsPlugin({})
|
|
]
|
|
}
|
|
};
|