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 相关文章推荐
使用Javascript和DOM Interfaces来处理HTML
Oct 09 Javascript
javascript学习基础笔记之DOM对象操作
Nov 03 Javascript
精心挑选的15款优秀jQuery 本特效插件和教程
Aug 06 Javascript
推荐10 款 SVG 动画的 JavaScript 库
Mar 24 Javascript
详解js中构造流程图的核心技术JsPlumb
Dec 08 Javascript
js仿百度切换皮肤功能(html+css)
Jul 10 Javascript
把json格式的字符串转换成javascript对象或数组的方法总结
Nov 03 Javascript
JavaScript 网页中实现一个计算当年还剩多少时间的倒数计时程序
Jan 25 Javascript
js截取字符串功能的实现方法
Sep 27 Javascript
微信小程序使用npm支持踩坑
Nov 07 Javascript
Vue 中使用 typescript的方法详解
Feb 17 Javascript
JavaScript代码实现微博批量取消关注功能
Feb 05 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
smarty 原来也不过如此~~呵呵
2006/11/25 PHP
PHP教程之PHP中shell脚本的使用方法分享
2012/02/23 PHP
php封装的smarty类完整实例
2016/10/19 PHP
PHP计算近1年的所有月份
2017/03/13 PHP
Ajax中的JSON格式与php传输过程全面解析
2017/11/14 PHP
IE 缓存策略的BUG的解决方法
2007/07/21 Javascript
javascript实现上传图片前的预览(TX的面试题)
2007/08/20 Javascript
原始的js代码和jquery对比体会
2013/09/10 Javascript
按下Enter焦点移至下一个控件的实现js代码
2013/12/11 Javascript
JS动态增删表格行的方法
2016/03/03 Javascript
用JS实现图片轮播效果代码(一)
2016/06/26 Javascript
vue.js的手脚架vue-cli项目搭建的步骤
2017/08/30 Javascript
react实现菜单权限控制的方法
2017/12/11 Javascript
webpack@v4升级踩坑(小结)
2018/10/08 Javascript
微信小程序显示倒计时功能示例【测试可用】
2018/12/03 Javascript
Vue中Axios从远程/后台读取数据
2019/01/21 Javascript
使用JavaScript解析URL的方法示例
2019/03/01 Javascript
JS多个表单数据提交下的serialize()应用实例分析
2019/08/27 Javascript
微信小程序点击item使之滚动到屏幕中间位置
2020/03/25 Javascript
[47:45]DOTA2-DPC中国联赛 正赛 Phoenix vs Dragon BO3 第一场 2月26日
2021/03/11 DOTA
python生成器的使用方法
2013/11/21 Python
Python编程判断一个正整数是否为素数的方法
2017/04/14 Python
Flask之flask-script模块使用
2018/07/26 Python
python钉钉机器人运维脚本监控实例
2019/02/20 Python
详解Python self 参数
2019/08/30 Python
Python Pandas对缺失值的处理方法
2019/09/27 Python
python实现FTP文件传输的方法(服务器端和客户端)
2020/03/20 Python
Java里面Pass by value和Pass by Reference是什么意思
2016/05/02 面试题
放飞中国梦演讲稿
2014/04/23 职场文书
我爱我的祖国演讲稿
2014/05/04 职场文书
阅兵口号
2014/06/19 职场文书
干部作风建设个人剖析材料
2014/10/11 职场文书
专业技术人员年度考核评语
2014/12/31 职场文书
聚众斗殴罪辩护词
2015/05/21 职场文书
如何在Python中创建二叉树
2021/03/30 Python
python小程序之飘落的银杏
2021/04/17 Python