Current section

Files

Jump to
gen_template_dino_live_view template $PROJECT_NAME$ assets webpack.config.js
Raw

template/$PROJECT_NAME$/assets/webpack.config.js

const path = require("path");
const glob = require("glob");
const MiniCssExtractPlugin = require("mini-css-extract-plugin");
const TerserPlugin = require("terser-webpack-plugin");
const CopyWebpackPlugin = require("copy-webpack-plugin");
module.exports = (env, options) => {
const devMode = options.mode !== "production";
return {
optimization: {
minimizer: [
new TerserPlugin({ parallel: true }),
],
},
entry: {
"./js/app.js": glob.sync("./vendor/**/*.js").concat(["./js/app.js"]),
},
output: {
filename: "app.js",
path: path.resolve(__dirname, "../priv/static/js"),
},
module: {
rules: [
{
test: /\.js$/,
exclude: /node_modules/,
use: {
loader: "babel-loader",
},
},
{
test: /\.css$/,
use: [
MiniCssExtractPlugin.loader,
"css-loader",
{
loader: "postcss-loader",
options: {
postcssOptions: {
ident: "postcss",
plugins: [
require("postcss-import"),
require("tailwindcss")("./tailwind.config.js"),
require("postcss-preset-env")({ stage: 1 }),
],
},
},
},
],
},
],
},
plugins: [
new MiniCssExtractPlugin({ filename: "../css/app.css" }),
new CopyWebpackPlugin({ patterns: [{ from: "static/", to: "../" }] }),
],
};
};