11const path = require ( "path" ) ;
22const webpack = require ( "webpack" ) ;
3- const merge = require ( "webpack-merge" ) ;
3+ const merge = require ( "webpack-merge" ) . default ;
44const TsconfigPathsPlugin = require ( "tsconfig-paths-webpack-plugin" ) ;
55const TerserJSPlugin = require ( "terser-webpack-plugin" ) ;
6+ const packageJson = require ( "../package.json" ) ;
67
78const baseConfig = require ( "./base" ) ;
89
9- module . exports = merge ( baseConfig , {
10+ const dependencyNameToExternals = ( dependencyName ) => [
11+ dependencyName ,
12+ new RegExp ( `^${ dependencyName } /.*` ) ,
13+ ] ;
14+
15+ const common = merge ( baseConfig , {
1016 mode : "production" ,
11- devtool : false ,
17+ devtool : "source-map" ,
18+ externals : [
19+ ...Object . keys ( packageJson . dependencies ) . flatMap ( dependencyNameToExternals ) ,
20+ ...Object . keys ( packageJson . peerDependencies ) . flatMap (
21+ dependencyNameToExternals
22+ ) ,
23+ ] ,
1224 resolve : {
1325 unsafeCache : true ,
1426 plugins : [
@@ -18,11 +30,6 @@ module.exports = merge(baseConfig, {
1830 entry : {
1931 index : path . resolve ( __dirname , "../src/index.tsx" )
2032 } ,
21- output : {
22- filename : "[name].js" ,
23- path : path . resolve ( __dirname , "../dist" ) ,
24- libraryTarget : 'commonjs2'
25- } ,
2633 plugins : [
2734 new webpack . DefinePlugin ( {
2835 "process.env.NODE_ENV" : JSON . stringify ( "production" )
@@ -32,5 +39,28 @@ module.exports = merge(baseConfig, {
3239 minimizer : [
3340 new TerserJSPlugin ( { extractComments : false } )
3441 ]
35- }
36- } ) ;
42+ } ,
43+ experiments : {
44+ outputModule : true ,
45+ } ,
46+ } ) ;
47+
48+ module . exports = [
49+ {
50+ ...common ,
51+ output : {
52+ filename : "[name].js" ,
53+ path : path . resolve ( __dirname , "../dist" ) ,
54+ libraryTarget : "commonjs2" ,
55+ } ,
56+ } ,
57+ {
58+ ...common ,
59+ output : {
60+ filename : "[name].esm.js" ,
61+ path : path . resolve ( __dirname , "../dist" ) ,
62+ environment : { module : true } ,
63+ libraryTarget : "module" ,
64+ } ,
65+ } ,
66+ ] ;
0 commit comments