webpack.disperse.conf.js 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. const webpack = require('webpack');
  2. const config = require('../package.json');
  3. const cptConf = require('../src/config.json');
  4. const webpackBaseConf = require('./webpack.base.conf.js');
  5. const path = require('path');
  6. const MiniCssExtractPlugin = require("mini-css-extract-plugin");
  7. const CopyWebpackPlugin = require('copy-webpack-plugin');
  8. const rimraf = require('rimraf');
  9. const merge = require('webpack-merge');
  10. rimraf('./dist/assets', function (err) {
  11. if (err) console.log(err);
  12. });
  13. rimraf('./dist/locales', function (err) {
  14. if (err) console.log(err);
  15. });
  16. rimraf('./dist/mixins', function (err) {
  17. if (err) console.log(err);
  18. });
  19. rimraf('./dist/packages', function (err) {
  20. if (err) console.log(err);
  21. });
  22. rimraf('./dist/styles', function (err) {
  23. if (err) console.log(err);
  24. });
  25. rimraf('./dist/utils', function (err) {
  26. if (err) console.log(err);
  27. });
  28. rimraf('./dist/types', function (err) {
  29. if (err) console.log(err);
  30. });
  31. const entry = {};
  32. cptConf.packages.map((item)=>{
  33. const cptName = item.name.toLowerCase();
  34. entry[cptName] = './src/packages/' + cptName + '/index.js';
  35. });
  36. module.exports = merge(webpackBaseConf, {
  37. mode: 'production',
  38. devtool: 'source-map',
  39. entry,
  40. output: {
  41. path: path.resolve(__dirname, '../dist/packages/'),
  42. publicPath: './assets/',
  43. filename: '[name]/[name].js',
  44. library: '[name]',
  45. libraryTarget: 'umd',
  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. { from: path.join(__dirname, "../src/"), to: path.join(__dirname, "../dist/"), ignore: ['demo.vue','doc.md','config.json','nutui.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. });