vue.config.js 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. const path = require('path')
  2. const fs = require('fs')
  3. // webpack.config.js
  4. const AutoImport = require('unplugin-auto-import/webpack')
  5. const Components = require('unplugin-vue-components/webpack')
  6. const { ElementPlusResolver } = require('unplugin-vue-components/resolvers')
  7. // Generate pages object
  8. const pages = {}
  9. function getEntryFile (entryPath) {
  10. let files = fs.readdirSync(entryPath)
  11. return files
  12. }
  13. // const logoName = getEntryFile(path.resolve(`src/assets/logo`))
  14. // logoName.forEach((name) => {
  15. // const fileExtension = getFileExtension(name)
  16. // const fileName = name.replace('.' + fileExtension, '')
  17. // // console.log(`src/assets/logo/${name}`)
  18. // pages[fileName] = {
  19. // entry: `src/assets/logo/${name}`,
  20. // filename: `logo/${fileName}.png`
  21. // }
  22. // })
  23. const chromeName = getEntryFile(path.resolve(`src/entry`))
  24. const iframeName = getEntryFile(path.resolve(`src/iframe`))
  25. function getFileExtension (filename) {
  26. return /[.]/.exec(filename) ? /[^.]+$/.exec(filename)[0] : undefined
  27. }
  28. chromeName.forEach((name) => {
  29. const fileExtension = getFileExtension(name)
  30. const fileName = name.replace('.' + fileExtension, '')
  31. pages[fileName] = {
  32. entry: `src/entry/${name}`,
  33. template: 'public/index.html',
  34. filename: `${fileName}.html`
  35. }
  36. })
  37. iframeName.forEach((name) => {
  38. const fileExtension = getFileExtension(name)
  39. const fileName = name.replace('.' + fileExtension, '')
  40. pages[fileName] = {
  41. entry: `src/iframe/${name}`,
  42. template: 'public/index.html',
  43. filename: `iframe/${fileName}.html`
  44. }
  45. })
  46. const isDevMode = process.env.NODE_ENV === 'development'
  47. module.exports = {
  48. pages,
  49. filenameHashing: false,
  50. chainWebpack: (config) => {
  51. config.plugin('copy').use(require('copy-webpack-plugin'), [
  52. {
  53. patterns: [
  54. {
  55. from: path.resolve(`src/manifest.${process.env.NODE_ENV}.json`),
  56. to: `${path.resolve('dist')}/manifest.json`
  57. }
  58. ]
  59. }
  60. ])
  61. },
  62. configureWebpack: {
  63. output: {
  64. filename: `js/[name].js`,
  65. chunkFilename: `[name].js`
  66. },
  67. devtool: isDevMode ? 'inline-source-map' : false,
  68. plugins: [
  69. AutoImport({
  70. resolvers: [ElementPlusResolver()],
  71. }),
  72. Components({
  73. resolvers: [ElementPlusResolver()],
  74. }),
  75. ],
  76. },
  77. }