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获取文本框内选中文本的方法
Feb 20 Javascript
JavaScript编写点击查看大图的页面半透明遮罩层效果实例
May 09 Javascript
浅谈jquery高级方法描述与应用
Oct 04 Javascript
微信小程序 基础知识css样式media标签
Feb 15 Javascript
layui选项卡效果实现代码
May 19 Javascript
详解vue2.0 transition 多个元素嵌套使用过渡
Jun 19 Javascript
angularjs下拉框空白的解决办法
Jun 20 Javascript
vue.js框架实现表单排序和分页效果
Aug 09 Javascript
jQuery实现手机号正则验证输入及自动填充空格功能
Jan 02 jQuery
Echarts之悬浮框中的数据排序问题
Nov 08 Javascript
微信小程序从注册账号到上架(图文详解)
Jul 17 Javascript
VUE table表格动态添加一列数据,新增的这些数据不可以编辑(v-model绑定的数据不能实时更新)
Apr 03 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
一个阿拉伯数字转中文数字的函数
2006/10/09 PHP
PHPWind与Discuz截取字符函数substrs与cutstr性能比较
2011/12/05 PHP
PHP @ at 记号的作用示例介绍
2014/10/10 PHP
php检测图片主要颜色的方法
2015/07/01 PHP
PHP面向对象程序设计类的定义与用法简单示例
2016/12/27 PHP
YII框架行为behaviors用法示例
2019/04/26 PHP
Yii2框架操作数据库的方法分析【以mysql为例】
2019/05/27 PHP
PHP面向对象程序设计内置标准类,普通数据类型转为对象类型示例
2019/06/12 PHP
JS的数组的扩展实例代码
2008/07/09 Javascript
基于Jquery 解决Ajax请求的页面 浏览器后退前进功能,页面刷新功能实效问题
2010/12/11 Javascript
IE和Firefox的Javascript兼容性总结[推荐收藏]
2011/10/19 Javascript
使用jQuery清空file文件域的解决方案
2013/04/12 Javascript
JS中eval函数的使用示例
2013/07/21 Javascript
9个让JavaScript调试更简单的Console命令
2016/11/14 Javascript
使用contextMenu插件实现Bootstrap table弹出右键菜单
2017/02/20 Javascript
详解Angular之constructor和ngOnInit差异及适用场景
2017/06/22 Javascript
利用nvm管理多个版本的node.js与npm详解
2017/11/02 Javascript
详解webpack babel的配置
2018/01/09 Javascript
NodeJS 中Stream 的基本使用
2018/07/30 NodeJs
详解使用WebPack搭建React开发环境
2019/08/06 Javascript
vue addRoutes路由动态加载操作
2020/08/04 Javascript
原生JavaScript实现换肤
2021/02/19 Javascript
[01:57]2016完美“圣”典风云人物:国士无双专访
2016/12/04 DOTA
Python的lambda匿名函数的简单介绍
2013/04/25 Python
测试、预发布后用python检测网页是否有日常链接
2014/06/03 Python
python保存字典和读取字典的实例代码
2019/07/07 Python
Tensorflow矩阵运算实例(矩阵相乘,点乘,行/列累加)
2020/02/05 Python
Python调用.net动态库实现过程解析
2020/06/05 Python
将SVG图引入到HTML页面的实现
2019/09/20 HTML / CSS
HTML5自定义视频播放器源码
2020/01/06 HTML / CSS
澳大利亚票务和娱乐市场领导者:Ticketmaster
2017/03/03 全球购物
联想法国官方网站:Lenovo法国
2018/10/18 全球购物
春节联欢晚会主持词
2014/03/24 职场文书
党员领导干部承诺书
2014/05/28 职场文书
Nginx实现负载均衡的项目实践
2022/03/18 Servers
docker-compose部署Yapi的方法
2022/04/08 Servers