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

100 lines
2.1 KiB
JavaScript
Raw Normal View History

2023-01-26 16:07:49 +00:00
const webpack = require("webpack");
const { ESBuildMinifyPlugin } = require("esbuild-loader");
const browserslistToEsbuild = require("browserslist-to-esbuild");
2023-01-26 16:07:49 +00:00
const packageJson = require("./package.json");
const nodeModules = [];
2023-01-26 16:07:49 +00:00
Object.keys(packageJson.dependencies).forEach((module) => {
nodeModules.push(new RegExp(`^${module}(/.+)?$`));
});
/** @type {Omit<import('webpack').Configuration, 'output'>} */
const baseConfig = {
entry: `${__dirname}/lib/src/index.js`,
externals: nodeModules,
mode: process.env.NODE_ENV,
2023-01-26 16:07:49 +00:00
devtool: process.env.NODE_ENV === "production" ? false : "eval-source-map",
optimization: {
2023-01-26 16:07:49 +00:00
minimize: process.env.NODE_ENV === "production",
minimizer: [
new ESBuildMinifyPlugin({
2023-01-26 16:07:49 +00:00
target: "es2015",
}),
],
},
module: {
rules: [
{
test: /\.m?jsx?$/,
use: {
2023-01-26 16:07:49 +00:00
loader: require.resolve("esbuild-loader"),
options: {
2023-01-26 16:07:49 +00:00
loader: "jsx",
2023-01-06 11:54:09 +00:00
target: browserslistToEsbuild(),
},
},
},
{
test: /\.(png|svg|jpg|gif)$/,
2023-01-26 16:07:49 +00:00
type: "asset",
parser: {
dataUrlCondition: {
maxSize: 8192,
},
},
},
],
},
resolve: {
2023-01-26 16:07:49 +00:00
extensions: ["*", ".js"],
cacheWithContext: false,
},
plugins: [
new webpack.EnvironmentPlugin({
2023-01-26 16:07:49 +00:00
NODE_ENV: "production",
}),
],
};
/** @type {import('webpack').Configuration[]} */
const config = [
{
...baseConfig,
output: {
path: `${__dirname}/build`,
filename: `helper-plugin.${process.env.NODE_ENV}.js`,
library: {
2023-01-26 16:07:49 +00:00
name: "helperPlugin",
type: "umd",
},
umdNamedDefine: true,
},
},
{
...baseConfig,
output: {
path: `${__dirname}/build`,
filename: `helper-plugin.esm.js`,
library: {
2023-01-26 16:07:49 +00:00
type: "module",
},
},
experiments: {
outputModule: true,
},
},
{
...baseConfig,
output: {
path: `${__dirname}/build`,
filename: `helper-plugin.cjs.js`,
library: {
2023-01-26 16:07:49 +00:00
type: "commonjs",
},
},
},
];
module.exports = config;