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 相关文章推荐
js类型检查实现代码
Oct 29 Javascript
JavaScript Accessor实现说明
Dec 06 Javascript
Js操作树节点自动折叠展开的几种方法
May 05 Javascript
让checkbox不选中即将选中的checkbox不选中
Jul 11 Javascript
ECMAScript 5中的属性描述符详解
Mar 02 Javascript
用JavaScript实现对话框的教程
Jun 04 Javascript
jQuery选择器用法实例详解
Dec 17 Javascript
基于zepto.js实现手机相册功能
Jul 11 Javascript
vue-cli 3.x 修改dist路径的方法
Sep 19 Javascript
JS实现求5的阶乘示例
Jan 21 Javascript
js之切换全屏和退出全屏实现代码实例
Sep 09 Javascript
Postman参数化实现过程及原理解析
Aug 13 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求最大子序列和的算法实现
2011/06/24 PHP
SESSION信息保存在哪个文件目录下以及能够用来保存什么类型的数据
2012/06/17 PHP
CodeIgniter CLI模式简介
2014/06/17 PHP
php需登录的文件上传管理系统
2020/03/21 PHP
php实现的xml操作类
2016/01/15 PHP
PHP实现的mysql主从数据库状态检测功能示例
2017/07/20 PHP
Javascript操作select方法大全[新增、修改、删除、选中、清空、判断存在等]
2008/09/26 Javascript
jquery 图片缩放拖动的简单实例
2014/01/08 Javascript
基于javascript的JSON格式页面展示美化方法
2014/07/02 Javascript
javascript中关于&& 和 || 表达式的小技巧分享
2015/04/10 Javascript
JS实现关闭当前页而不弹出提示框的方法
2016/06/22 Javascript
基于JavaScript实现单选框下拉菜单添加文件效果
2016/06/26 Javascript
Vue官方文档梳理之全局配置
2017/11/22 Javascript
JavaScript生成指定范围随机数和随机序列的方法
2018/05/05 Javascript
Vue起步(无cli)的啊教程详解
2019/04/11 Javascript
微信小程序picker组件两列关联使用方式
2020/10/27 Javascript
[14:19]2018年度COSER大赛-完美盛典
2018/12/16 DOTA
[01:16:37]【全国守擂赛】第三周决赛 Dark Knight vs. 一个弱队
2020/05/04 DOTA
python解析中国天气网的天气数据
2014/03/21 Python
详解Python中的变量及其命名和打印
2016/03/11 Python
Python中字符串的常见操作技巧总结
2016/07/28 Python
微信 用脚本查看是否被微信好友删除
2016/10/28 Python
用python实现百度翻译的示例代码
2018/03/09 Python
python networkx 包绘制复杂网络关系图的实现
2019/07/10 Python
PyCharm刷新项目(文件)目录的实现
2020/02/14 Python
Python Switch Case三种实现方法代码实例
2020/06/18 Python
详解基于Scrapy的IP代理池搭建
2020/09/29 Python
汽车销售求职自荐信
2013/10/01 职场文书
安全资料员岗位职责
2013/12/14 职场文书
优秀班集体获奖感言
2014/02/03 职场文书
2014年冬季防火方案
2014/05/21 职场文书
党员干部廉洁承诺书
2014/05/28 职场文书
科技活动周标语
2014/10/08 职场文书
2014年网络管理员工作总结
2014/12/01 职场文书
周一给客户的问候语
2015/11/10 职场文书
Nginx利用Logrotate实现日志分割
2022/05/20 Servers