webpack.prod.disperse.conf.js 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  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. globalObject: 'this',
  46. umdNamedDefine: true
  47. },
  48. externals: {
  49. 'vue': {
  50. root: 'Vue',
  51. commonjs: 'vue',
  52. commonjs2: 'vue',
  53. amd: 'vue'
  54. }
  55. },
  56. plugins: [
  57. new MiniCssExtractPlugin({
  58. filename: '[name]/[name].css'
  59. }),
  60. new CopyWebpackPlugin([
  61. {
  62. from: path.join(__dirname, "../src/"), to: path.join(__dirname, "../dist/"), ignore: ['demo.vue', 'doc.md', 'config.json', 'nutui.js', '*.spec.js'] }
  63. ]),
  64. new CopyWebpackPlugin([
  65. { from: path.join(__dirname, "../types/"), to: path.join(__dirname, "../dist/types/")}
  66. ]),
  67. new webpack.DefinePlugin({
  68. 'process.env': {
  69. NODE_ENV: '"production"',
  70. PROD_TYPE: '"disp"'
  71. }
  72. })
  73. ],
  74. optimization: {
  75. minimize: false
  76. }
  77. });