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 相关文章推荐
不错的asp中显示新闻的功能
Oct 13 Javascript
JSON.parse()和JSON.stringify()使用介绍
Jun 20 Javascript
jQuery Ajax使用实例
Apr 16 Javascript
Bootstrap基本样式学习笔记之表格(2)
Dec 07 Javascript
javascript深拷贝的原理与实现方法分析
Apr 10 Javascript
微信小程序之GET请求的实例详解
Sep 29 Javascript
微信小程序自定义toast实现方法详解【附demo源码下载】
Nov 28 Javascript
vue中使用better-scroll实现滑动效果及注意事项
Nov 15 Javascript
使用element-ui table expand展开行实现手风琴效果
Mar 15 Javascript
javascript获取元素的计算样式
May 24 Javascript
详解Node.JS模块 process
Aug 31 Javascript
基于vue实现微博三方登录流程解析
Nov 04 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中基于ts与nts版本- vc6和vc9编译版本的区别详解
2013/04/26 PHP
PHP 安全检测代码片段(分享)
2013/07/05 PHP
PHP 面向对象程序设计(oop)学习笔记 (四) - 异常处理类Exception
2014/06/12 PHP
PHP实现服务器状态监控的方法
2014/12/09 PHP
php数组生成html下拉列表的方法
2015/07/20 PHP
php字符串比较函数用法小结(strcmp,strcasecmp,strnatcmp及strnatcasecmp)
2016/07/18 PHP
php如何修改SESSION的生存存储时间的实例代码
2017/07/05 PHP
PHP自定义函数实现assign()数组分配到模板及extract()变量分配到模板功能示例
2018/05/23 PHP
jQuery学习笔记[1] jQuery中的DOM操作
2010/12/03 Javascript
js 获取class的元素的方法 以及创建方法getElementsByClassName
2013/03/11 Javascript
ExtJS4中的requires使用方法示例介绍
2013/12/03 Javascript
js控制input框只读实现示例
2014/01/20 Javascript
原生javascript实现拖动元素示例代码
2014/09/01 Javascript
JavaScript中的变量作用域介绍
2014/12/31 Javascript
javascript跨域原因以及解决方案分享
2015/04/08 Javascript
Javascript实现颜色rgb与16进制转换的方法
2015/04/18 Javascript
10条建议帮助你创建更好的jQuery插件
2015/05/18 Javascript
如何实现移动端浏览器不显示 pc 端的广告
2015/10/15 Javascript
jquery实现简单的banner轮播效果【实例】
2016/03/30 Javascript
jQuery中on绑定事件后引发的事件冒泡问题如何解决
2016/05/25 Javascript
JS简单设置下拉选择框默认值的方法
2016/08/20 Javascript
jQuery图片轮播实现并封装(一)
2016/12/03 Javascript
AngularJS实现用户登录状态判断的方法(Model添加拦截过滤器,路由增加限制)
2016/12/12 Javascript
vue分类筛选filter方法简单实例
2017/03/30 Javascript
node.js将MongoDB数据同步到MySQL的步骤
2017/12/10 Javascript
微信网页登录逻辑与实现方法
2019/04/29 Javascript
微信小程序如何调用图片接口API并居中显示
2019/06/29 Javascript
antd vue table跨行合并单元格,并且自定义内容实例
2020/10/28 Javascript
[43:58]DOTA2-DPC中国联赛定级赛 LBZS vs SAG BO3第一场 1月8日
2021/03/11 DOTA
Django多数据库的实现过程详解
2019/08/01 Python
Python 使用matplotlib模块模拟掷骰子
2019/08/08 Python
CSS3动画之利用requestAnimationFrame触发重新播放功能
2019/09/11 HTML / CSS
祖国在我心中演讲稿
2014/01/15 职场文书
幼儿园实习生辞职信
2014/01/20 职场文书
如何用threejs实现实时多边形折射
2021/05/07 Javascript
python使用BeautifulSoup 解析HTML
2022/04/24 Python