const path = require("path"); const webpack = require("webpack"); const pkg = require("./package.json"); const {CleanWebpackPlugin} = require("clean-webpack-plugin"); // const BundleAnalyzerPlugin = require("webpack-bundle-analyzer").BundleAnalyzerPlugin; const TerserPlugin = require("terser-webpack-plugin"); module.exports = (env, argv) => { return { mode: argv.mode || "development", watch: argv.mode !== "production", devtool: argv.mode !== "production" ? "eval" : false, output: { publicPath: "", filename: "[name].js", path: path.resolve(__dirname, "stage/build/api"), libraryTarget: "umd", library: "SiYuanAPI", libraryExport: "default", }, entry: { "api": "./src/api.ts", }, optimization: { minimize: true, minimizer: [ new TerserPlugin({ terserOptions: { format: { comments: false, }, }, extractComments: false, }), ], }, resolve: { fallback: { "path": require.resolve("path-browserify"), }, extensions: [".ts", ".js", ".scss"], }, module: { rules: [ { test: /\.ts(x?)$/, include: [path.resolve(__dirname, "src")], use: [ { loader: "ts-loader", }, { loader: "ifdef-loader", options: { "ifdef-verbose": false, BROWSER: true, MOBILE: true, }, }, ], } ], }, plugins: [ // new BundleAnalyzerPlugin(), new CleanWebpackPlugin({ cleanOnceBeforeBuildPatterns: [ path.join(__dirname, "stage/build/api")], }), new webpack.DefinePlugin({ NODE_ENV: JSON.stringify(argv.mode), SIYUAN_VERSION: JSON.stringify(pkg.version), }), ], }; };