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), }), ], } }