webpack.prod.mini.conf.js 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. const webpack = require('webpack');
  2. const config = require('../package.json');
  3. const path = require('path');
  4. const MiniCssExtractPlugin = require("mini-css-extract-plugin");
  5. const webpackBaseConf = require('./webpack.base.conf.js');
  6. const UglifyJsPlugin = require('uglifyjs-webpack-plugin');
  7. const OptimizeCSSAssetsPlugin = require('optimize-css-assets-webpack-plugin');
  8. const rimraf = require('rimraf');
  9. const merge = require('webpack-merge');
  10. rimraf('./dist/nutui.min.js', function (err) {
  11. if (err) console.log(err);
  12. });
  13. rimraf('./dist/nutui.min.css', function (err) {
  14. if (err) console.log(err);
  15. });
  16. module.exports = merge(webpackBaseConf, {
  17. mode: 'production',
  18. entry: {
  19. nutui: './src/nutui.js',
  20. },
  21. externals: {
  22. 'vue': {
  23. root: 'Vue',
  24. commonjs: 'vue',
  25. commonjs2: 'vue',
  26. amd: 'vue'
  27. }
  28. },
  29. output: {
  30. path: path.resolve(__dirname, '../dist/'),
  31. filename: 'nutui.min.js',
  32. library: 'nutui',
  33. libraryTarget: 'umd',
  34. umdNamedDefine: true
  35. },
  36. plugins: [
  37. new MiniCssExtractPlugin({
  38. filename: '[name].min.css'
  39. }),
  40. new webpack.DefinePlugin({
  41. 'process.env': {
  42. NODE_ENV: '"production"'
  43. }
  44. })
  45. ],
  46. optimization: {
  47. minimizer: [
  48. new UglifyJsPlugin({
  49. uglifyOptions: {
  50. compress: {
  51. warnings: false
  52. }
  53. },
  54. sourceMap: false,
  55. parallel: true
  56. }),
  57. new OptimizeCSSAssetsPlugin({})
  58. ]
  59. },
  60. });