Files
WYGIWYH/frontend/webpack/webpack.common.js
2024-10-30 16:07:32 -03:00

77 lines
2.1 KiB
JavaScript

const glob = require("glob");
const Path = require("path");
const {CleanWebpackPlugin} = require("clean-webpack-plugin");
const CopyWebpackPlugin = require("copy-webpack-plugin");
const WebpackAssetsManifest = require("webpack-assets-manifest");
// eslint-disable-next-line no-unused-vars
const webpack = require("webpack");
const getEntryObject = () => {
const entries = {};
glob.sync(Path.join(__dirname, "../src/application/*.js")).forEach((path) => {
const name = Path.basename(path, ".js");
entries[name] = path;
});
return entries;
};
module.exports = {
entry: getEntryObject(),
output: {
path: Path.join(__dirname, "../build"),
filename: "js/[name].js",
publicPath: "/static/",
assetModuleFilename: "[path][name][ext]",
},
// optimization: {
// splitChunks: {
// chunks: "all",
// },
//
// runtimeChunk: "single",
// },
plugins: [
new CleanWebpackPlugin(),
new CopyWebpackPlugin({
patterns: [
{from: Path.resolve(__dirname, "../vendors"), to: "vendors"},
],
}),
new CopyWebpackPlugin({
patterns: [
{from: Path.resolve(__dirname, "../assets"), to: "assets"},
],
}),
new WebpackAssetsManifest({
entrypoints: true,
output: "manifest.json",
writeToDisk: true,
publicPath: true,
}),
],
resolve: {
alias: {
"~": Path.resolve(__dirname, "../src"),
jquery: "jquery/dist/jquery"
},
},
module: {
rules: [
{
test: /\.mjs$/,
include: /node_modules/,
type: "javascript/auto",
},
{
test: /\.(ico|jpg|jpeg|png|gif|eot|otf|webp|svg|ttf|woff|woff2)(\?.*)?$/,
type: "asset",
},
{
test: /\.css$/i,
include: Path.resolve(__dirname, 'src'),
use: ['style-loader', 'css-loader', 'postcss-loader'],
},
],
},
};