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 文件本身编码转换 图文教程
Oct 12 Javascript
js 字符串转化成数字的代码
Jun 29 Javascript
JavaScript错误处理
Feb 03 Javascript
JS DOM实现鼠标滑动图片效果
Sep 17 Javascript
微信小程序 网络请求(GET请求)详解
Nov 16 Javascript
Bootstrap超大屏幕的实现代码
Mar 22 Javascript
Angular中实现树形结构视图实例代码
May 05 Javascript
JavaScript解析任意形式的json树型结构展示
Jul 23 Javascript
微信小程序使用npm支持踩坑
Nov 07 Javascript
Vue利用Blob下载原生二进制数组文件
Sep 25 Javascript
使用Vue调取接口,并渲染数据的示例代码
Oct 28 Javascript
vue路由切换之淡入淡出的简单实现
Oct 31 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
PHP HTML代码串 截取实现代码
2009/06/29 PHP
记录PHP错误日志 display_errors与log_errors的区别
2012/10/09 PHP
php微信公众号开发(2)百度BAE搭建和数据库使用
2016/12/15 PHP
Jquery 快速构建可拖曳的购物车DragDrop
2009/11/30 Javascript
基于Jquery的简单图片切换效果
2011/01/06 Javascript
JS图片预加载 JS实现图片预加载应用
2012/12/03 Javascript
jquery 触发a链接点击事件解决方案
2013/05/02 Javascript
js的2种继承方式详解
2014/03/04 Javascript
浅谈javascript 函数内部属性
2015/01/21 Javascript
JS实现网页右侧带动画效果的伸缩窗口代码
2015/10/29 Javascript
通过正则表达式获取url中参数的简单实现
2016/06/07 Javascript
JS添加删除DIV的简单实例
2016/07/08 Javascript
js中获取键盘按下键值event.keyCode、event.charCode和event.which的兼容性详解
2017/03/15 Javascript
Vue2.0实现简单分页及跳转效果
2019/07/29 Javascript
Websocket 向指定用户发消息的方法
2020/01/09 Javascript
jQuery实现聊天对话框
2020/02/08 jQuery
JavaScript的一些小技巧分享
2021/01/06 Javascript
python网络编程示例(客户端与服务端)
2014/04/24 Python
python实现在windows服务中新建进程的方法
2015/06/30 Python
python实现读取excel写入mysql的小工具详解
2017/11/20 Python
详解Python判定IP地址合法性的三种方法
2018/03/06 Python
Python 比较文本相似性的方法(difflib,Levenshtein)
2018/10/15 Python
对pandas的层次索引与取值的新方法详解
2018/11/06 Python
Python制作动态字符图的实例
2019/01/27 Python
python匿名函数用法实例分析
2019/08/03 Python
在Python中使用MySQL--PyMySQL的基本使用方法
2019/11/19 Python
python安装dlib库报错问题及解决方法
2020/03/16 Python
英国度假别墅预订:Sykes Cottages
2017/06/12 全球购物
Casetify官网:自制专属手机壳、iPad护壳和Apple Watch手表带
2018/05/09 全球购物
数控技术学生的自我评价
2014/02/15 职场文书
青蓝工程实施方案
2014/03/27 职场文书
高三励志标语
2014/06/05 职场文书
干部作风建设个人剖析材料
2014/10/11 职场文书
2016年11月份红领巾广播稿
2015/12/21 职场文书
职场领导同事生日简短祝福语
2019/08/06 职场文书
Python中的pprint模块
2021/11/27 Python