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 相关文章推荐
解决表单中第一个非隐藏的元素获得焦点的一个方案
Oct 26 Javascript
jquery实现勾选复选框触发事件给input赋值
Feb 01 Javascript
JQuery zClip插件实现复制页面内容到剪贴板
Nov 02 Javascript
跟我学习javascript的严格模式
Nov 16 Javascript
jquery checkbox的相关操作总结
Oct 17 Javascript
用React实现一个完整的TodoList的示例代码
Oct 30 Javascript
解决修复npm安装全局模块权限的问题
May 17 Javascript
微信小程序实现自定义modal弹窗封装的方法
Jun 15 Javascript
关于JS解构的5种有趣用法
Sep 05 Javascript
Node.js API详解之 repl模块用法实例分析
May 25 Javascript
vue实现点击按钮切换背景颜色的示例代码
Jun 23 Javascript
基于vue--key值的特殊用处详解
Jul 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
Body是什么,该怎么喝出咖啡里的口感
2021/03/03 咖啡文化
PHP的命令行命令使用指南
2015/08/18 PHP
Yii2.0预定义的别名功能小结
2016/07/04 PHP
javascript中onclick(this)用法介绍
2013/04/19 Javascript
JavaScript作用域与作用域链深入解析
2013/12/06 Javascript
web前端开发JQuery常用实例代码片段(50个)
2015/08/28 Javascript
jQuery事件绑定用法详解(附bind和live的区别)
2016/01/19 Javascript
原生js实现autocomplete插件
2016/04/14 Javascript
深入理解jQuery中的事件冒泡
2016/05/24 Javascript
JS基于Location实现访问Url、重定向及刷新页面的方法分析
2018/12/03 Javascript
element-ui 中使用upload多文件上传只请求一次接口
2019/07/19 Javascript
微信小程序实现上拉加载功能示例【加载更多数据/触底加载/点击加载更多数据】
2020/05/29 Javascript
完美解决vue 中多个echarts图表自适应的问题
2020/07/19 Javascript
vue从后台渲染文章列表以及根据id跳转文章详情详解
2020/12/14 Vue.js
用TensorFlow实现多类支持向量机的示例代码
2018/04/28 Python
Django框架中间件(Middleware)用法实例分析
2019/05/24 Python
python多进程下的生产者和消费者模型
2020/05/07 Python
Python使用Numpy模块读取文件并绘制图片
2020/05/13 Python
python seaborn heatmap可视化相关性矩阵实例
2020/06/03 Python
python入门:argparse浅析 nargs='+'作用
2020/07/12 Python
python 星号(*)的多种用途
2020/09/21 Python
OpenCV+python实现膨胀和腐蚀的示例
2020/12/21 Python
CSS3实现线性渐变用法示例代码详解
2020/08/07 HTML / CSS
浅析HTML5的WebSocket与服务器推送事件
2016/02/19 HTML / CSS
HTML5在手机端实现视频全屏展示方法
2020/11/23 HTML / CSS
凯特·丝蓓英国官网:Kate Spade英国
2016/11/07 全球购物
美国最大的家庭鞋类零售商之一:Shoe Carnival
2017/10/06 全球购物
外贸主管求职简历的自我评价
2013/10/23 职场文书
宗教学大学生职业生涯规划范文
2014/02/08 职场文书
收款委托书
2014/10/14 职场文书
求职意向书范本
2015/05/11 职场文书
在酒桌上的敬酒词
2015/08/12 职场文书
给校长的建议书作文300字
2015/09/14 职场文书
导游带团欢迎词
2015/09/30 职场文书
温馨祝福晨语:美丽的一天从我的问候开始
2019/11/28 职场文书
浅谈redis五大数据结构和使用场景
2021/04/12 Redis