webpack.prod.disperse.conf.js 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. const webpack = require('webpack');
  2. const cptConf = require('../src/config.json');
  3. const webpackBaseConf = require('./webpack.base.conf.js');
  4. const path = require('path');
  5. const MiniCssExtractPlugin = require("mini-css-extract-plugin");
  6. const CopyWebpackPlugin = require('copy-webpack-plugin');
  7. const rimraf = require('rimraf');
  8. const merge = require('webpack-merge');
  9. rimraf('./dist/assets', function (err) {
  10. if (err) console.log(err);
  11. });
  12. rimraf('./dist/locales', function (err) {
  13. if (err) console.log(err);
  14. });
  15. rimraf('./dist/mixins', function (err) {
  16. if (err) console.log(err);
  17. });
  18. rimraf('./dist/packages', function (err) {
  19. if (err) console.log(err);
  20. });
  21. rimraf('./dist/styles', function (err) {
  22. if (err) console.log(err);
  23. });
  24. rimraf('./dist/utils', function (err) {
  25. if (err) console.log(err);
  26. });
  27. rimraf('./dist/types', function (err) {
  28. if (err) console.log(err);
  29. });
  30. const entry = {};
  31. cptConf.packages.map((item)=>{
  32. const cptName = item.name.toLowerCase();
  33. entry[cptName] = './src/packages/' + cptName + '/index.js';
  34. });
  35. module.exports = merge(webpackBaseConf, {
  36. mode: 'production',
  37. devtool: 'source-map',
  38. entry,
  39. output: {
  40. path: path.resolve(__dirname, '../dist/packages/'),
  41. publicPath: './assets/',
  42. filename: '[name]/[name].js',
  43. library: '[name]',
  44. libraryTarget: 'umd',
  45. umdNamedDefine: true
  46. },
  47. externals: {
  48. 'vue': {
  49. root: 'Vue',
  50. commonjs: 'vue',
  51. commonjs2: 'vue',
  52. amd: 'vue'
  53. }
  54. },
  55. plugins: [
  56. new MiniCssExtractPlugin({
  57. filename: '[name]/[name].css'
  58. }),
  59. new CopyWebpackPlugin([
  60. {
  61. from: path.join(__dirname, "../src/"), to: path.join(__dirname, "../dist/"), ignore: ['demo.vue', 'doc.md', 'config.json', 'nutui.js', '*.spec.js'] }
  62. ]),
  63. new CopyWebpackPlugin([
  64. { from: path.join(__dirname, "../types/"), to: path.join(__dirname, "../dist/types/")}
  65. ]),
  66. new webpack.DefinePlugin({
  67. 'process.env': {
  68. NODE_ENV: '"production"'
  69. }
  70. })
  71. ],
  72. optimization: {
  73. minimize: false
  74. }
  75. });