webpack.prod.js 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. const path = require('path');
  2. const { merge } = require('webpack-merge');
  3. const CleanWebpackPlugin = require('clean-webpack-plugin').CleanWebpackPlugin;
  4. const WebpackObfuscator = require('webpack-obfuscator');
  5. const ESLintPlugin = require('eslint-webpack-plugin');
  6. const MiniCssExtractPlugin = require('mini-css-extract-plugin');
  7. const HtmlWebpackPlugin = require('html-webpack-plugin');
  8. const ProgressBarWebpackPlugin = require('progress-bar-webpack-plugin');
  9. const common = require('./webpack.config.js');
  10. const resolve = (url) => path.resolve(__dirname, "..", url);
  11. module.exports = merge(common, {
  12. mode: 'production',
  13. devtool: 'source-map',
  14. plugins: [
  15. new CleanWebpackPlugin(),
  16. new ESLintPlugin({
  17. overrideConfigFile: resolve(".eslintrc.js"),
  18. context: resolve("src"),
  19. extensions: ['ts', 'js'],
  20. fix: true,
  21. }),
  22. new WebpackObfuscator(),
  23. new ProgressBarWebpackPlugin(),
  24. new HtmlWebpackPlugin({
  25. template: './index.html',
  26. title: 'ot-js',
  27. scriptLoading: 'blocking',
  28. }),
  29. new MiniCssExtractPlugin({
  30. filename: 'css/[name].css',
  31. }),
  32. ],
  33. output: {
  34. filename: 'js/[name].js',
  35. libraryTarget: 'umd',
  36. library: 'ot-js',
  37. path: resolve('dist'),
  38. },
  39. });