vue.config.js 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. const path = require('path')
  2. const fs = require('fs')
  3. // Generate pages object
  4. const pages = {}
  5. function getEntryFile (entryPath) {
  6. let files = fs.readdirSync(entryPath)
  7. return files
  8. }
  9. const chromeName = getEntryFile(path.resolve(`src/entry`))
  10. function getFileExtension (filename) {
  11. return /[.]/.exec(filename) ? /[^.]+$/.exec(filename)[0] : undefined
  12. }
  13. chromeName.forEach((name) => {
  14. const fileExtension = getFileExtension(name)
  15. const fileName = name.replace('.' + fileExtension, '')
  16. pages[fileName] = {
  17. entry: `src/entry/${name}`,
  18. template: 'public/index.html',
  19. filename: `${fileName}.html`
  20. }
  21. })
  22. const isDevMode = process.env.NODE_ENV === 'development'
  23. module.exports = {
  24. pages,
  25. filenameHashing: false,
  26. chainWebpack: (config) => {
  27. config.plugin('copy').use(require('copy-webpack-plugin'), [
  28. {
  29. patterns: [
  30. {
  31. from: path.resolve(`src/manifest.${process.env.NODE_ENV}.json`),
  32. to: `${path.resolve('dist')}/manifest.json`
  33. }
  34. ]
  35. }
  36. ])
  37. },
  38. configureWebpack: {
  39. output: {
  40. filename: `js/[name].js`,
  41. chunkFilename: `[name].js`
  42. },
  43. devtool: isDevMode ? 'inline-source-map' : false
  44. }
  45. }