vue多页应用打包优化(vue-cli3)

多页应用打包需要在vue.config.js中配置页面入口,为了防止每增加一个页面就需要修改vue.config.js,可以通过读取src/pages下文件路径的方式获取文件名,直接动态生成pages配置项数据

  1. npm install glob --s-dev
  2. 创建entry.js文件,读取文件路径匹配文件名,此时文件名就与pages中的入口和页面路径名保持一致
const path = require('path')
const glob = require('glob')

const generateEntries = () => {
  // 默认查询多页面地址
  const PATH_ENTRY = path.resolve(__dirname, './src/pages')
  // 约定构建出的页面用folder名字,默认入口为每个页面的main.js
  const entryFilePaths = glob.sync(PATH_ENTRY.split(path.sep).join("/") + '/**/main.js')
  const entry = {}
  
  entryFilePaths.forEach((filePath) => {
    const filename = filePath.match(/([^/]+)\/main\.js$/)[1]
    entry[filename] = {
      entry: filePath,
      template: 'public/index.html',
      filename: `${filename}.html`,
      chunks: ['chunk-libs', 'chunk-elementUI', 'runtime', filename]
    }
  })
  return entry
}

module.exports = {
  generateEntries
}
  1. 修改vue.config.js的pages
const { generateEntries } = require('./entry')

module.exports = {
  /*pages指定入口*/
  pages: generateEntries()
  ...
  // 其他配置项
}
  1. 注意glob版本问题,glob版本8.0.*已将所用到的minimatch库的版本更新到5.0.*版本,此版本无法识别路径中的反斜杠“\”,但是通过path模块拼接的路径的分隔符是反斜杠“\“,会导致识别到的路径数组generateEntries()返回值为空数组而报错,报错信息如下:
    webpackOptionsValicationError:Invalid configuration object. Webpack has been initialised using a configuration object that does not match the API schema

此时需要将路径中的反斜杠“\“”转成正斜杠"/"

  const PATH_ENTRY = path.resolve(__dirname, './src/pages')
  const entryFilePaths = glob.sync(PATH_ENTRY.split(path.sep).join("/") + '/**/main.js')
  // 8.*以下的版本不需要,直接glob.sync(PATH_ENTRY + '/**/main.js')即可
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值