You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
60 lines
1.5 KiB
60 lines
1.5 KiB
const webpack = require("webpack"); |
|
const path = require("path"); |
|
const BundleAnalyzerPlugin = |
|
require("webpack-bundle-analyzer").BundleAnalyzerPlugin; |
|
|
|
module.exports = { |
|
mode: "production", |
|
entry: { "excalidraw-utils.min": "./index.js" }, |
|
output: { |
|
path: path.resolve(__dirname, "dist"), |
|
filename: "[name].js", |
|
library: "ExcalidrawUtils", |
|
libraryTarget: "umd", |
|
}, |
|
resolve: { |
|
extensions: [".tsx", ".ts", ".js", ".css", ".scss"], |
|
}, |
|
optimization: { |
|
runtimeChunk: false, |
|
}, |
|
module: { |
|
rules: [ |
|
{ |
|
test: /\.(sa|sc|c)ss$/, |
|
exclude: /node_modules/, |
|
use: ["style-loader", { loader: "css-loader" }, "sass-loader"], |
|
}, |
|
{ |
|
test: /\.(ts|tsx|js)$/, |
|
use: [ |
|
{ |
|
loader: "ts-loader", |
|
options: { |
|
transpileOnly: true, |
|
configFile: path.resolve(__dirname, "../tsconfig.prod.json"), |
|
}, |
|
}, |
|
{ |
|
loader: "babel-loader", |
|
|
|
options: { |
|
presets: [ |
|
"@babel/preset-env", |
|
["@babel/preset-react", { runtime: "automatic" }], |
|
"@babel/preset-typescript", |
|
], |
|
plugins: [["@babel/plugin-transform-runtime"]], |
|
}, |
|
}, |
|
], |
|
}, |
|
], |
|
}, |
|
plugins: [ |
|
new webpack.optimize.LimitChunkCountPlugin({ |
|
maxChunks: 1, |
|
}), |
|
...(process.env.ANALYZER === "true" ? [new BundleAnalyzerPlugin()] : []), |
|
], |
|
};
|
|
|