oont-contents/plugins/tamara-checkout/webpack.config.js
2025-02-08 15:10:23 +01:00

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({})
]
}
};