webpack.dev.js 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. const path = require('path');
  2. const HtmlWebpackPlugin = require('html-webpack-plugin');
  3. const merge = require("webpack-merge");
  4. const webpackConfigBase = require('./webpack.base.js');
  5. const {CleanWebpackPlugin} = require('clean-webpack-plugin');
  6. const glob = require("glob")
  7. const webpack = require('webpack')
  8. let getModules = function () {
  9. let modules = [];
  10. let files = glob.sync('./src/packages/*');
  11. files.forEach(i => {
  12. modules.push(i.split('/').pop())
  13. })
  14. return modules;
  15. }
  16. // const host='127.0.0.1';
  17. const host='www.dev.kpread.com';
  18. const devConfig = {
  19. mode: "development",
  20. entry: {
  21. 'cover-select': './src/index.js',
  22. 'input-search': './src/index.js',
  23. 'referral-home': './src/index.js',
  24. 'referral-novel': './src/index.js',
  25. 'referral-select': './src/index.js',
  26. 'reply-form': './src/index.js',
  27. 'reply-form-vip': './src/index.js',
  28. 'sign-form': './src/index.js',
  29. 'sign-form-vip': './src/index.js',
  30. 'subscribe-delay-form': './src/index.js',
  31. 'subscribe-delay-vip': './src/index.js',
  32. 'subscribe-form': './src/index.js',
  33. 'title-select': './src/index.js',
  34. 'channel-group-select': './src/index.js',
  35. 'index': './src/index.js',
  36. },
  37. resolve: {
  38. alias: {
  39. vue$: 'vue/dist/vue.esm.js'
  40. }
  41. },
  42. plugins:[
  43. new CleanWebpackPlugin(),
  44. new webpack.HotModuleReplacementPlugin()
  45. ],
  46. devServer: {
  47. host:host,
  48. contentBase: './dist',
  49. compress: true,
  50. port: 9001,
  51. hot: true,
  52. open: true,
  53. proxy: {
  54. '/admin': {
  55. target: 'http://'+host,
  56. changeOrigin: true
  57. },
  58. '/':{
  59. target: 'http://'+host+':9001/index/index.html',
  60. }
  61. }
  62. },
  63. output:{
  64. filename: 'main.js',
  65. path: path.resolve(__dirname, 'dist'),
  66. publicPath: "/",
  67. }
  68. };
  69. const entries = getModules()
  70. entries.forEach(module => {
  71. devConfig.plugins.push(
  72. new HtmlWebpackPlugin({
  73. template: path.resolve(__dirname, 'src/packages', module, 'index.html'),
  74. title: module,
  75. inject: "head",
  76. filename: module + "/index.html",
  77. chunks: [module],
  78. entries: entries
  79. }),
  80. );
  81. });
  82. module.exports = merge(devConfig, webpackConfigBase);