WebPack配置vue多页面的技巧


Posted in Javascript onMay 15, 2018

WebPack虐我千百遍,我带她如初恋。一个项目前台页面写差不多了,webpack几乎零配置,也算work起来了。现在需要编写后台管理界面,另起一个单独的项目,那是不存在的。于是网上了搜了大把大把的文章,很多都是修改了项目的结构,讨厌,vue-cli搞的那一套,干嘛要修改来修改去的。像我这种前端小萌新,webpack的配置改着就把前台部分run不起来了。。。

于是就有了这个笔记:

先看看项目的结构:

├── build
├── config
├── src
│   ├── api
│   ├── assets
│   ├── components
│   ├── pages
│   ├── router
│   ├── utils
│   ├── vuex
│   ├── App.vue
│   ├── main.js
│   ├── admin.js
│   └── Admin.vue
├── static
│   └── images
├── README.md
├── admin.html
├── index.html
├── package.json
└── yarn.lock

我相信这样的结构大家一定很熟悉,除了 admin.html 和src文件夹下面的 Admin.vue 、 admin.js ,还有一些api,pages,vuex等文件夹,就是最常见的一个vue-cli初始化的项目结构。

我想要就是新增一个后台管理界面的入口admin.html,其他能够共用的还是共用,进入正题:

修改webpack的配置文件

修改 webpack.base.conf.js

打开 ~\build\webpack.base.conf.js ,找到entry,添加多入口:

entry: {
 app: './src/main.js',
 admin: './src/admin.js' //新增
},

这样运行编译的时候,每一个入口都会对应一个chunk。

run dev配置的修改

打开 ·~\build\webpack.dev.conf.js· ,在plugins下找到 HtmlWebpackPlugin ,在其后面添加对应的多页,并为每个页面添加Chunk配置如下:

new HtmlWebpackPlugin({
 filename: 'index.html', //生成的html
 template: 'index.html', //来源html
 inject: true, 
 chunks: ['app']//需要引入的Chunk,不配置就会引入所有页面的资源
}),
new HtmlWebpackPlugin({
 filename: 'admin.html',
 template: 'admin.html',
 inject: true,
 chunks: ['admin']
}),

run build配置的修改

修改config/index.js

打开 ~\config\index.js ,找到build下的 index: path.resolve(__dirname, '../dist/index.html') ,在其后添加多页:

admin: path.resolve(__dirname, '../dist/admin.html'),

修改 webpack.prod.conf.js

打开 ~\build\webpack.prod.conf.js ,在plugins下找到 HtmlWebpackPlugin ,在其后面添加对应的多页,并为每个页面添加Chunk配置:

new HtmlWebpackPlugin({
 filename: config.build.index,
 template: 'index.html',
 inject: true,
 minify: {
 removeComments: true,
 collapseWhitespace: true,
 removeAttributeQuotes: true
 // more options:
 // https://github.com/kangax/html-minifier#options-quick-reference
 },
 // necessary to consistently work with multiple chunks via CommonsChunkPlugin
 chunksSortMode: 'dependency',
 chunks: ['manifest', 'vendor', 'app']
}),
new HtmlWebpackPlugin({
 filename: config.build.admin,
 template: 'admin.html',
 inject: true,
 minify: {
 removeComments: true,
 collapseWhitespace: true,
 removeAttributeQuotes: true
 },
 chunksSortMode: 'dependency',
 chunks: ['manifest', 'vendor', 'admin']
}),

End

恩,没有了,就不修改什么项目结构了,过程越复杂越容易出错。上面webpack的配置简单能看懂。

Javascript 相关文章推荐
JS实现self的resend
Jul 22 Javascript
将数字转换成大写的人民币表达式的js函数
Sep 21 Javascript
基于jquery实现一个滚动的分步注册向导-附源码
Aug 26 Javascript
JS从一组数据中找到指定的单条数据的方法
Jun 02 Javascript
JavaScript必知必会(七)js对象继承
Jun 08 Javascript
使用HTML5+Boostrap打造简单的音乐播放器
Aug 05 Javascript
Vue.js第二天学习笔记(vue-router)
Dec 01 Javascript
bootstrap中的 form表单属性role="form"的作用详解
Jan 20 Javascript
微信小程序之MaterialDesign--input组件详解
Feb 15 Javascript
Vue2.0 slot分发内容与props验证的方法
Dec 12 Javascript
angularjs 动态从后台获取下拉框的值方法
Aug 13 Javascript
Angular 利用路由跳转到指定页面的指定位置方法
Aug 31 Javascript
修改npm全局安装模式的路径方法
May 15 #Javascript
修改node.js默认的npm安装目录实例
May 15 #Javascript
Vue中的scoped实现原理及穿透方法
May 15 #Javascript
vue-cli项目中使用Mockjs详解
May 14 #Javascript
vue使用自定义icon图标的方法
May 14 #Javascript
基于Vue2x的图片预览插件的示例代码
May 14 #Javascript
vue组件中的数据传递方法
May 14 #Javascript
You might like
PHP return语句的另一个作用
2014/07/30 PHP
以文件形式缓存php变量的方法
2015/06/26 PHP
PHP CURL或file_get_contents获取网页标题的代码及两者效率的稳定性问题
2015/11/30 PHP
yii2高级应用之自定义组件实现全局使用图片上传功能的方法
2016/10/08 PHP
tp5(thinkPHP5框架)captcha验证码配置及验证操作示例
2019/05/28 PHP
jquery select操作的日期联动实现代码
2009/12/06 Javascript
Extjs列表详细信息窗口新建后自动加载解决方法
2010/04/02 Javascript
Javascript简单实现可拖动的div
2013/10/22 Javascript
jquery仿百度百科底部浮动导航特效
2015/08/08 Javascript
jQuery+css实现的tab切换标签(兼容各浏览器)
2016/01/28 Javascript
理解javascript函数式编程中的闭包(closure)
2016/03/08 Javascript
window.close(); 关闭浏览器窗口js代码的总结介绍
2016/07/14 Javascript
微信小程序中form 表单提交和取值实例详解
2017/04/20 Javascript
vue接入腾讯防水墙代码
2019/05/07 Javascript
layui 对table中的数据进行转义的实例
2019/09/12 Javascript
js实现淘宝首页的banner栏效果
2019/11/26 Javascript
jQuery实现消息弹出框效果
2019/12/10 jQuery
js实现飞机大战游戏
2020/08/26 Javascript
[06:45]DOTA2卡尔工作室 英雄介绍幻影长矛手篇
2013/07/12 DOTA
Python 爬虫学习笔记之多线程爬虫
2016/09/21 Python
pandas分区间,算频率的实例
2019/07/04 Python
Python 脚本拉取 Docker 镜像问题
2019/11/10 Python
在Python中用GDAL实现矢量对栅格的切割实例
2020/03/11 Python
解决Django响应JsonResponse返回json格式数据报错问题
2020/08/09 Python
PyCharm中关于安装第三方包的三个建议
2020/09/17 Python
python3中布局背景颜色代码分析
2020/12/01 Python
CSS3中31种选择器使用方法教程
2013/12/05 HTML / CSS
哥伦比亚加拿大官网:Columbia Sportswear Canada
2020/09/07 全球购物
EJB包括(SessionBean,EntityBean)说出他们的生命周期,及如何管理事务的
2015/07/24 面试题
竞选劳动委员演讲稿
2014/04/28 职场文书
企业安全生产目标责任书
2014/07/23 职场文书
学生意外伤害赔偿协议书
2014/09/17 职场文书
党员国庆节演讲稿范文2014
2014/09/21 职场文书
新手开公司创业注意事项有哪些?
2019/07/29 职场文书
Go 语言中 20 个占位符的整理
2021/10/16 Golang
让JavaScript代码更加精简的方法技巧
2022/06/01 Javascript