strapi/packages/core/helper-plugin/webpack.config.js

70 lines
1.5 KiB
JavaScript
Raw Normal View History

const webpack = require('webpack');
const { ESBuildMinifyPlugin } = require('esbuild-loader');
const packageJson = require('./package.json');
const nodeModules = [];
[
2022-08-11 10:40:09 +02:00
...Object.keys(packageJson.dependencies || {}),
...Object.keys(packageJson.peerDependencies || {}),
...Object.keys(packageJson.devDependencies || {}),
2022-08-08 23:33:39 +02:00
].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',
}),
],
};