Skip to content

Commit 811db01

Browse files
committed
Exclude deps from bundle, add esm output and sourcemaps
1 parent ecb30fe commit 811db01

File tree

2 files changed

+41
-15
lines changed

2 files changed

+41
-15
lines changed

webpack/demo.js

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
const path = require("path");
22
const webpack = require("webpack");
3-
const merge = require("webpack-merge");
3+
const merge = require("webpack-merge").default;
44
const HtmlWebpackPlugin = require("html-webpack-plugin");
55
const TsconfigPathsPlugin = require("tsconfig-paths-webpack-plugin");
66
const MiniCssExtractPlugin = require("mini-css-extract-plugin");
@@ -32,11 +32,7 @@ module.exports = merge(baseConfig, {
3232
},
3333
devServer: {
3434
hot: true,
35-
hotOnly: true,
36-
contentBase: path.resolve(__dirname, "../demo/dist"),
37-
publicPath: "/",
3835
historyApiFallback: true,
39-
stats: "minimal",
4036
port: 8080
4137
},
4238
plugins: [

webpack/production.js

Lines changed: 40 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,26 @@
11
const path = require("path");
22
const webpack = require("webpack");
3-
const merge = require("webpack-merge");
3+
const merge = require("webpack-merge").default;
44
const TsconfigPathsPlugin = require("tsconfig-paths-webpack-plugin");
55
const TerserJSPlugin = require("terser-webpack-plugin");
6+
const packageJson = require("../package.json");
67

78
const 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

Comments
 (0)