strapi/packages/core/helper-plugin/webpack.config.js
2022-10-27 15:45:14 +02:00

70 lines
1.5 KiB
JavaScript

const webpack = require('webpack');
const { ESBuildMinifyPlugin } = require('esbuild-loader');
const packageJson = require('./package.json');
const nodeModules = [];
[
...Object.keys(packageJson.dependencies || {}),
...Object.keys(packageJson.peerDependencies || {}),
...Object.keys(packageJson.devDependencies || {}),
].forEach((module) => {
nodeModules.push(new RegExp(`^${module}(/.+)?$`));
});
module.exports = {
entry: `${__dirname}/lib/src/index.js`,
externals: nodeModules,
mode: process.env.NODE_ENV,
devtool: process.env.NODE_ENV === 'production' ? false : 'eval-source-map',
optimization: {
minimize: process.env.NODE_ENV === 'production',
minimizer: [
new ESBuildMinifyPlugin({
target: 'es2015',
}),
],
},
output: {
path: `${__dirname}/build`,
filename: `helper-plugin.${process.env.NODE_ENV}.js`,
library: {
name: 'helperPlugin',
type: 'umd',
},
umdNamedDefine: true,
},
module: {
rules: [
{
test: /\.m?jsx?$/,
use: {
loader: require.resolve('esbuild-loader'),
options: {
loader: 'jsx',
target: 'es2015',
},
},
},
{
test: /\.(png|svg|jpg|gif)$/,
type: 'asset',
parser: {
dataUrlCondition: {
maxSize: 8192,
},
},
},
],
},
resolve: {
extensions: ['*', '.js'],
cacheWithContext: false,
},
plugins: [
new webpack.EnvironmentPlugin({
NODE_ENV: 'production',
}),
],
};