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 相关文章推荐
基于jQuery的倒计时实现代码
May 30 Javascript
去掉gridPanel表头全选框的小例子
Jul 18 Javascript
js闭包实例汇总
Nov 09 Javascript
jQuery元素的隐藏与显示实例
Jan 20 Javascript
EasyUI实现二级页面的内容勾选的方法
Mar 01 Javascript
Bootstrap源码解读排版(1)
Dec 23 Javascript
说说AngularJS中的$parse和$eval的用法
Sep 14 Javascript
vue项目打包部署_nginx代理访问方法详解
Sep 20 Javascript
详解如何理解vue的key属性
Apr 14 Javascript
jQuery 判断元素是否存在然后按需加载内容的实现代码
Jan 16 jQuery
详解Vue.js 响应接口
Jul 04 Javascript
解决antd 表单设置默认值initialValue后验证失效的问题
Nov 02 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 动态多文件上传
2009/01/18 PHP
php 什么是PEAR?(第二篇)
2009/03/19 PHP
关于php微信订阅号开发之token验证后自动发送消息给订阅号但是没有消息返回的问题
2015/12/21 PHP
Laravel中9个不经常用的小技巧汇总
2019/04/16 PHP
Yii框架通过请求组件处理get,post请求的方法分析
2019/09/03 PHP
js word表格动态添加代码
2010/06/07 Javascript
IE6弹出“已终止操作”的解决办法
2010/11/27 Javascript
JavaScript 代码压缩工具小结
2012/02/27 Javascript
让ie6也支持websocket采用flash封装实现
2013/02/18 Javascript
div+css+js实现无缝滚动类似marquee无缝滚动兼容firefox
2013/08/29 Javascript
JavaScript中操作Mysql数据库实例
2015/04/02 Javascript
js中对函数设置默认参数值的3种方法
2015/10/23 Javascript
微信小程序 Image API实例详解
2016/09/30 Javascript
写给vue新手们的vue渲染页面教程
2017/09/01 Javascript
ES6 let和const定义变量与常量的应用实例分析
2019/06/27 Javascript
vue 添加和编辑用同一个表单,el-form表单提交后清空表单数据操作
2020/08/03 Javascript
JS pushlet XMLAdapter适配器用法案例解析
2020/10/16 Javascript
python监控网站运行异常并发送邮件的方法
2015/03/13 Python
Django应用程序中如何发送电子邮件详解
2017/02/04 Python
Python排序搜索基本算法之希尔排序实例分析
2017/12/09 Python
Python装饰器原理与简单用法实例分析
2018/04/29 Python
flask框架视图函数用法示例
2018/07/19 Python
Python实现个人微信号自动监控告警的示例
2019/07/03 Python
Python通过TensorFLow进行线性模型训练原理与实现方法详解
2020/01/15 Python
opencv-python的RGB与BGR互转方式
2020/06/02 Python
浅谈matplotlib默认字体设置探索
2021/02/03 Python
New Era英国官网:美国棒球帽品牌
2018/03/21 全球购物
英国奢侈皮具品牌:Aspinal of London
2018/09/02 全球购物
POS解决方案:MUNBYN(热敏打印机、条形码扫描仪)
2020/06/09 全球购物
医药营销专业个人自荐信
2013/09/29 职场文书
物业管理毕业生的自我评价
2014/02/17 职场文书
动物科学专业求职信
2014/07/27 职场文书
学校运动会广播稿100条
2014/09/14 职场文书
个人四风问题对照检查材料
2014/09/26 职场文书
Python中的matplotlib绘制百分比堆叠柱状图,并为每一个类别设置不同的填充图案
2022/04/20 Python
python blinker 信号库
2022/05/04 Python