webpack.dev.config.js 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. const CopyWebpackPlugin = require('copy-webpack-plugin')
  2. const HtmlWebpackPlugin = require('html-webpack-plugin')
  3. const path = require('path')
  4. let fs = require('fs')
  5. const adminPath = 'admins'
  6. function resolve (dir) {
  7. return path.resolve(__dirname, '../', dir)
  8. }
  9. // 获取 admins 目录下的后台管理系统文件名并指定公共文件目录命名
  10. const files = fs.readdirSync(resolve(adminPath))
  11. function copyToApps(dir) {
  12. let r = []
  13. files.map(app => {
  14. r.push({
  15. from: resolve(dir),
  16. to: resolve(`${adminPath}/${app}/${dir}`)
  17. })
  18. })
  19. return r
  20. }
  21. let htmlPluginsArr = []
  22. files.map(app => {
  23. const config = require(`./../admins/${app}/config/config.js`)
  24. htmlPluginsArr.push(new HtmlWebpackPlugin({
  25. filename: `./../admins/${app}/index.html`,
  26. template: 'index.html',
  27. title: config.title,
  28. navTitle: config.navTitle
  29. }))
  30. })
  31. module.exports = {
  32. mode: 'development',
  33. watch: true,
  34. entry: resolve('index.js'),
  35. output: {
  36. path: resolve('.tmp'),
  37. filename: 'bundle.js'
  38. },
  39. devServer: {
  40. hot: true,
  41. port: 9000,
  42. contentBase: false
  43. },
  44. plugins: [
  45. new CopyWebpackPlugin([
  46. ...copyToApps('statics'),
  47. ...copyToApps('js'),
  48. ]),
  49. ...htmlPluginsArr
  50. ]
  51. }