webpack.disperse.conf.js 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  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. { from: path.join(__dirname, "../src/"), to: path.join(__dirname, "../dist/"), ignore: ['demo.vue','doc.md','config.json','nutui.js'] }
  61. ]),
  62. new CopyWebpackPlugin([
  63. { from: path.join(__dirname, "../types/"), to: path.join(__dirname, "../dist/types/")}
  64. ]),
  65. new webpack.DefinePlugin({
  66. 'process.env': {
  67. NODE_ENV: '"production"'
  68. }
  69. })
  70. ],
  71. optimization: {
  72. minimize: false
  73. }
  74. });