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 异步调用框架 (Part 6 - 实例 & 模式)
Aug 04 Javascript
Js 弹出框口并返回值的两种常用方法
Dec 30 Javascript
JQuery获取与设置HTML元素的内容或文本的实现代码
Jun 20 Javascript
jquery实现焦点图片随机切换效果的方法
Mar 12 Javascript
jQuery入门基础知识学习指南
Aug 14 Javascript
JS创建事件的三种方法(实例代码)
May 12 Javascript
静态页面html中跳转传值的JS处理技巧
Jun 22 Javascript
jQuery中JSONP的两种实现方式详解
Sep 26 Javascript
讲解vue-router之什么是嵌套路由
May 28 Javascript
Vue子组件向父组件通信与父组件调用子组件中的方法
Jun 22 Javascript
Vue.js中使用iView日期选择器并设置开始时间结束时间校验功能
Aug 12 Javascript
vue实现桌面向网页拖动文件的示例代码(可显示图片/音频/视频)
Mar 01 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
150kHz到30Mhz完全冲浪手册
2020/03/20 无线电
php遍历所有文件及文件夹的方法深入解析
2013/06/08 PHP
解决File size limit exceeded 错误的方法
2013/06/14 PHP
浅析PHP substr,mb_substr以及mb_strcut的区别和用法
2013/06/21 PHP
PHP5.5在windows安装使用memcached服务端的方法
2014/04/16 PHP
PHP+jquery+ajax实现即时聊天功能实例
2014/12/23 PHP
PHP中异常处理的一些方法整理
2015/07/03 PHP
如何写php守护进程(Daemon)
2015/12/30 PHP
php 变量引用与变量销毁机制详细介绍
2016/12/05 PHP
PHP 二维array转换json的实例讲解
2018/08/21 PHP
Web 前端设计模式--Dom重构 提高显示性能
2010/10/22 Javascript
输入密码检测大写是否锁定js实现代码
2012/12/03 Javascript
一个级联菜单代码学习及removeClass与addClass的应用
2013/01/24 Javascript
js在输入框屏蔽按键,只能键入数字的示例代码
2014/01/03 Javascript
extjs每个组件要设置唯一的ID否则会出错
2014/06/15 Javascript
jfreechart插件将数据展示成饼状图、柱状图和折线图
2015/04/13 Javascript
js正则表达式中exec用法实例
2015/07/23 Javascript
js实时获取并显示当前时间的方法
2015/07/31 Javascript
js实现延迟加载的几种方法
2017/04/24 Javascript
React服务端渲染(总结)
2017/07/01 Javascript
JS动画定时器知识总结
2018/03/23 Javascript
详解基于DllPlugin和DllReferencePlugin的webpack构建优化
2018/06/28 Javascript
谈谈React中的Render Props模式
2018/12/06 Javascript
JavaScript实现的滚动公告特效【基于jQuery】
2019/07/10 jQuery
使用 js 简单的实现 bind、call 、aplly代码实例
2019/09/07 Javascript
javascript实现电商放大镜效果
2020/11/23 Javascript
[52:44]VGJ.T vs infamous Supermajor小组赛D组败者组第一轮 BO3 第一场 6.3
2018/06/04 DOTA
Python实现拷贝多个文件到同一目录的方法
2016/09/19 Python
python爬虫入门教程--优雅的HTTP库requests(二)
2017/05/25 Python
HTML5的一个显示电池状态的API简介
2015/06/18 HTML / CSS
SportsDirect.com新加坡:英国第一体育零售商
2019/03/30 全球购物
计算机科学与技术应届生求职信
2013/11/07 职场文书
白酒营销策划方案
2014/08/17 职场文书
无犯罪记录证明
2014/09/19 职场文书
k8s部署redis cluster集群的实现
2021/06/24 Redis
JavaScript ES6的函数拓展
2022/01/18 Javascript