75 lines
1.9 KiB
JavaScript
75 lines
1.9 KiB
JavaScript
const defaultConfig = require("@wordpress/scripts/config/webpack.config");
|
||
const path = require("path");
|
||
const CopyWebpackPlugin = require("copy-webpack-plugin");
|
||
const MiniCssExtractPlugin = require("mini-css-extract-plugin");
|
||
const CssMinimizerPlugin = require("css-minimizer-webpack-plugin");
|
||
|
||
module.exports = {
|
||
...defaultConfig,
|
||
cache: {
|
||
type: "filesystem", // Enable filesystem caching for faster builds
|
||
},
|
||
|
||
entry: {
|
||
"oc-plugins-page": "./src/PluginsPage.js", // Plugins Page
|
||
"oc-advance-error-page": './modules/error-page/src/ErrorPage.js'
|
||
},
|
||
|
||
output: {
|
||
path: path.resolve(__dirname, "./assets/js/block-scripts/"), // Common output path
|
||
filename: "[name].js",
|
||
},
|
||
|
||
mode: "production", // Ensure minification
|
||
|
||
externals: {
|
||
react: "React", // Use WordPress’s React
|
||
"react-dom": "ReactDOM", // Use WordPress’s ReactDOM
|
||
"@wordpress/components": "wp.components",
|
||
"@wordpress/element": "wp.element",
|
||
"@wordpress/data": "wp.data",
|
||
"@wordpress/i18n": "wp.i18n",
|
||
"@wordpress/api-fetch": "wp.apiFetch",
|
||
},
|
||
|
||
module: {
|
||
rules: [
|
||
{
|
||
test: /\.js$/, // Process JavaScript and JSX files
|
||
exclude: /node_modules/,
|
||
use: {
|
||
loader: "babel-loader",
|
||
options: {
|
||
presets: ["@babel/preset-env", "@babel/preset-react"], // Ensure React JSX support
|
||
},
|
||
},
|
||
},
|
||
{
|
||
test: /\.css$/,
|
||
use: [MiniCssExtractPlugin.loader, "css-loader"], // Process CSS files
|
||
},
|
||
],
|
||
},
|
||
|
||
optimization: {
|
||
minimizer: [
|
||
`...`, // Keep existing minimizers (JS, etc.)
|
||
new CssMinimizerPlugin(), // Minifies CSS
|
||
],
|
||
},
|
||
|
||
plugins: [
|
||
new MiniCssExtractPlugin({
|
||
filename: "../css/[name].min.css", // Output minified CSS
|
||
}),
|
||
new CopyWebpackPlugin({
|
||
patterns: [
|
||
{
|
||
from: path.resolve(__dirname, 'node_modules/@group.one/gravity/dist/css/brands/one.css'),
|
||
to: path.resolve(__dirname, './assets/min-css/one.min.css'), // Minified file output
|
||
noErrorOnMissing: false,
|
||
},
|
||
],
|
||
}),
|
||
],
|
||
}; |