@ked3/ktrace
Version:
跨平台埋点分析SDK
83 lines (81 loc) • 2.18 kB
JavaScript
const path = require("path");
const HtmlWebpackPlugin = require("html-webpack-plugin");
const TerserPlugin = require("terser-webpack-plugin");
const CopyWebpackPlugin = require("copy-webpack-plugin");
const { version } = require("./package.json");
module.exports = (env, argv) => {
const isProduction = argv.mode === "production";
return {
entry: "./src/index.ts",
mode: isProduction ? "production" : "development",
devtool: isProduction ? "source-map" : "inline-source-map",
module: {
rules: [
{
test: /\.tsx?$/,
use: "ts-loader",
exclude: /node_modules/,
},
],
},
resolve: {
extensions: [".tsx", ".ts", ".js"],
alias: {
"@core": path.resolve(__dirname, "src/core"),
"@adapters": path.resolve(__dirname, "src/adapters"),
"@plugins": path.resolve(__dirname, "src/plugins"),
},
},
output: {
filename: isProduction
? "ktrace.min.js"
: "ktrace.js",
path: path.resolve(__dirname, "dist"),
library: {
name: "KTrace",
type: "umd",
export: "default",
},
globalObject: "this",
clean: true,
},
externals: {
// 排除electron作为外部依赖,这样在没有安装electron的环境中也能正常工作
electron: "commonjs electron",
},
optimization: {
minimize: isProduction,
minimizer: [
new TerserPlugin({
terserOptions: {
compress: {
drop_console: false,
},
},
}),
],
},
plugins: [
new CopyWebpackPlugin({
patterns: [
{
from: path.resolve(__dirname, "docs/examples/demo.html"),
to: path.resolve(__dirname, "dist/demo.html"),
},
{
from: path.resolve(__dirname, "docs/examples/demo2.html"),
to: path.resolve(__dirname, "dist/demo2.html"),
},
],
}),
],
devServer: {
static: {
directory: path.join(__dirname, "dist"),
},
compress: true,
port: 9000,
hot: true,
},
};
};