vue-cli扩展多模块打包的示例代码


Posted in Javascript onApril 09, 2018

场景

在实际的项目开发中会出现这样的场景,项目中需要多个模块(单页或者多页应用)配合使用的情况,而vue-cli默认只提供了单入口打包,所以就想到对vue-cli进行扩展

实现

首先得知道webpack是提供了多入口打包,那就可以从这里开始改造

新建build/entry.js

const path = require('path')
const fs = require('fs')
const moduleDir = path.resolve(__dirname, '../src/modules')
let entryObj = {}
let moduleItems = fs.readdirSync(moduleDir)
moduleItems.forEach(item => {
 entryObj[`${item}`] = `./src/modules/${item}/main.js`

})

module.exports = entryObj

这里用到了nodejs的fs和path模块,可以查看文档http://nodejs.cn/api/fs.html,http://nodejs.cn/api/path.html,可以根据自己的项目配置更改,此处是以src/modules/文件夹下的目录作为模块,每个模块中都有一个main.js作为入口文件

修改build/webpack.base.conf.js中entry

const entryObj = require('./entry')

module.exports = {

 entry: entryObj

}

接下来就是如何将打包好的文件注入到html中,这里利用html-webpack-plugin插件来解决这个问题,首先你需要有一个html的模板文件,然后在webpack配置中更改默认的html-webpack-plugin插件配置

添加build/plugins.js 

const HtmlWebpackPlugin = require('html-webpack-plugin')
let configPlugins = []
Object.keys(entryObj).forEach(item => {
 configPlugins.push(new HtmlWebpackPlugin(
  {

   filename: '../dist/' + item + '.html',

   template: path.resolve(__dirname, '../index.html'),

   chunks: [item]
  }
 ))
})
module.exports = configPlugins

修改build/webpack.dev.conf.js配置 

module.exports = {
  plugins: configPlugins
}

实战

vue移动web通用脚手架

github地址: https://github.com/GavinZhuLei/vue-mobile

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
js压缩利器
Feb 20 Javascript
如何让你的Lightbox支持滚轮缩放及Base64图片
Dec 04 Javascript
JavaScript插件化开发教程 (一)
Jan 27 Javascript
JS实现鼠标箭头变成一个燃烧烛光效果的方法
Feb 28 Javascript
JS实现控制表格行内容垂直对齐的方法
Mar 30 Javascript
JavaScript实现QQ聊天消息展示和评论提交功能
May 22 Javascript
JS改变页面颜色源码分享
Feb 24 Javascript
JavaScript实现创建自定义对象的常用方式总结
Jul 09 Javascript
vue router 配置路由的方法
Jul 26 Javascript
一个Vue视频媒体多段裁剪组件的实现示例
Aug 09 Javascript
JavaScript显式数据类型转换详解
Mar 18 Javascript
js 实现 list转换成tree的方法示例(数组到树)
Aug 18 Javascript
webpack中的热刷新与热加载的区别
Apr 09 #Javascript
vue写一个组件
Apr 09 #Javascript
Vue 中使用 CSS Modules优雅方法
Apr 09 #Javascript
JS中双击和单击事件冲突的解决方法
Apr 09 #Javascript
vue脚手架及vue-router基本使用
Apr 09 #Javascript
vue 设置proxyTable参数进行代理跨域
Apr 09 #Javascript
Angular入口组件(entry component)与声明式组件的区别详解
Apr 09 #Javascript
You might like
win7+apache+php+mysql环境配置操作详解
2013/06/10 PHP
解析PHP中empty is_null和isset的测试
2013/06/29 PHP
php function用法如何递归及return和echo区别
2014/03/07 PHP
Codeigniter实现处理用户登录验证后的URL跳转
2014/06/12 PHP
PHP调用接口API封装的例子
2019/10/11 PHP
js多级树形弹出一个小窗口层(非常好用)实例代码
2013/03/19 Javascript
javascript时间函数基础介绍
2013/03/28 Javascript
jQuery 三击事件实现代码
2013/09/11 Javascript
javascript实现五星评分功能
2015/11/10 Javascript
jQuery form插件之formDdata参数校验表单及验证后提交
2016/01/23 Javascript
jQuery Ajax和getJSON获取后台普通json数据和层级json数据用法分析
2016/06/08 Javascript
JS多物体实现缓冲运动效果示例
2016/12/20 Javascript
js实现移动端微信页面禁止字体放大
2017/02/16 Javascript
微信小程序 自动登陆PHP源码实例(源码下载)
2017/05/08 Javascript
bootstrap模态框嵌套、tabindex属性、去除阴影的示例代码
2017/10/17 Javascript
深入浅析vue中cross-env的使用
2019/09/12 Javascript
python实现异步回调机制代码分享
2014/01/10 Python
python中去空格函数的用法
2014/08/21 Python
Python网络编程中urllib2模块的用法总结
2016/07/12 Python
示例详解Python3 or Python2 两者之间的差异
2018/08/23 Python
Python3中_(下划线)和__(双下划线)的用途和区别
2019/04/26 Python
Golang GBK转UTF-8的例子
2019/08/26 Python
Python多继承以及MRO顺序的使用
2019/11/11 Python
python 实现从高分辨图像上抠取图像块
2020/01/02 Python
日本运动品牌美津浓官方购物网站:MIZUNO SHOP
2016/08/21 全球购物
介绍一下Linux中的链接
2016/05/28 面试题
安踏广告词改编版
2014/03/21 职场文书
艺术设计专业个人求职信
2014/04/10 职场文书
毕业论文评语大全
2014/04/29 职场文书
小学生家长意见
2015/06/03 职场文书
新员工入职感言范文!
2019/07/04 职场文书
python实现调用摄像头并拍照发邮箱
2021/04/27 Python
Python初学者必备的文件读写指南
2021/06/23 Python
python程序的组织结构详解
2021/12/06 Python
分享Python获取本机IP地址的几种方法
2022/03/17 Python
vue生命周期钩子函数以及触发时机
2022/04/26 Vue.js