vue-cli 3.0 自定义vue.config.js文件,多页构建的方法


Posted in Javascript onSeptember 19, 2018

使用自己基于vue-cli 2.X改造的前端多页脚手架有近1年多时间了,一直没机会升级3.0版本

开始零零碎碎开始写一些功能,顺便分享一下

const path = require('path')
const glob = require('glob')
/** 获取多页的入口脚本和模板 */
const getPages = (() => {
 const [
 globPathHtml,
 globPathJs,
 pages,
 tempSet
 ] = [
 ['./src/modules/**/index.html', 'template'], // 入口模板正则
 ['./src/modules/**/main.js', 'entry'], // 入口脚本正则
 Object.create(null),
 new Set()
 ]
 const getMultiPageConf = (globPath, keyName) => {
 let [fileList, tempArr, modName] = [glob.sync(globPath), [], null]
 if (fileList.length !== 0) {
  for (let entry of fileList) {
  tempArr = path.dirname(entry, path.extname(entry)).split('/')
  modName = tempArr[tempArr.length - 1]
  if (tempSet.has(modName)) {
   Object.assign(pages[modName], { [keyName]: entry, 'filename': `${modName}.html` })
  } else {
   Reflect.set(pages, modName, { [keyName]: entry }) && tempSet.add(modName)
  }
  }
  return true
 } else {
  if (keyName === 'template') {
  throw new Error('无法获取多页入口模板')
  } else if (keyName === 'entry') {
  throw new Error('无法获取多页入口脚本')
  } else {
  throw new Error('无法获取多页信息')
  }
 }
 }
 try {
 while (getMultiPageConf(...globPathHtml) && getMultiPageConf(...globPathJs)) return pages
 } catch (err) {
 console.log('获取多页数据错误:', err)
 }
})()
console.log('pages: ', getPages)

打印结果:

pages: { mod1:
 { template: './src/modules/mod1/index.html',
  entry: './src/modules/mod1/main.js',
  filename: 'mod1.html' },
 mod2:
 { template: './src/modules/mod2/index.html',
  entry: './src/modules/mod2/main.js',
  filename: 'mod2.html' },
 mod3:
 { template: './src/modules/mod3/index.html',
  entry: './src/modules/mod3/main.js',
  filename: 'mod3.html' } }

使用:

/** vue.config.js */
module.exports = {
 ...
 pages: getPages
 ...
}

以上这篇vue-cli 3.0 自定义vue.config.js文件,多页构建的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JS删除数组元素的函数介绍
Mar 27 Javascript
js闭包实例汇总
Nov 09 Javascript
angularjs指令中的compile与link函数详解
Dec 06 Javascript
跟我学习JScript的Bug与内存管理
Nov 18 Javascript
基于zepto的移动端轻量级日期插件--date_picker
Mar 04 Javascript
论JavaScript模块化编程
Mar 07 Javascript
JS中创建函数的三种方式及区别
Mar 13 Javascript
jquery.form.js框架实现文件上传功能案例解析(springmvc)
May 26 Javascript
JS针对Array的各种操作汇总
Nov 29 Javascript
jQuery利用FormData上传文件实现批量上传
Dec 04 jQuery
使用typescript改造koa开发框架的实现
Feb 04 Javascript
js+canvas实现五子棋小游戏
Aug 02 Javascript
vue.extend与vue.component的区别和联系
Sep 19 #Javascript
webpack+vue+express(hot)热启动调试简单配置方法
Sep 19 #Javascript
自己动手封装一个React Native多级联动
Sep 19 #Javascript
vue中如何实现后台管理系统的权限控制的方法示例
Sep 19 #Javascript
5分钟快速掌握JS中var、let和const的异同
Sep 19 #Javascript
vue-cli整合vuex的时候,修改actions和mutations,实现热部署的方法
Sep 19 #Javascript
node.js环境搭建图文详解
Sep 19 #Javascript
You might like
php读取文件内容至字符串中,同时去除换行、空行、行首行尾空格(Zjmainstay原创)
2012/07/31 PHP
解析使用substr截取UTF-8中文字符串出现乱码的问题
2013/06/20 PHP
php脚本守护进程原理与实现方法详解
2017/07/20 PHP
thinkphp 抓取网站的内容并且保存到本地的实例详解
2017/08/25 PHP
ThinkPHP3.2.3框架实现的空模块、空控制器、空操作,跳转到错误404页面图文详解
2019/04/03 PHP
php 自定义函数实现将数据 以excel 表格形式导出示例
2019/11/13 PHP
特殊情况下如何获取span里面的值
2014/05/20 Javascript
浅谈JSON中stringify 函数、toJosn函数和parse函数
2015/01/26 Javascript
让DIV的滚动条自动滚动到最底部的3种方法(推荐)
2016/09/24 Javascript
Javascript获取background属性中url的值
2016/10/17 Javascript
vue音乐播放器插件vue-aplayer的配置及其使用实例详解
2017/07/10 Javascript
axios中cookie跨域及相关配置示例详解
2017/12/20 Javascript
微信小程序踩坑记录之解决tabBar.list[3].selectedIconPath大小超过40kb
2018/07/04 Javascript
js的对象与函数详解
2019/01/21 Javascript
Vue CLI3.0中使用jQuery和Bootstrap的方法
2019/02/28 jQuery
layui table 表格上添加日期控件的两种方法
2019/09/28 Javascript
Vue.js 中制作自定义选择组件的代码附演示demo
2020/02/28 Javascript
微信小程序用canvas画图并分享
2020/03/09 Javascript
react PropTypes校验传递的值操作示例
2020/04/28 Javascript
[05:17]DOTA2睡衣妹卖萌求签名 CJ第二天全明星影像
2013/07/28 DOTA
[46:43]DOTA2上海特级锦标赛主赛事日 - 1 胜者组第一轮#2LGD VS MVP.Phx第二局
2016/03/02 DOTA
用Python和MD5实现网站挂马检测程序
2014/03/13 Python
python分割文件的常用方法
2014/11/01 Python
python程序文件扩展名知识点详解
2020/02/27 Python
基于Pyinstaller打包Python程序并压缩文件大小
2020/05/28 Python
StubHub意大利:购买和出售全球演唱会和体育赛事门票
2017/11/21 全球购物
司机的工作范围及职责
2013/11/13 职场文书
社团文化节邀请函
2014/01/10 职场文书
会计专业大学生职业生涯规划范文
2014/01/11 职场文书
写求职信有哪些注意事项
2014/05/08 职场文书
门球健将观后感
2015/06/16 职场文书
二婚主持词
2015/06/30 职场文书
CSS3 制作精美的定价表
2021/04/06 HTML / CSS
浅谈JavaScript作用域
2021/12/06 Javascript
《英雄联盟》2022日蚀、月蚀皮肤演示 黑潮亚索曝光
2022/04/13 其他游戏
ssh服务器拒绝了密码 请再试一次已解决(亲测有效)
2022/08/14 Servers