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 相关文章推荐
斜45度寻路实现函数
Aug 20 Javascript
超级24小时弹窗代码 24小时退出弹窗代码 100%弹窗代码(IE only)
Jun 11 Javascript
artdialog的图片/标题以及关闭按钮不显示的解决方法
Jun 27 Javascript
jquery.fastLiveFilter.js实现输入自动过滤的方法
Aug 11 Javascript
使用plupload自定义参数实现多文件上传
Jul 19 Javascript
原生JS:Date对象全面解析
Sep 06 Javascript
深入理解JavaScript中的for循环
Feb 07 Javascript
利用JS制作万年历的方法
Aug 16 Javascript
JavaScript实现邮箱后缀提示功能的示例代码
Dec 13 Javascript
Vue父组件向子组件传值以及data和props的区别详解
Mar 02 Javascript
JavaScript 异步时序问题
Nov 20 Javascript
vue动态绑定style样式
Apr 20 Vue.js
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生成EXCEL的东东
2006/10/09 PHP
解析PHP中一些可能会被忽略的问题
2013/06/21 PHP
YII2自动登录Cookie总是失效的解决方法
2017/06/28 PHP
自写的利用PDO对mysql数据库增删改查操作类
2018/02/19 PHP
PHP设计模式(八)装饰器模式Decorator实例详解【结构型】
2020/05/02 PHP
基于JQuery的日期联动实现代码
2011/02/24 Javascript
JavaScript高级程序设计阅读笔记(六) ECMAScript中的运算符(二)
2012/02/27 Javascript
jquery入门——事件机制之事件中的冒泡现象示例解释
2020/09/12 Javascript
js 验证密码强弱的小例子
2013/03/21 Javascript
jqplot通过ajax动态画折线图的方法及思路
2013/12/08 Javascript
JS动态加载当前时间的方法
2015/02/09 Javascript
JavaScript中的分号插入机制详细介绍
2015/02/11 Javascript
jquery实现的代替传统checkbox样式插件
2015/06/19 Javascript
JavaScript实现基于十进制的四舍五入实例
2015/07/17 Javascript
原生js 封装get ,post, delete 请求的实例
2017/08/11 Javascript
微信小程序module.exports模块化操作实例浅析
2018/12/20 Javascript
js中null与空字符串""的区别讲解
2019/01/17 Javascript
详解element-ui中form验证杂记
2019/03/04 Javascript
Javascript如何递归遍历本地文件夹
2020/08/06 Javascript
Python中方法链的使用方法
2016/02/23 Python
对dataframe进行列相加,行相加的实例
2018/06/08 Python
使用Python实现跳帧截取视频帧
2019/05/31 Python
如何使用python进行pdf文件分割
2019/11/11 Python
pycharm运行scrapy过程图解
2019/11/22 Python
Python填充任意颜色,不同算法时间差异分析说明
2020/05/16 Python
利用python实现平稳时间序列的建模方式
2020/06/03 Python
Python Opencv图像处理基本操作代码详解
2020/08/31 Python
Shoes For Crews法国官网:美国领先的防滑鞋设计和制造商
2018/01/01 全球购物
莫斯科制造商的廉价皮大衣:Fursk
2020/06/09 全球购物
高中数学教师求职信
2013/10/30 职场文书
心得体会范文
2014/01/04 职场文书
法律服务所工作总结
2015/08/10 职场文书
护士自荐信范文(2016推荐篇)
2016/01/28 职场文书
MYSQL主从数据库同步备份配置的方法
2021/05/26 MySQL
Vue h函数的使用详解
2022/02/18 Vue.js
nginx.conf配置文件结构小结
2022/04/08 Servers