12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576 |
- const path = require('path')
- const fs = require('fs')
- // webpack.config.js
- const AutoImport = require('unplugin-auto-import/webpack')
- const Components = require('unplugin-vue-components/webpack')
- const { ElementPlusResolver } = require('unplugin-vue-components/resolvers')
- // Generate pages object
- const pages = {}
- function getEntryFile (entryPath) {
- let files = fs.readdirSync(entryPath)
- return files
- }
- const chromeName = getEntryFile(path.resolve(`src/entry`))
- const iframeName = getEntryFile(path.resolve(`src/iframe`))
- function getFileExtension (filename) {
- return /[.]/.exec(filename) ? /[^.]+$/.exec(filename)[0] : undefined
- }
- chromeName.forEach((name) => {
- const fileExtension = getFileExtension(name)
- const fileName = name.replace('.' + fileExtension, '')
- pages[fileName] = {
- entry: `src/entry/${name}`,
- template: 'public/index.html',
- filename: `${fileName}.html`
- }
- })
- iframeName.forEach((name) => {
- const fileExtension = getFileExtension(name)
- const fileName = name.replace('.' + fileExtension, '')
- pages[fileName] = {
- entry: `src/iframe/${name}`,
- template: 'public/index.html',
- filename: `iframe/${fileName}.html`
- }
- })
- const isDevMode = process.env.NODE_ENV === 'development'
- module.exports = {
- pages,
- filenameHashing: false,
- chainWebpack: (config) => {
- config.plugin('copy').use(require('copy-webpack-plugin'), [
- {
- patterns: [
- {
- from: path.resolve(`src/manifest.${process.env.NODE_ENV}.json`),
- to: `${path.resolve('dist')}/manifest.json`
- }
- ]
- }
- ])
- },
- configureWebpack: {
- output: {
- filename: `js/[name].js`,
- chunkFilename: `[name].js`
- },
- devtool: isDevMode ? 'inline-source-map' : false,
- plugins: [
- AutoImport({
- resolvers: [ElementPlusResolver()],
- }),
- Components({
- resolvers: [ElementPlusResolver()],
- }),
- ],
- },
- }
|