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 相关文章推荐
JavaScript 学习历程和心得分享
Dec 12 Javascript
javascript学习笔记(七) js函数介绍
Jun 19 Javascript
JQuery+CSS提示框实现思路及代码(纯手工打造)
May 07 Javascript
jQuery输入城市查看地图使用介绍
May 08 Javascript
Jquery多选下拉列表插件jquery multiselect功能介绍及使用
May 24 Javascript
jq checkbox 的全选并ajax传参的实例
Apr 01 Javascript
JS使用正则表达式验证身份证号码
Jun 23 Javascript
谈谈VUE种methods watch和compute的区别和联系
Aug 01 Javascript
vue 全选与反选的实现方法(无Bug 新手看过来)
Feb 09 Javascript
JavaScript中使用import 和require打包后实现原理分析
Mar 07 Javascript
微信小程序表单验证form提交错误提示效果
Jun 19 Javascript
Vue-input框checkbox强制刷新问题
Apr 18 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
咖啡常见的种类
2021/03/03 新手入门
解决PHP4.0 和 PHP5.0类构造函数的兼容问题
2013/08/01 PHP
php上传图片到指定位置路径保存到数据库的具体实现
2013/12/30 PHP
php调用google接口生成二维码示例
2014/04/28 PHP
php制作简单模版引擎
2016/04/07 PHP
Jquery中给animation加更多的运作效果实例
2013/09/05 Javascript
javaScript 计算两个日期的天数相差(示例代码)
2013/12/27 Javascript
jquery比较简洁的软键盘特效实现方法
2015/03/19 Javascript
jQuery往textarea中光标所在位置插入文本的方法
2015/06/26 Javascript
利用vue-router实现二级菜单内容转换
2016/11/30 Javascript
Javascript中for循环语句的几种写法总结对比
2017/01/23 Javascript
如何理解Vue的render函数的具体用法
2017/08/30 Javascript
详解自定义ajax支持跨域组件封装
2018/02/08 Javascript
webpack源码之loader机制详解
2018/04/06 Javascript
详解vuex结合localstorage动态监听storage的变化
2018/05/03 Javascript
详解如何用VUE写一个多用模态框组件模版
2018/09/27 Javascript
tsconfig.json配置详解
2019/05/17 Javascript
vue-父子组件和ref实例详解
2019/11/10 Javascript
让mocha支持ES6模块的方法实现
2020/01/14 Javascript
Vue——解决报错 Computed property "****" was assigned to but it has no setter.
2020/12/19 Vue.js
[52:26]完美世界DOTA2联赛决赛 FTD vs Phoenix 第一场 11.08
2020/11/11 DOTA
python实现字符串和字典的转换
2018/09/29 Python
Python面向对象之继承和多态用法分析
2019/06/08 Python
pytorch 固定部分参数训练的方法
2019/08/17 Python
python实现交并比IOU教程
2020/04/16 Python
在python中使用nohup命令说明
2020/04/16 Python
如何用Matlab和Python读取Netcdf文件
2021/02/19 Python
基于CSS3实现图片模糊过滤效果
2015/11/19 HTML / CSS
浅析CSS3中鲜为人知的属性:-webkit-tap-highlight-color
2017/01/12 HTML / CSS
印度尼西亚最大和最全面的网络商城:Blibli.com
2017/10/04 全球购物
好习惯伴我成长演讲稿
2014/05/21 职场文书
赞美老师的演讲稿
2014/05/22 职场文书
讲文明知礼仪演讲稿
2014/09/13 职场文书
2014年施工员工作总结
2014/11/18 职场文书
MySQL和Oracle批量插入SQL的通用写法示例
2021/11/17 MySQL
Java Spring Boot 正确读取配置文件中的属性的值
2022/04/20 Java/Android