webpack.prod.mini.conf.js 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  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. devtool: 'source-map',
  19. entry: {
  20. nutui: './src/nutui.js',
  21. },
  22. externals: {
  23. 'vue': {
  24. root: 'Vue',
  25. commonjs: 'vue',
  26. commonjs2: 'vue',
  27. amd: 'vue'
  28. }
  29. },
  30. output: {
  31. path: path.resolve(__dirname, '../dist/'),
  32. filename: 'nutui.min.js',
  33. library: 'nutui',
  34. libraryTarget: 'umd',
  35. globalObject: 'this',
  36. umdNamedDefine: true
  37. },
  38. plugins: [
  39. new MiniCssExtractPlugin({
  40. filename: '[name].min.css'
  41. }),
  42. new webpack.DefinePlugin({
  43. 'process.env': {
  44. NODE_ENV: '"production"'
  45. }
  46. })
  47. ],
  48. optimization: {
  49. minimizer: [
  50. new UglifyJsPlugin({
  51. uglifyOptions: {
  52. compress: {
  53. warnings: false
  54. }
  55. },
  56. sourceMap: false,
  57. parallel: true
  58. }),
  59. new OptimizeCSSAssetsPlugin({})
  60. ]
  61. },
  62. });