strapi/packages/core/helper-plugin/webpack.config.js
markkaylor 917a40b555
refactor(helper-plugin): migrate to TS (#17746)
Co-authored-by: Fernando Chávez <fc9chavez@gmail.com>
Co-authored-by: Josh <37798644+joshuaellis@users.noreply.github.com>
Co-authored-by: markkaylor <mark.kaylor@strapi.io>
Co-authored-by: Mark Kaylor <mark.kaylor@strapi.io>
Co-authored-by: Madhuri Sandbhor <madhurisandbhor@gmail.com>
Co-authored-by: Jackson Hammond <malts18@gmail.com>
Co-authored-by: yurimutti <muttiyuri@gmail.com>
Co-authored-by: Fernando Chávez <fernando.chavez@strapi.io>
Co-authored-by: GJunior <samaritanojr006@gmail.com>
Co-authored-by: Milan K <57148574+mkcy3@users.noreply.github.com>
Co-authored-by: Rémi de Juvigny <remi.dejuvigny@strapi.io>
Co-authored-by: boris.shulyak <borysshulyak@gmail.com>
Co-authored-by: Alec Winter <34278963+nolliebigspin@users.noreply.github.com>
Co-authored-by: Boris Shulyak <55171497+BorysShulyak@users.noreply.github.com>
Co-authored-by: 0xATHERIS <ath3ris@proton.me>
Co-authored-by: Andrew <112592168+fletch-r@users.noreply.github.com>
Co-authored-by: Rémi de Juvigny <8087692+remidej@users.noreply.github.com>
Co-authored-by: Dallas Clark <542948+dallasclark@users.noreply.github.com>
Co-authored-by: Okorare Tega <contact@tegacreatives.com>
Co-authored-by: Júlíus Guðni <julius@extis.one>
Co-authored-by: Simone <startae14@gmail.com>
2023-09-15 10:08:21 +02:00

92 lines
2.1 KiB
JavaScript

const browserslistToEsbuild = require('browserslist-to-esbuild');
const { ESBuildMinifyPlugin } = require('esbuild-loader');
const ForkTsCheckerPlugin = require('fork-ts-checker-webpack-plugin');
const webpack = require('webpack');
const packageJson = require('./package.json');
const nodeModules = [];
[...Object.keys(packageJson.dependencies), ...Object.keys(packageJson.peerDependencies)].forEach(
(module) => {
nodeModules.push(new RegExp(`^${module}(/.+)?$`));
}
);
/** @type {Omit<import('webpack').Configuration, 'output'>} */
const baseConfig = {
entry: `${__dirname}/src/index.ts`,
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: browserslistToEsbuild(),
}),
],
},
module: {
rules: [
{
test: /\.[jtm]sx?$/,
use: {
loader: require.resolve('esbuild-loader'),
options: {
loader: 'tsx',
target: browserslistToEsbuild(),
},
},
},
{
test: /\.(png|svg|jpg|gif)$/,
type: 'asset',
parser: {
dataUrlCondition: {
maxSize: 8192,
},
},
},
],
},
resolve: {
extensions: ['.ts', '.js', '.tsx', '.jsx'],
},
plugins: [
new webpack.EnvironmentPlugin({
NODE_ENV: 'production',
}),
],
};
/** @type {import('webpack').Configuration[]} */
const config = [
{
...baseConfig,
output: {
path: `${__dirname}/build`,
filename: `helper-plugin.esm.js`,
library: {
type: 'module',
},
environment: { module: true },
},
experiments: {
outputModule: true,
},
plugins: [process.env.DTS ? new ForkTsCheckerPlugin() : undefined].filter((v) => v),
},
{
...baseConfig,
output: {
path: `${__dirname}/build`,
filename: `helper-plugin.js`,
library: {
type: 'commonjs',
},
},
},
];
module.exports = config;